If you’ve been thinking about making career shift toward software development, you should strongly consider doing a quick experiment to get a better sense of if this really is something you want to do. Sure, it’s easy to just imagine all the cool products you could build, or the great job market and earnings potential.
But making great software is hard work. And as with learning any craft, to get really good at it, you have to be prepared to put in a lot of hours and stick with it, even when it’s just no fun at all.
So here is one good experiment you can conduct to quickly get a sense if this really is for you.
Do a coding weekend: take two full days of coding from dawn to dusk
Commit yourself to spending two full days of coding, over a weekend or whatever works for you. The end product of your weekend maybe a complete piece of crap, but that’s not important. What matters is having lived through the process of making software. If you’d like to try this experiment, here are some tips to consider.
Don’t work through a tutorial
Tutorials are great for getting started learning a programming language, and you should definitely consider having worked through a few tutorials before doing this coding weekend. However, tutorials are more the equivalent of a language textbook, which will give you a path to follow. A key purpose of this coding weekend is for you to have to find your own path.
Find a real-life problem you’d like to solve
You’ll want to plan ahead for this weekend a little, and think a little about what you’re going to work on. Best is to find some real-life problem, ideally one you care about, that you’re going to solve. Let’s say you’re a freelancer and don’t like any of the timekeeping tools out there, so you decide that you’d like to try build your own. Alternately, if you can’t think of anything, you can pick some common tool such as a todo list. What’s most important is that you’re honest with yourself with what you pick. Find something you know will be a challenge but also not completely unrealistic.
Find one small piece of that problem you’d like to explore
Now, I’m not saying you’re going to try to build a fully functioning timekeeping tool over a weekend. (Though I’m sure that’s something a skilled developer could pull off.) The point is to set an overarching goal for yourself. Your first actual task as a coder will be to divide that bigger challenge into a set of smaller challenges. Use a tool like Trello to organize the various smaller challenges you want to tackle. Then, decide which of these smaller challenges you should work on first.
Figuring out what to build first, or what to build next is an essential skill of a good software developer and this will force you to think about this. For example, if you were building a timekeeping tool, you might start by simply start by creating a form for being able to enter a date and a number of hours.
Be prepared for a lot of ratholes and blind alleys
If you’ve picked a challenge that is appropriately difficult, you’re going to encounter all kinds of obstacles to making things work the way you’d want them to. You might end up spending an hour getting stuck on some stupid configuration error. Or maybe you can’t get your local server to work, or there is some weird database error, and on and on.
Welcome to the real world! A huge part of coding is learning to dodge and overcome obstacles. You should expect to be spending a lot of time on StackOverflow, or posting questions to discussion boards, or reading API docs, etc. As you get better at this, you’ll find that you get more efficient and are able to more quickly get back to actually coding and shipping working software. But in the beginning, you’ll spend lots of aggravating hours trawling the knowledge jungle for answers. That’s just part of the game, and in some ways a kind of rite of passage.
After completing a full weekend of coding, is this something you’d want to do full time?
If you’ve completed a full weekend of coding, even if what you ended up creating was total crap, you’ve now got a much better sense of if this is something for you.
One super-important thing to remember: if you were working alone on this, keep in mind that in a real-life situation, you’d likely be collaborating with other developers, ideally pairing throughout.
So don’t let a sense of isolation be a reason for thinking this is not something for you. Instead, ask yourself if you found coding fun and rewarding, or did you totally hate it? At the end of the first day, did you find yourself continuing to think about how to overcome various bugs or obstacles late into the night, or were you just glad the first day was finally over? If you disliked the experience, don’t be so quick to give up, but that’ll definitely be a hint as to if coding is for you or not.