So you want to learn to code? Are you a newbie, programmer, developer, or a software engineer?
With all this hype about plodding towards a tech-enabled future, how does an aspiring programmer learn to cut through the noise, and focus on becoming the most employable candidate in the next 3 years? In this article, our experts share the one biggest pitfall in learning programming, and how we can help you to avoid it.
Knowing the difference between being a programmer, a developer, or a software engineer.
So we’ve heard of the many awesome software engineers in Palo Alto reaping in the big bucks, earning themselves a solid $10,000 a month at least! (See image below).
The idea of such an obscene pay is much to the envy of many, prompting the rash commitment to learning coding. With this supposed increase in number of programmers, why does the pay for top tier engineers still remain so high up? The simple answer to this question is that the folks in Palo Alto are Software Engineers, and are not mere Programmers. This then prompts the next question; what is the difference between being a programmer, a developer, or even a software engineer?
Being A Programmer
As a benchmark, most people who tinker with code in the first 1-2 years of their careers/academic life, fall within this category. Under this category, programmers merely understand how to code, and while some may fully be capable of writing elegant code, they are still considered programmers by most measures. Being a programmer these days is relatively simple, considering all the free Massively Open Online Courses (MOOCs) that are made available to all (think: CodeAcademy, Udemy, Coursera, StanfordX). It is really as simple as picking up a Java/Python/C# course through one of these providers, and to sit through all 40 hours of these lessons to be considered a programmer/coder. As such, it is increasingly becoming less lucrative to merely know programming, since programming is becoming easier, and more accessible to pickup. Examples of projects that programmers are able to build are probably simple command-line programs, or to solve simple algorithmic problems.
Here’s a real simple example of a command-line program! This also basically means that programmers can’t really build products that can be used by most people.
Being A Developer
After a good 3 – 5 years of hustling with code, most can be considered to have left the pool of wannabe-programmers, and having evolved to become developers. Of course the time spent swimming in code is hardly the best way to judge whether someone has progressed to become a developer. So what makes a developer? Answered simply, developers are able to build software products that can be used by small communities, or even moderate amounts of users. Among the better developers, some of them can even splash in some simple machine-learning aspects into their products, or even to write code to interface with Internet-Of-Things (IOT), and maybe to tinker a little with block-chain technologies. Heck, it all even sounds impressive right? Considerably Yes and No, but more on that later. Let’s take a look at the kind of products developers are capable of building.
WOW cool beans! An application that can control sensors?!
Of course developers can build simple games like these, why not? But of course, game developers are another variant of folks who are respectfully specialised in what they do. Flappy bird hardly falls within the category of being a complicated to develop game. All there is to it, is the simple mashing together of simple sound effects, adding in sprites (aka moving images), and a simple physics engine to detect collisions and such.
The first version of TheFacebook anyone? Not dissing the success of Facebook and Marc Zuckerberg himself, the first version of TheFacebook could have really been built by any half-competent developer who knew his way around a simple database such as MYSQL, or even to build webpages using PHP. As a benchmark, it was calculated that the earliest version of Facebook could hardly support more than 10 thousand users at any one time.
Being A Software-Engineer
Yay! Being able to build products that can be sold, and be used by users, much congratulations are in order. But is that really the end of the line for people who write code for a living? Of course not! In the later portion of a developer’s career he/she has to begin thinking more like a software engineer. And this means that he/she has to start placing importance on architecting solutions, rather than actually simply writing code to build a product. A software engineer has many considerations like the following: Contemplating the ability to support large numbers of users (> 70k users) at any one time, how to prevent hacking attempts/security loopholes, the usage of certain languages or frameworks over others (why use Python over Java or even C++?), where and how to setup servers, how to write code that allows for extensibility in the future?
And the list goes on! Just a simple look at the amount of technical jargon thrown out seems pretty much scary to be honest. So why not let’s disregard that, and focus on some of the awesome stuffs software engineers build?
An application like Uber that is able to support at least a million users a day, geographically spaced in 70 countries worldwide.
The current Facebook that looks so awesome, and is able to support hundreds of thousands of concurrent users worldwide.
Yeap, really awesome stuff right? As a benchmark, we’re looking at > 5 years of writing code for one to even approach the ranks of becoming a software engineer.
Here’s Some Great Advice
Learn the difference between being a programmer, developer and software engineer well, and aspire to be a software engineer. Being a software engineer is tough because of the amount of learning one has to do, in order to be able to contemplate the hundreds of possibilities when building a product. The best software engineers in the world are also the ones who can build really performant, and highly scalable products. They engineer and architect more than they code, and often times, that alone is the most important aspect.
Avoid technical buzzwords like the plague – Remember when we mentioned the impressiveness of being able to build machine-learning products, make use of the blockchain and the likes? The reason for avoiding such buzzwords is backed by the fact that it really takes years of learning in order to become an expert in Machine-Learning, become an expert in Blockchain, or even in IOT itself. Being able to build a hacky representation of a product that makes use of such awesome technologies is hardly doing yourself justice, neither does it do justice to the clients that eventually purchase your product, since they have no idea of the quality of the product that you produce. Aim to specialise in any of these technologies or field, only when you’re certain of the direction that you decide to head in. Get exposure to these concepts on a higher-level, and only commit yourself to learning them when you’re certain of using them in the building of a product.
Understand that the “X number of years” to get to a certain level, is merely a rough benchmark. In our line of running our school, our aim is to build software engineers in the shortest time possible, and we posit a timeframe of roughly 2-3 years for such an occurrence to happen, where our students will become junior software engineers with some experience in building products. In our lifetime of meeting people, we have ever met talented/hard-working folks who have earned a “software-engineer status” in a matter of 3 years or less. Through the sheer grit of their determination, and maybe a dash of talent, they have moved on to join startups, enterprises, and development firms as solid software engineers.
Hey-Hey! To end on a lighter note, this article isn’t meant to discourage any aspiring programmers, but this article is meant to shed insight on the long exciting journey for someone who commits himself/herself to learn coding for a living. At Early Coders Academy, we admire the many folks that make a brave foray into the unknown world of coding, and we take it upon ourselves to aid newbies to become software engineers as much as possible, for them to realise their engineering, as well as life goals.
On this note:
Make sure to talk to our awesome instructors at [email protected] if there are any queries, or concerns in your programming career, and we will be more than happy to aid you on your journey! 😀
Written by Yu Jian, Early Coders Academy
More awesome resources by other folks who share the same thoughts as our school:
In his reply, Frank talks about the different belt levels of different types of programmers! 😀