There has never been a better time to become a software developer. The demand for software developers is increasing all the time, as is the variety of work they are tasked with completing. Then there’s the pay.
According to USNews.com, the average software developer made $101,790 in 2017. According to Gorroo.io, the average C# developer earns $102k per year.
In short, programming is one of the most in-demand skills in the world right now. If you are looking to work online, or to prepare yourself for the next step in your career, there are few smarter moves than learning code.
The average C# developer earns $102k per year.
But where to begin? If you are someone who hasn’t dabbled in code in the past, then you might find yourself at a complete loss as to how to get started. In this post, we’ll explore everything you need to know: what a software developer does, what qualifications you might need, and how to find work.
What does a software developer do?
A software developer is someone who develops software. That means they will write code, use tools, and often carry a project from its inception to its completion. Alternatively, they might be hired to identify bugs in existing code, or to upgrade it/add new features.
Either way, your work will consist largely of solving problems using a variety of programming languages, APIs, and tools. You might work on projects directly for clients, through an agency, or as part of a larger organization.
Types of software developer
The reason “software developer” is such a broad term, is that there are so many different types of software you might be asked to work on, and so many different tools you might use to bring that to fruition.
A software developer might also work as a web developer, or a “full stack developer,” in order to build a website or add interactive features. They may develop mobile apps, or work on in-house industry tools.
Another distinction to consider: software developer vs software engineer, what’s the difference?
While both of these terms might be used interchangeably, the difference comes down to the type of work being completed and approach taken. Software engineers look at code from an engineering standpoint: they consider the lifecycle, they look at errors and bugs, and they typically work on large projects amongst larger teams.
Software developers, on the hand, are more likely to be the primary creative director on a project. They develop software from start to finish for a client or organization, usually in order to fulfill a specific role.
So if you work for Facebook as part of its engineering team, you are a software engineer. If you make apps for clients, you are a software developer. But you might well get called both in either situation.
What skills and qualifications does a software developer need?
In order to be a software developer, you need to learn to program.
The next question is: “what is the best programming language to learn” or “what programming languages do employers want?”
Full stack developer
Here’s a great course from Udemy if you want to learn more: Full Stack Web Developer Bootcamp.
If you’re interested in developing Android apps however, then you will need to learn Java or Kotlin(ideally both). You’ll need to familiarize yourself with Android Studio, the Android SDK (Software Development Kit), and all the new concepts that Google is constantly introducing (such as instant apps, or bubbles).
Read more: How to find work as an Android developer
If you want to make iOS apps for a living, you should learn Swift and Objective C and familiarize yourself with Xcode. If you want to make Windows apps, or go cross-platform, then you’ll need C# and an understanding of Visual Studio.
To become a games developer, then you should definitely learn C# and ideally C++. You should get to know the big game engines (Unity and Unreal), and you might want to add a little bit of CAD to your skillset.
The Ultimate Guide to Unity for Game Development over at Udemy is a good place to start.
This is just scratching the surface. Other software developers will work on software with electronics, handling big data, and more.
Then there are the specific tools that companies will use in order to manage their workflow and collaborate on bigger projects. When I visited Facebook in London a few months ago, I was introduced to the many different tools the company uses to keep projects on track. They include Phabricator, Mercurial, Sapienz, and more.
Certainly, tools like Github (used for version control) are likely to be useful for software engineers and developers working in a variety of industries. Project management apps like Asana or Basecamp are likewise very useful for remote work. Showing that you have experience in these areas will round out your CV further, and make you even more employable.
To sum it up: what you need to know will depend on the type of software developer you want to become.
The best software developer certifications
So once you’ve chosen the type of work you want to do, and the type of code you want to write, your next job is to identify the type of training you’re going to need. Do you need a degree to become a software developer?
The short answer is no. The longer answer is no, but it certainly helps.
While it’s possible to get employed without a degree, a computer science degree will nevertheless be a requirement for a large variety of organizations and employers. It will also give you an excellent foundational understanding and a competitive edge over non-degree-wielding applicants.
Likewise, a degree will give you an advantage over other candidates during the application process.
But degrees are expensive and most adults won’t have the option to fit them in around their busy lifestyles. In which case, the next best thing is to take online courses and to gain certification that can demonstrate a basic understanding.
There are many industry-recognized certifications that will give you some amount of clout when applying for positions.
For example, you can get Unity certification direct from the company, which may prove valuable to game developers. If you wish to become an Android developer, you might apply to become an Associated Android Developer which is an official program run by Google. Or you might opt to become an Android Certified Application Developer, which is fairly well recognized.
Certifications like these provide peace of mind for clients and companies considering hiring you. They demonstrate that you really do have the knowledge you claim to have, which will mean they can bring you up to speed with minimal additional training.
Simply Google the type of work you’re interested in and find the best-known certifications in that area. If you’re unsure, then choose one of the big languages like C# or Java, or look for a computer science or full stack course that will cover lots of ground.
Do you need certifications to be a software developer?
The cheapest option would be to become a software developer with no certification or qualifications. But is it possible to find work as a purely self-taught developer?
I can guarantee you that it is, as this is exactly what I did. I learned BASIC programming on a ZXSpectrum, and from there progressed my knowledge with QBASIC, B4A, then Java, C#, Python, and more.
The way I was able to do this, was by letting my CV speak for me. I developed a successful Android app that had over 100,000 paid downloads, worked with some fairly big names off the back of that, and then wrote a technical book on game development for Apress Media (Springer).
Those accomplishments provide the exact same kind of assurance for clients as would a certificate, and allow me to charge much more than I otherwise could.
I highly recommend developing apps and websites in your spare time to serve as examples of your work, doing cheap work for friends to build a portfolio, getting involved in open-source projects on GitHub, or attending hackathons.
Most freelance sites like UpWork also provide short tests that you can complete in order to demonstrate your basic understanding.
Even without that kind of experience, if you agree to receive payment on receipt, don’t charge too much, and provide examples of your work, then you should be able to land some jobs right away.
As for finding work with big employers, some professionals suggest certification may be of no help at all.
That’s because, once you know one programming language, it’s relatively simple to understand the others. While the syntax, tools, and some of the rules might be different; the first language you learn is still by far the hardest. There is an equivalent for “if” in pretty much every language you’ll learn.
once you know one programming language, it’s relatively simple to understand the others.
When working within an organization, training is always going to be required. Very few employers will expect you to know everything right away, and – in all honesty – there’s a huge amount of blagging that goes on in the career of any software engineer. Expect to feel completely out of your depths and brimming with “imposter syndrome” when you start. But don’t worry, that’s how everyone feels!
How to teach yourself code
Teaching yourself to code is a challenging process, and advanced concepts like object-oriented programming can be tough nuts to crack. Fortunately, there is a vast amount of free material available online; we’ve already highlighted a couple of great courses from Udemy and there are many more besides. We have a course for Android developers run by Gary Sims for instance.
Here are some more excellent tools for learning code right now:
- A great course that will teach Python for data science.
- C# coding bundle
- Nine-part pro web developer training bundle
And there are plenty of great courses over at sites like SkillShare.
Work through these in a logical manner, and practice with your own projects. It’s tough going at first, but if you focus on the aspects you enjoy, you’ll get there.
Finding paid work as a software developer
The last piece of the puzzle is to find paid work, as a contractor, a full-time work-from-home employee, or a freelancer.
Finding freelance work is predominantly a matter of using job listings sites, freelancing sites such as PeoplePerHour or UpWork.
There are also freelance sites that are aimed specifically at software developers and engineers. These include Rent-a-code, and even Stack Overflow.
There are other ways to earn money with expertise as a software developer too. You could become a writer (like I eventually did), and write tutorials for blogs or books for technical publishers. You could teach through online courses; why not create your own Skillshare course?
Read more: Can you still make money from an Android app?
Or you could build your own app, upload it to the Play Store, and then generate a passive income from it while you sleep. And this would have the nice added bonus of also serving as a brilliant demonstration of your capabilities.
In short, there are countless ways to become a software developer. But if you take just one thing away, it should be this: learning to program is an excellent idea and an even better career move.