Yesterday, I wrote a small post about the paths that we spend so much of our time planning. While some things are good to plan, some other things are very ambiguous, and it can be difficult for me to deal with that ambiguity. The path to becoming a good developer is not very simple. The general impression most people have of programmers is:
- Download Node or Ruby or Python
- Write a few programs from a tutorial
- Create Facebook and becoming a billionaire
In reality, there’s a lot of uncertainty that we face as developers. There is so much that we could be learning, that even if I quit everything and took a five month vacation where all I did was learn code for 10 hours a day, there would still be more for me to learn. We are faced with analysis paralysis in the face of the unlimited options that seem to lie before us. There are guides and steps and tutorials all over the Internet that tell you that you can become a great developer if you only follow their curriculum.
But at one point, you finish that curriculum. And then there is nothing to tell you where to go. Maybe you know what you need to do, or you get a job where you get paid to write job-specific code and learn job-specific things. But when your boss asks you “So, what are your goals?”, and you stare back blankly and give your best guess, you realize that even with the job, you are responsible for the fate of your adventure through the valley of code.
These are the things I do when I need to figure out what to do next.
1. I tell people no
The best way for me to reason about what I want to do in the future is to block out some time in the future to follow those things. When my thoughts are surrounded by the promises that I have made to other people, that noise can prevent me from thinking critically about how I want to move forward. Kindly saying “No” to a few peoples’ requests and telling them that you are not the person for the job can be a positive for everyone involved. I am getting better at this skill, and actually have had some free-time, which has helped tremendously with deciding what projects to invest my time in.
2. I look in the mirror
I can sometimes get so busy that I forget about taking care of the simple things, like shaving and haircuts. By taking care of the essentials, I get to remove myself from the pull of the endless tasks and focus on the moment. This also counts for a re-examination of the things that I need or don’t need from a development skills standpoint. I ask myself, “What else have I been putting off that really should be figured out?” Usually this involves cleaning up my room a bit, revisiting a few old GitHub repositories and deleting the ones I don’t need anymore, un-following people on Twitter that I don’t read regularly, and removing old bookmarks from my bookmarks bar that I never used. This kind of process of elimination can help solidify what it is I don’t want to be looking into, and put me in a good spot for moving forward.
3. I get lost
One of the craziest things I’ve ever done was go on a road-trip from Dublin to Belfast in a small rental car with five people. The driver had never driven on the left-hand side of the road before, and even worse, had never driven stick-shift before. I had never been on Irish highways or Irish country roads, and I was expected to navigate us across the country and back again.
We survived, luckily, but only after getting lost miles from a highway in the middle of Northern Ireland. The roads were terrifying, the satellite signal was shaky, and we were at risk of stalling out at every roundabout.
When I look back on it, getting lost in Ireland helped tremendously in the weeks that followed. I later had to coordinate showing my family around the country, much of which I had accidentally seen before. My navigation skills from getting lost came in handy just when I needed them, even though I never planned on getting lost.
One of my good friends told me “You learn a place really well when you get lost in it.” I know this is true not only for the Irish countryside, but also for web development. The greatest treasures I have found have been aimless wanderings through GitHub notifications from people I follow, or clicking through from article to article, or from conference video to conference video.
This time feels unproductive, and I feel guilty sometimes for getting so lost on the Internet. But this unproductive time has helped me tremendously later, when I know exactly where to find a useful Regular Expression Tester (you’re welcome), the stock photo website where I get the great pictures for these articles, or stumble upon projects like Polymer from chat room messages of strangers.
You cannot prepare for everything in the future. In the words of the poet Robert Burns himself:
The best-laid schemes o’ mice an’ men Gang aft agley
Which is Old Scots for “Shit happens.” The best you can do is be prepared to take on adventure when the time comes. You will be able to do that best if you have less prior commitments, have your teeth already brushed, and already know what it’s like to be lost.