Hello, Programming
#lockdown has got some thinking a lot of what TheBraveNewWorld post-Covid might look like and the word "digital" seems to be a popular adjective in that new world. As a result, more than ever before, I'm having discussions about "how to get into programming". There's usually already quite a bit of background Googling about the different types of programming available which does make the discussion easier. The focus on those searches, however, is the same as the focus in recruitment: what language do you pick to code in?
So I searched for myself to survey the world of the newbie, wannabe programmers and have recently started trying to recruit developers as well, the similarities were striking; and both were broken in the same way. Which language?
Now there is certainly a lot you can tell about a developer by their toolset of choice, but the toolset doesn't a programmer make. Like knowing where to put commas in your sentences; that doesn't make you an eloquent speaker. Being a programmer has less to do with the language you code in and more to do with who you are and how you approach life in general.
So that means "passionate about technology" is not what you need to put on your CV in bold or what you need to tell yourself to motivate a life-changing, or starting, career.
Developers need to, above all else, be passionate about people.
And compassionate. If you don't even give a second thought about the people, the end-users, who rely on your software to get a task done or access information to make life-decisions you have no business getting into programming. Stop right there and go find something else.
As a programmer, you will be on the receiving end of a lot of bugs. After all, your primary purpose as a programmer is to write bugs. (Think about it. Before you wrote a single line of code, no bugs existed. And if you don't get this now, with all sincerity and humour, you will have a miserable career.)
So, those bugs. People will complain about your work because it doesn't work, even when it does. And you will spend hours lining up pixels (sometimes half a pixel ^^) because it must be so. You will spend days, weeks, months, years of your life poring over API documentation, mixtures of coding styles and expressions (some of that your obscure code) trying to solve problems that help real people in real situations; and often, that time spent will be ephemeral. As soon as the next technology is around, all that time will have meant nothing beyond its time.
You don't dedicate that kind of time, patience, persistence, abuse and detail for money. You do that for love. You do that because you know, deep down, you can solve the problem and make the world a better place. Even when you don't know immediately how to do it, you know that with enough grit, you will find a solution and you will change the world. Even if it's just a small corner of your world.
Being a programmer is all about caring enough to make life easier for everyone even if it makes your life less so. Then, once you're clear that programming is for you, make sure you're passionate about complexity, toughing it out and have a deep desire to discover simplicity. That out the way, some practical considerations.
Pick a language to express yourself in but please don't just pick one and think that's a ticket to somewhere. Make sure you're comfortable (productive) with at least 3 different languages.
Spend time getting to know your toolchain. Again, work with a few, including Notepad (to start with). I'd have trouble trusting a dentist who didn't know how the drill worked, wouldn't you?
Know your ecosystem. If it's web development that you're getting into, make sure you know what DNS is; how routing works; all the bits in between that enable your end-users to physically connect to your software. Including security.
Experiment. Lots. Write a ton of free code. Read a ton of other people's code. Don't just copy-paste. Solve every problem you encounter in real life with pseudo-code. Throw away a lot of code. And then code some more.
Finally, be relentlessly curious about life, the universe and everything else. If you want to help people, you need to know a little about psychology, marketing, economics, business, design, accessibility and, oh yes, technology.
I claim that half pixels...;)
No wonder i enjoyed working with you (and your bugs) as much...;)