The comfort zone is evil

May 09, 2015

    It’s been a while I was thinking about that. I couldn’t sleep.

    I’m currently in my comfort zone, this is boring.

    Some people like to be in their comfort zone. It’s stable, it’s expected, no surprise. I don’t. Nobody should. If homo erectus did not evolve, homo sapiens wouldn’t be there. We need to try new things, do some experiment, do some mistakes. We need to look for more answers, more challenges. Our brain is asking.

    A few months after this post, I quit my job and found an awesome job with talented people.


    We must create a source of knowledge

    I love IT. I love new technologies. I love to discover new things and give them a try. I love to read stuff, blogs, Twitter. I follow every links I stumbled upon and try to read about everything. I want to know everything^[That won’t happen my friend.]. I have something like 100 unread bookmarks (I’m reading a bit every day but of course, I’m always adding new ones every day).

    Knowledge is infinite.

    We must talk to people

    Discussing last night with a friend of mine, who is quite successful —he’s working on different interesting projects on its own or with a team, knows a lot of tools/technos/languages, use them properly in a performant way, knows what he wants, and how to evaluate the stuff he’s working with— made me realize that I want to do the same, but I’m stuck.

    Talking to people is really a great things. We can measure ourself and see if we forgot to take some train.

    I’m not more stupid than he is^[I think so.], why couldn’t I ? What is blocking me ?

    I’ve started QBASIC at 10 and had always been some kind of reference for my friends/colleagues when it comes to languages, patterns, ideas. After this long night, this post. Sometimes, we must do our own introspection to see where we are.

    We must experiment

    I’m reading a lot, and as I was tolding him: I can’t practice everything I read. If I would do that, I would lost time to read more things, and that would accumulate way more quickly.

    I already barely have the time to read what I want and bookmark new stuff, and hang out with my wife: how could I experiment those new tools, technologies, languages I’m all reading about ?

    For some of them, I could, because it’s not that complicated to use at first glance such as the Javascript frameworks and tools, because we don’t need to prepare a lot of things (git clone or npm install and be done).

    When it comes to tools, sometimes it’s more difficult. For instance, I didn’t test Flow yet (the static typechecker from Facebook): I’m running on Windows and there is no official binaries yet^[It has been fixed since, and I tried and used it on a real project.].

    When we don’t have a Mac or a Linux, that can slow us down in our progress^[Now, Windows offers a Ubuntu bash, that helps a lot.].

    I didn’t test every database or server I’m reading about. It’s just too much! Tests needs a use-case, a cluster, some benchmarks. It’s just useless to install something, do the Hello World, then be done. That’s useless, we forget about it in a few days and it doesn’t deserve anything.

    If we don’t have a project to use it, to POC it, there is no point. I thought to just remember the name, what it does, what are its strength, in case of^[Interviews or a true use-case.]. But I realize that I often forget things I’ve read one month ago if I didn’t practiced it since.

    Sometimes, things stays, such Sublime Text. It was a awesome discovery a few months ago and I’m still using it on a daily basis. I’m not mastering every shortcuts, just the ones I need and can think of. I know there are a bunch of them that could help me more, I don’t realize it. It’s okay to not use all the power of a tool. It’s okay to not know about all the features of a tool. It will come, eventually.

    A few months ago, I watched a video of a guy coding an algorithm (nodejs, TDD). I was amazed by the speed of the development and the tools he was using: build the skeleton using yo, fast typing in VIM using a lot of shortcuts, install what was needed to run the tests, auto-run them, then finally writing the algorithm. Some could think why the fuck should I watch a random guy coding: it can be very very interesting to see how someone else is doing, we can learn so much. That depends on our work environment I guess. But when people around are not that motivated, we can always find someone on the Internet who is.

    We must have a list of things to experiment

    Like any projects, we must write down what we want to do, to test. It’s easier to write them down and be able to check them, it’s materialized.

    Here is a list which can appear idiot for some of you, but I care about them. (I crossed out most of them since :+1:. I should prepare a new list):

    • I want to do some big data work with Hadoop, Cassandra, HBase, CouchDB.
    • I want to run some true queue tasks system such as ZeroMQ, Apache Apollo, RabbitMQ, Kafka.
    • I want to use some virtual machines and containers (in a performant, secure, reliable and proper way! not just install/run and be done!).
    • I want to use some scalable systems, distributed databases, see how it reacts.
    • I want to use graph database such as Neo4J and ~do some ElasticSearch~~.
    • I want to work on a isomorphic React website using ES6.
    • I want to get rid of Wordpress and write my own performant React blog with multilanguage support.
    • I want to use Redis, I barely test it and I know its potential is huge.
    • I want to use Varnish, HAProxy, I know they are the way to go for web performance.
    • I want to use admin and deployment tools such as Vagrant, Chef, Puppet, Ansible.
    • I want to use the cloud as it should (Amazon, Azure), never did.
    • I want to work using GitHub with a team, and work the proper way (branches, rebase).
    • I want to use Slack.
    • I want to work with nice work and build processes (hot reloading, gulp/webpack).
    • I want to do some mobile native app (and React Native ofc).
    • I want to work with TDD, I don’t like bugs.
    • I want to work with performant tools, and be able to profile anything. I don’t like to wait, and I love performances.

    I want to masterize some tools. Like experts^[Well, sometimes experts are just some piece of garbage title.]. I know well React, I’m watching a lot the GitHub repo and I’m reading every emails I got, but I’m starting to feel that it’s just useless. I’ve started some side projects but I’ve never finished them (surprising right?). At work, I’m using .NET framework, basic SQL, no fancy stuff. I know them well but that’s it, no deep knowledge. I want to work on new stuff, new tools, new ways of thinking.

    We must evaluate our weaknesses and our strengths

    It’s also useful to know our weaknesses and our strengths, to see if we can fix or improve them respectively.

    • My memory sucks: Can’t fix. Maybe memory games, but I think it would just lose my time.
    • If I don’t work on something during some times, I will forget about it: Can’t fix. It will go into my bookmarks at least.
    • I’m not sure how to evaluate if a tool or framework is good: Just need to apply a real use-case. It’s good if it fills the need, that’s it.
    • I’m interesting in everything, I should filter what I know I won’t use: I do that a bit, but I still want moar.
    • I know of lot of names (tools, frameworks) but can’t remember what they do exactly months after: Can’t fix.
    • I’m not expert in anything^[At least for me.]: there are always areas where we are an expert to others, even if we don’t think so.
    • I love to learn stuff but I don’t practice enough: TODO list, blogging about it.
    • I like to write: blog about it.
    • I like order, performance, consistency, clean stuff: keep going.
    • I like money, I would like to create some passive income: Hard problem. I still think my time is more valuable when I read things than the time to develop and deliver an idea. More readings can help me so simplify what I want to do, how to do it.
    • I can’t stay with one tool/one framework, I’m always attracted with the latest and new one: Hipster. Get over it.
    • I don’t have a lot of free time: I need to optimize how I’m thinking, how I’m working: I extended my free time by sleeping less. Not good.
    • I should unsubscribe from React mailing list: Done.
    • I should install Linux or well, buy a MacBook Pro and the iPhone with it: Done.

    Now, listening to Global Communication to relax myself (thanks reddit).

    Feel free to share this article: 

    Join the club and receive an email when I post a new article! No spam ever, no worries.

    Me, Stéphane Derosiaux

    Hi, I'm Stéphane, CTO of Conduktor, a major Apache Kafka Platform. I live in France. Enthousiast and eager to learn, I'm always seeking for challenges. Find out more about me.

    Ready to work with me?

    Tell me everything!
    © Copyright 2018-2022 · Stéphane Derosiaux · All Rights Reserved.