Starting Your Journey in Coding: Myths about What You Need to Get started
Fernando Doglio
Posted on October 23, 2021
From the outside, the software industry looks compelling if you think about it: many countries have no unemployment in the field, salaries are fair, there’s always room to grow, travel is involved in many cases, the option to work from your couch for a Silicon Valley company is there; why isn’t everyone working in software development?
The truth is that although it might seem interesting, getting in isn’t that simple.
Finding your first job as a software developer can be challenging at best; most companies looking for entry-level engineers require them to either have experience with some of the latest frameworks and technologies or to understand a lot of advanced concepts such as design patterns, software development best practices, and version control. Then, they’ll go into vague requirements, such as having great “interpersonal skills”, or knowledge about other IT-related areas… what’s that about?
The following job listing was created from multiple samples taken from internet, looking for Jr. developers:
- Bachelor’s degree in related areas and a minimum of one year of experience in similar roles.
- Knowledge of secure software development.
- Intermediate skills associated with design, development, modifications, and deployment of software, including object-oriented programming.
- Knowledge of other IT-related areas.
- Demonstrated software repository skills.
- Demonstrated effective communication and interpersonal skills.
- Self-motivated and works independently.
- Demonstrated problem-solving skills.
- Intermediate skills in C#, ASP.NET MVC, SQL Server, TypeScript and React.js.
- Experience using Git and Github.
Looking at that list, how can anyone trying to get into the industry not feel intimidated and scared of applying? Anyone looking at that job posting will assume they need two more years, at least, of experience before being taken seriously.
Having been through the same experience eighteen years ago, I still remember the type of questions I had:
- Do I even bother applying for the job? I only have three out of ten of the required skills.
- Do I need to stop studying X and switch to Y now? Because this week everyone is asking for Y developers.
- How can I get experience if I’m looking for my first job?
They’re probably the same questions that any new developer looking to start their career has, but here’s the kicker: they’re normal. You’re not figuring out that you’re not cut out to be a developer; you’re only living through the Jr. Dev experience.
This is what this article is all about. I’ve been through the same struggles that any new developer experiences, I had my first underpaid job because I had no experience. I’ve met some great people that taught me quite a lot about working in a team and I’ve also met some terrible ones who, through their behavior taught me a considerable amount of things to avoid.
Throughout this article, I’ll be sharing the bits and pieces of my own journey. My hope is to show you that you’re only getting started in yours and that the issues you’re facing and the doubts you’re having are completely normal and part of the developer experience package you bought when you decided to live off of your coding skills.
For this article, I wanted to start by covering the basics: what exactly do you need to work as a developer? The internet has a lot of noise and asking this question to Google can bring up a lot of different articles. Everyone has their opinion, and most people tend to focus on functional skills, things you need to learn before thinking of applying for a job.
In my experience they’re not the most relevant nor the most important ones you’ll pick those up through experience if you have to. The truly important qualities of a good developer (even one who has never worked a single day in their life) aren’t technical.
Let’s look at both lists now: the common misconceptions of what is needed to be a developer and the truly useful skills you’ll need.
What you don’t need to become a successful software developer
If you’re looking around internet trying to figure out how to profile your learning before applying for the first job, or if you’re thinking about planning your next five years before you start working, let me cover some of the biggest misconceptions around the requirements to get into the software industry.
Mind you, none of the following topics will hurt your chances, but they’re not hard requirements needed to start the job. Don’t think of it as a to-do list, but rather, a nice-to-eventually-have list.
Bachelor’s degree in computer science or related degree
Four+ years of formal education. Look, I went through it, I did my best to finish it, and I failed on my first try. I tried to be a Software Engineer, a five-year career in my home country, but by the time I was in the second year I got my first job, and my formal education went down the drain.
Do I regret it? I did, which is why a few years later I completed a technical degree (two years and a final project) to formalize a lot of my practical experience.
Did I need the first two years of university? I did, yes, but mainly because they formalized a lot of the basic programming concepts that I had somewhat figured out on my own, learning how to code for fun. Back then there were no bootcamps, my internet access was limited by my 2400 bauds modem, and the learning resources were mainly hacker e-magazines (which were TXT files with some ASCII art thrown in).
The situation now is completely different, and anyone looking to start learning how to code has the world’s knowledge at their disposal. This is no exaggeration, there are free online resources such as YouTube or freeCodeCamp.org which have everything you need to go from zero to workable. Although it’s true that not everyone can learn by absorbing knowledge, you also have other options: paid courses in places like Udemy or Skillshare, which cost a lot less than a university degree and gives you access to classrooms, Q&A sessions with teachers and contacts of other students going through the same problems as you.
These resources provide the practical knowledge required to start coding, and although it’s true that many people value the mention of a college degree as part of your resume, a lot of companies are starting to pay less attention to that single bullet point. Granted, that affirmation might be less true in some countries than others, but it’s also true that ours is an international profession in the sense that we can work for companies anywhere in the world, and when that starts happening, the college degree are diminishing in importance.
I’ve personally performed hundreds of interviews with new developers, and I’ve come to learn that a college degree shouldn’t be an entry requirement.
Don’t get me wrong, I personally believe there’s value in formal education, and I’ll go into more detail about that later on, but it’s probably not your best choice if you’re looking to get your first developer job. If you’re in a hurry, a four plus year investment (money AND time) is too much and when compared to the six to twelve months of a practical bootcamp, the choice should be obvious.
Do you need more? Yes, a bootcamp, or online education doesn’t cover everything you need to know, but this isn’t what we’re after here. We’re focusing on the practical aspect of the profession, and you can start learning by doing.
Knowledge of the software development life-cycle
A typical software project has to go through a development life-cycle:
- You first need to do a requirement analysis to understand exactly what you need to do.
- Then move on to planning your project to understand when to do those things and how much time you’ll need.
- Designing its architecture comes third. Once you know the “what” and the “when”, you have to start thinking about the “how”, and the architecture gives you the blueprints for that.
- Only then, you can start writing code. This is the section where most developers tend to focus on, but as you can see, it’s not the first thing you’d normally do.
- Testing your code and your product comes next, understanding if the previous step produced the right output is a must-do before moving on to the next one.
- Deploying your product. Giving it to users to allow them to start testing it and giving you feedback.
Because it’s a cycle, you’d take that feedback and normally start all over again, but you get the idea.
Now, if you’ve never worked on a software project before then you’ve never had to apply most of these concepts, and this is perfectly fine. You don’t need to understand any of that to get your first job.
Yes, these will be part of your tasks, and you’ll apply this knowledge every day, but turning it into an entry-level requirement for the role of Jr. dev is like asking an acting surgeon to lead their first surgery. Eventually, they’ll be able to do it and they’ve probably read about it, but you don’t want them doing it on day one.
It’s the same for you as a developer; you shouldn’t be expected to understand what all these steps mean on day one. You won’t be in charge of doing it all anyway. You’ll learn about it because you’ll be part of the process.
A math, physics, or similar degree is needed for understanding programming
I’m guilty of believing this one myself back when I started, but then again, I blame college; they taught me calculus and algebra at the same time I learned to code. Was that a mistake? In the long run, no, it wasn’t, but it did nothing to help me get my first job as a developer.
Math, physics, or any similar sciences aren’t going to help you understand programming. Some of them require you to understand abstract concepts (such as infinity, or the number PI), which can act as practice when you need to create mental models of an algorithm you’re trying to write.
This is where I think the misconception comes from — they require you to flex your abstract thinking muscles.
You won’t be solving hard math problems or implementing difficult physics simulations on your first job, and even if you happen to find yourself in such a conundrum, there’s a big chance you’ll use someone else’s library.
Should you need to get a math degree before making the jump to computer science or a Jr. dev role? No, not at all.
The Role of Data Scientist isn’t an exception
Although the role of a Jr. Data Scientist might require you to, in fact, have one of those degrees, the requirement isn’t for understanding how to code but rather, how to model the problems you’re trying to solve.
Eventually, you might find shared concepts between programming and these other sciences (such as sets in many programming languages), or you might find yourself implementing concepts from other realms into your code (such as implementing the concept of gravity on a platformer game), but none of this is something that requires a full degree before even starting to code.
Certifications
Certifications are tempting because they have that “not-as-long-as-formal-education-but-still-useful” kind of vibe, and they have merit, but they’re not a hard requirement to get a developer job.
Listing certifications on your Jr. dev resume shows you care about your learning and that you care about improving your skills. This is a good thing.
But it’s not a requirement. You won’t find job listings asking for particular certifications from a Jr. developer, instead, they’ll be looking for knowledge about a group of technology. This is easier to achieve by following online courses or bootcamps.
What I’m saying is, if you must choose between investing in a certification or an online course, go for the latter and get a broader education before you start narrowing down on a particular subject.
The desire to work in a fast-paced environment
I personally love this requirement. You can find it on many job listings as well as basic software development skillsets. Truth is, this one is generic enough that it can really mean anything.
What does “fast-paced” even mean here? That term can mean anything honestly, but I’m assuming (because it’s what anyone reading in our context would do), it means you have to be interested in working inside an industry that changes a lot, and by that, I mean changes in technology, working methodologies, project focus, or even projects themselves.
This probably sounds scary, particularly for someone who is not even working yet, but I can confirm that you can be a software developer and still hate “fast-paced” environments. Not everyone likes changing technologies, nor even projects. You don’t have to either.
Granted, startups normally work that way, because they have to. They normally need to grow fast and adapt to changes.
Contractors work like that too. Some companies out there hire you to be part of someone else’s team for the duration of a project, and when it’s done, you move on to the next client.
Both scenarios are great, and if you find that interesting, please go ahead and apply, chances are you’ll enjoy your work.
Some other companies have been working for years on their product(s) and they tend to have a more stable environment. In fact, the perfect example of this is banks (and I should know, I’ve worked for some of them in the past as an external contractor); they have a lot of data from numerous clients, and making changes to their tech stack is quite hard, and honestly, scary for them.
No one choice right because most of the time you don’t get to pick your first company; the fact that they accept your lack of experience is the deciding factor. Keep in mind that because a section of our industry is “fast-paced” doesn’t mean you need to like it or to be looking for that.
Experience
Asking for experience from a Jr dev isn’t only counterintuitive, it’s silly. I’ve been there and I know how it feels when you read a job listing asking for Jr devs with experience in different technologies. You’re sitting there, reading the listing trying to find a job to get the experience. It’s like the egg and chicken problem.
My advice here is to ignore that part of the listing because it makes no sense. Apply if you feel comfortable with some of the other requirements or if you feel like you can pick them up quickly.
The kicker is this: if you apply for the job and are worried about the experience part, you can showcase other types of experience:
- If you’ve done some kind of online course, you can list it here.
- If you’ve one or more personal projects published somewhere (i.e. on Github, or somewhere else), you definitely want to publish it here.
- If you’ve worked as a volunteer on something remotely related to IT, list it here.
Careful though, I’m not saying this is a must-do, requiring experience for an entry-level position makes no sense, and it should not be a prerequisite. If you want to address that point on your application, listing some of the above items is definitely better than saying “none”.
If you’re wondering exactly what you should be focusing on when starting your software development journey, check out this other article!
That’s all for this article. If you want to learn more about the book, check it out on Manning’s liveBook platform here.
From Skills of a Software Developer by Fernando Doglio
Take 35% off Skills of a Software Developer by entering fccdoglio into the discount code box at checkout at manning.com.
If you haven’t already, go check out the various articles about the journey of a software developer covering things like myths about the requirements or perhaps the best practices to follow as a Jr . developer.
Posted on October 23, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
October 23, 2021