The pamphlet people assume they receive when becoming a programmer.In my quest to become a programmer (coming from the world of marketing and product management), I am sometimes asked by my fellow newbies what it takes to get to a point where you’re ready to take on a programming role.
Not that I’m the expert, but I’ve given it some thought around what really helps build good fundamentals for any language, framework, or role you step into, and I thought I would share!
Understand Variables, Loops, and Conditional Statements
If that looks like gobbledegook to you, that is okay! These are terms that we use in the programming world (and plenty of worlds outside of that!) that refer to specific concepts that are found in all programming languages.
Variables are ways to store data into a named reference point, so that you and your code can refer to it later. It’s pretty much like saving your friend’s home address into Google Maps or into your phone, you took the data (their address) and gave it a name (your friend’s name!) so that the next time you’d like to retrieve their address, you just type in their name into the search bar and ta-da, you have the relevant information at your fingertips!
Loops are used when you wish to repeat an action over and over again, for whatever reason, until you tell your program to stop. It’s useful for when you’re looking through a list of data, or you’re counting from zero to 100, or almost anything where you need to work through many things and do something for each one. If you’ve ever played the same song over and over again until you got sick of it, congratulations, you created your very own loop to repeat that song until you got bored, or the music player died.
Conditional statements is a fancy sounding term for what is essentially logic gates. Which is another fancy term for telling your code to look at something, see if it fits into what you’re looking for, and then do something if it does. You can also have it do something if it does not fit into what you’re looking for. If you imagine yourself going into a concert, or a movie, or an airplane, anything with assigned seating, you’re walking down the aisle looking for your row and seat number, right? You’re essentially using a mental conditional statement to look for whether the seat you’re looking at is the one that you’re assigned to, and if it is, you take the seat!
Of course, I’m oversimplifying what these three terms are and what they could be, but it’s for the sake of illustrating these simple-sounding concepts that are pivotal to the world of programming. You must have a solid grasp of all three, regardless of what language, to advance and progress in your learnings.
Get Comfortable with Version Control
Version control is life. Really, not just meme-ing this post up, but version control systems (sometimes referred to as VCS) are useful for the sake of being able to track changes happening to your code (which is super helpful in figuring out what broke something) as well as preserving your code somewhere other than on your hard drive (if you use a hosted solution).
Popular version control systems are Git and Mercurial, but there are many more. These two flavours in particular are distributed version control systems, meaning many people can work on the same projects, making it easier to collaborate and work on projects concurrently without blowing everything up.
Websites like GitHub and Bitbucket are useful in hosting your projects as well as all of the changes checked into your version control system.
Now, if none of the above made sense to you, don’t worry about it! There are many, many resources to get you started on version control systems, and the sooner you start the better because having good habits around good version control will save you from so many headaches in the future. Source: am the man creating many of those headaches for others.
The important part is that in order to participate with a team of developers, version control will have to be part of your arsenal, and the more you know the better.
Build. Build. Build. Did I Mention Build?
We all have to start from somewhere, and there’s no better way to do so than building anything. And I literally mean anything.
In the programming world, the term “hello world app” is a thing that means we take a language, and as a first step, find a way to get it up and running and just have it print “Hello world!” It doesn’t matter how you go about doing it, but it really reinforces the point of just getting something up and running as a first step. You can go from printing it out, to asking the user to type in something to print, to manipulating the text, to asking for their name, and really, there are a million different things to do as long as you want to poke around with things.
Not to mention, it is far easier to get your foot into the door when you have a clear paper trail of projects that you’ve started, worked on, and especially finished and published. I would prefer to speak with someone who has a multitude of different projects that they’ve created or contributed to without proper work experience over someone who has years and years of work experience but no real projects or contributions to speak of.
In addition, by continuously building and poking around with code, you’ll be referencing documentation, searching the web for answers to problems you can’t quite figure out, and asking your peers for help. All three are must-have skills when it comes to programming, and it’s something that becomes sharper as you build and build and build.
I often say that I’m not technically smarter than anyone around me, I can just google way better than you can.
Find a Community
I left this for last, despite how lame and vague it sounds, because it’s potentially the most important. Despite stereotypes and firmly held beliefs, programmers can and should be as social as possible. Whether that’s in person or online, it matters not, as long as you find people who can share in your struggles or have shared them in the past, because it makes it far easier to motivate yourself when you have a group of people you can turn to for advice, or to commiserate with.
Personally, when I decided to throw everything into programming in March of 2015, motivation and direction was sorely lacking. I was hacking alone at home with my computer, building small little apps here and there, while googling the problems I ran into. Sounds fun.
Luckily, two things happened: I reached out to a group of friends who are seriously talented developers, who gave me a push in the right direction as well as started helping me review my code, and I stumbled onto slashrocket, the community that’s fuelled a lot of my motivation over the past couple of months. When you have a group of people who are either learning with you, or have already been there and done that and can give you advice and help, it makes it so much easier to find fun projects to work on, ask all the stupid questions that you might need to (I had a lot), and just have a social environment where you can hang out all day and casually chat with like-minded people.
The community aspect is huge for me, because I feel like it’s what will really make the difference in the long run. Schools like HackerYou and Bitmaker Labs are great for the curriculum they offer, but I firmly believe that their real value-add, in my opinion, is that you’re in a room with a bunch of people in the same struggle, being lead by people who have been there and done that. And that’s just a powerful environment to be in.
At the end of the day, whether or not you think you are ready to jump into the world of programming is up to you. It’s a mental game where you have to push away all doubt, take some risks, and get some confidence in your skills to be able to sell yourself to an employer, a business partner, or yourself.
It’s been a super fun journey, which I’m still totally on, but I’ve loved every minute of it.