How To Become A Programmer / Software Developer - Beginner's Guide
Programming is a hard field to break into — especially if you’re brand new to the industry and don’t know where to begin.
At the beginning of the decade, the Internet and its code-related resources were possibly a sliver of the size they currently are. As more developers find time to contribute back into the ecosystem, our interconnectedness has seen immense growth over the past ten years.
This is amazing, but it can also be overwhelming.
Here’s a guide that strips back the noise, giving you a focused path to getting started.
1: Start With the “Why”
This is your career.
What many people miss when it comes to their careers is that it’s an integral part of their life. You’ll be spending a good chunk of your time doing this thing.
When you start with your “why”, it can help you through the hard patches of learning. Let's be honest, some parts of code can be quite mind-boggling.
Some of us are enticed by the potential paycheck it promises, others like the idea of solving problems. For me, I got into programming because I wanted to make things happen. I’m always brimming with ideas — programming is a tool and bridge to help me achieve my goals.
When you know your “why”, it’s also good to regularly remind yourself of your goals and reason for coding. This helps prevent your job, your boss, your peers, or even you, from derailing you away from your true path.
Always remember your “why.” Why you decided to start the dev journey, why you decided to invest in the time to learn and grow in the field.
2: The Good and Bad Parts of Being a Developer
There are good and bad parts to any career choice.
Here’s a list of pros and cons, and things you should consider if you want to thrive as a developer.
The pros:
- The paycheck. Six-figure salaries in the dev world are not a myth but it does take a couple of years to work towards unless you’re working at a place that’s got a bit of budget.
- The potential to work remotely. You don’t have to be at the office all day, every day. A lot of companies are warming up to the idea of remote work with office days to schedule meetings.
- Transferrable skills. The knowledge you have extends beyond borders and you can take it almost anywhere you want. You can move countries and still remain relevant.
- High demand. According to the USA Bureau of Labor Statistics, the job outlook is predicted to grow by 17% between 2014 to 2024. This is massive when taken into comparison with the average growth of 7% for other sectors.
The cons:
- The competition. Let’s be honest, the easier it is to start something, the higher the chances of others doing the same. As the art of programming becomes more accessible to others, the level and pool of competition increases proportionately.
- Stress. There are constant deadlines, bugs that don’t make sense, inherited code from others, bad frameworks and implementations, late-night deployments and just plain old stress from learning but never being able to keep up with the ever-changing landscape.
- Potentially long hours. The job doesn’t stop when you get home. Sometimes it follows you. Then there are the learning hours you need to put in. For new developers, hours can be long and grueling.
- Sedentary lifestyle. A majority of your time will be spent behind the screen. This means that you won’t be moving a lot, which can be bad for your health.
Things you should consider
- your temperament. To be a successful developer and excel code creation, you need sticking power. Patience is required, especially during the learning process. How you learn also matters. There are a lot of digital learning resources, which are often self-paced and disconnected from actual people. If you’re not too good with isolated and self-directed learning, you might find it hard to thrive in the field.
- Your social and family obligations. While you might not turn into a basement cubicle recluse, the work involved in learning to code will take up lots of your time. If you’re not careful, it can take over you over completely. Your family and friends might not understand at first but everyone needs to be on the same page when it comes to your career. Some partners would rather watch a movie with you than see you stress over code that won’t compile because the tutorial failed to mention the node package version.
- Commitment abilities. When you turn code from a hobby into a full-blown career choice, you’re also committing to the life-long journey of continuously upgrading your skills and knowledge domains. You need to be clear with what your commitment abilities are in terms of time availability and be actively consistent with them. If you’re not, you risk it taking over your life or falling behind. You need to figure out how much you can commit to upgrading your skills without it infringing on other parts of your life.
- Your expectations. Not everyone starts off with a six-figure salary. Most of the time, we’re looking at around $45k to $55k for junior developers. This number also depends on where you are in the world and what kind of company you end up working for. Startups tend to have a lower budget but a higher chance of accelerated growth due to the way they’re set up.
The Budget
Learning to code is an investment. In addition to time, there may be a few things you need to consider that require a monetary component.
The hardware
This is a question that a lot of beginners ask but no one really answers properly. In the grand scheme of things, anything with a 7-core chip will do just fine. My Dell XPS i7, originally bought in 2012, managed to survive quite well up until May 2019. I’m currently running an ASUS Ryzen 7 laptop for most of my coding activities.
In the past, I’ve been given numerous laptops to work on through work. 5-core chips tend to lag when you have multiple screens and consoles running, occasionally crashing if you have more than three.
If you choose a laptop as your main dev machine, some programs like Android Studio will drain your battery and put a lot of load on your RAM.
You don’t need to spend an arm and a leg for a dev machine. From what I’ve seen recently, the pricing tends to go up as the thickness of the overall machine goes down. Don’t get side-tracked by the size and look at the actual specs instead. You can still get a 7-core, 1TB and minimum 16 ram laptop for a decent price and be able to code most things without issue.
The software
Most dev-related software is free and open-source. Visual Studio Code, for example, is one of the most popular code editors with free community-driven extensions.
When it comes to the Windows vs Mac OS debate, it really depends on what you’re trying to achieve with your code. If you want to start off with Apple mobile development, you’re going to need an Apple computer. However, a Windows machine can cover the rest of your development work.
The courses
When it comes to becoming a developer, we often think of the computer science degree track to get in. Over the past ten years, the industry has morphed to accommodate life-long learners, resulting in Bootcamps and online courses that provide an alternative to the traditional degree pathway.
There is nothing wrong with a CS degree, but remember that it’s just one of numerous ways to get your foot into the door these days.
Here are a few places that can help kickstart your programming career:
Udacity has a number of courses aimed at getting you started in the field. It features projects that are evaluated by real and vetted tutors. The course structure is a mix between self-paced and directed.
The cost of a nano degree depends on how quickly and committed you are to complete the course. This is because Udacity charges on a monthly subscription basis. In a way, this is a good thing because it motivates you to complete your course in the expected time frame.
Coursera is a free platform with the opportunity to do a paid certified degree and certifications. It is approximately half the price of a traditional, on-campus CS degree.
Courses are run by Universities from around the world. They often have a defined start date and content that reflects what you would find on campus.
EdX is an online learning platform that includes participation from Ivy League members like Harvard, Princeton, and Brown. Other members include brands like IBM, Microsoft, and AWS.
The courses available are often open, self-paced and free, with the option of getting certified officially for a fee. There are short tracks available called MicroMasters. These tracks often contain a few, carefully selected courses to give you in-depth knowledge of a particular subject or topic.
The Different Parts of Dev Work
When people think programmer, they don’t realize that there’s more to it than just code. Here’s a summary of the different areas you’ll encounter in the programming world and where you might end up as a developer.
Frontend
The frontend is what you see. When it comes to code, this is the interface — the beginning of any public-facing interaction.
A lot of developers these days start out in frontend development, especially those on self-taught tracks. This is because most of it is based on a trinity of HTML, CSS, and some form of JavaScript.
The problem with frontend being so easy to pick up is that there’s also a lot of competition. To distinguish yourself, you need to explore non-coding related topics such as design, user experience, patterns, and typography.
Knowing how to code for the frontend is no longer just enough. The understanding of design has become an integral part of the dev work because you need to, at the very least, be able to speak in the same language as your designers.
Backend
The frontend is mostly useless if it’s not connected to a data source. The backend acts as the bridge that processes and determines how data is stored, retrieved and formatted.
There isn’t much to it, not really — just a mountain of methodologies and architecture for code growth, data management, and sessioning.
When you start out in the backend, it may seem like it is just an end to a means — to make the frontend useful. However, the complexity of the backend lies in its ability to succinctly deal with data and how it persists.
Infrastructure and architecture
At its simplest, putting your code on a cloud box like a Digital Ocean droplet or AWS EC2 instance can feel like an easy task. Complexity arises when you have to think about scalability, automated processes and how not to balloon up your hosting bill to a price you can’t afford.
Getting certification in infrastructure often means you specialize in a particular cloud product such as Google Cloud, Microsoft Azure or Amazon AWS. These certifications can lift up your salary a significant amount. Not many people tend to choose infrastructure and architecture as their starting pathway.
Why? Because it’s not as shiny or visible as the front and backend. But it’s a necessary component if the company goes through an accelerated growth phase, where the code and data lives need to match the demand.
Languages and frameworks
There are many languages and frameworks to choose from. The most popular one right now is JavaScript.
While it can be argued that it is not a proper programming language, its application, and usability across different spaces, allows you to achieve many things by just knowing that one thing. A lot of web technologies and implementations nowadays boil down to JavaScript.
If you’re looking to get into mobile development or games, Java and C++ are good options to start with. They also come with frameworks that let you implement a frontend that is pre-processed in the backend.
5: Constructing Your First Portfolio
Figuring out what to put in your portfolio is a hard one, especially if you haven’t made one before. Having a portfolio can help you land a job faster than not having one. This is because it helps back up whatever claims you made in your resume.
Here are a few pointers to get you started.
A frontend implementation
Everything needs an interface. Why not show off your frontend skills with an implementation that incorporates HTML, CSS and JavaScript in a concise and succinct manner?
You can use a framework like Angular or library like React to implement a single page application. A to-do list is overdone — it’s usually used as the starting point of a tutorial.
Here are a few frontend app ideas you can boot up in 24 hours. They take the ideas learned in a todo list app but let you recode them into your own version:
- A weight tracker
- A notes app
- Pomodoro app
- Bill tracker app
- A calculator app
- A wishlist app
If you wrap it frameworks like ionic, it can also double up as a mobile app as well.
When you’re creating your frontend apps, be sure to not rely too heavily on bootstraps and CSS that someone else has written. While it aligns with the concept of rapid development, if you’re new to the game, you want to properly figure out where you stand on the spectrum of skills. That means doing as much of the design and design code on your own as possible.
A backend implementation
You can take the above ideas one step further and create a database and backend for them.
This means you’re creating your own data structures, figuring out how to query them and process them in a way that’s accessible by the front end via APIs. If you launch it to the cloud, it also gives you hands-on experience with infrastructure technologies — something which you can also legitimately add to your resume.
A lot of the backend during the development phase is on your local machine. This means the ability and knowledge to set up an automated process flows to reduce inefficiencies. If you’re doing something manually, ask yourself — can this be automated?
If the answer is probably yes but you don’t know how, it’s time to hit Google.
Integrate an API
If you don’t have backend as part of your toolkit, then another route to take in conjunction with your frontend is to integrate an external API. There are a few open and free APIs out there.
RapidAPI has a list of free APIs that they host on their platform. eBay also has an API that you can use to search categories, post things for sale, and display listings.
Census Bureau has a selection of APIs that you can use to access information compiled via the census on demographics, population, and economic data. You could have a lot of fun with search queries and graphs for this kind of data.
On the fun side, Marvel Comics has an API gives access to information on Marvel’s 70 years' worth of comic-related data. I haven’t personally checked this one out but it looks like something epic can be built from this kind of data.
Applying for Jobs
Applying for a dev job can be a daunting process. If you want one that’s ready to take you once you’ve finished your studies or course, it’s best to apply while you're doing your program.
This is because it can take anywhere between a month to three months for the selection, interview, and technical test process. Some companies take a while to get back to you.
The main advice is to build up as much of a portfolio as you can and construct your resume in a way that’s information-rich but not crammed to the edges in 5pt font. Avoid using stars or skills percentage (you know the kind that says 85% skilled at JavaScript) because it takes up unnecessary space. The potential employer doesn’t know the metric you’ve used to come up with that number.
Be succinctly informative. If you haven’t got any relevant job experience, use your portfolio as the stand-in. Be sure to know what spectrum of the stack you specialize it and highlight it as a majority part of your resume accordingly.
But the most important part of all in the job application process is to not get disheartened. Like any job market, it’s a matter of getting in and you can go from there.
7: Where to From Here?
Once you’ve completed a course or two, made a few apps on your own and figure out how to code without having to follow a walkthrough from a tutorial, you’re ready to create code in the real world.
The journey upwards often requires time outside of work and you’ll continue to feel like a beginner for a long time. To overcome this, you need to collect new knowledge points — in breadth and depth, towards a subject or language.
The more knowledge you have, the easier your projects will become and the more your ability to solve problems on the fly will increase. As a beginner, endeavor to make mistakes and as much code as you can. It will help you recognize your inefficiencies and predict where things can go wrong.