So, do you want to become a software developer and you didn’t graduate computer science? Do you feel that “your time has passed” and you still think that there’s a lot more to achieve? Well, this post is for you, so you might want to keep on reading! If you ask yourself if this is even possible, well…. yes it is! I’ve studied philosophy and theology and still I’m working for almost ten years in the IT industry, I’m playing around with code for around 2 years and now I’m a software developer. Is it easy? Not at all! Or it depends on what “easy” means for you. But it’s achievable and here are a few guidelines on how you can become a software developer.
Passion is the key
You have probably expected to start with some detailed technical roadmaps, steps to follow and so on. Well, this is really not the most important thing. The most important prerequisite is a passion for technology, computers and programming. Passion is what fires up your desire to learn more and achieve greater things. Passion is what keeps you awake till late in the night to read more about technology. Passion is what drives you to get your hands dirty and say: “Hey, I can do that as well”! Passion is really the only thing that keeps you going forward when you feel that you’re too dumb to understand certain things. Last, but not least, passion is what fuels your search for beautiful code once you already are a developer.
If you don’t feel this passion for technology, computers and programming, then you should maybe look to something else. There’s really no point to become a software developer if you are not passionate about it. It will only cause you a lot of frustration, that will negatively impact your career and personal life. If you take a look at successful careers, you will notice that there’s only one secret: make you passion to your daily job. If you really do what you’re passionate about, then you won’t need to “work” one day in your life! So that’s really the first and more important prerequisite if you want to become a software developer.
Start with an object oriented programming language
I will try to keep this as short as possible. In my opinion there are two programming languages suitable to start: C# and Java. C++ might overcomplicate the learning process. C# and Java, on the other side, are a little bit easier to get started with and both have huge ecosystems surrounding them. I started with C# and I personally think that C# might be the better choice since the .Net ecosystem is really evolving into something very modern. However, Java is equally great.
Also, don’t get stuck into internet debates on which programming language “is better” or “is better to start with”, since that’s not necessarily a factual debate, but an opinionated one. Everyone has its own preferences and each programming language has pros and cons. There is no real answer to such questions. The most important thing is that you get started as soon as possible!
Play with algorithms
Once you’ve learned the basics, start playing around with algorithms. Project Euler is a very good place to start with. Don’t search for the most complicated ones. Try instead to find a solution yourself, without searching the web. This is a very good way to get your algorithmic thinking going and also bare in mind that during most job interviews you will be asked to write some algorithms, either in pseudocode or a programming language that you’re familiar with. Basic algorithms like finding a maximum or minimum in an array, a Fibonacci sequence or basic sorting algorithms are really a must for most job interviews.
Work on you own projects
I think that this is a really important step. Start to create your own desktop or web applications. Again many other will say that if you’ve come this far you should concentrate on design patterns, architectural patterns and so on. Based on my experience, this would not be a good choice, since you wouldn’t have any practical reference that would make you understand why design and architectural patterns are important.
You don’t have to create the new Facebook, Uber or AirBnb at this point. The only important thing is that you get your hands dirty, that you tackle the challenges that come with your projects. You may create your own basic calculator application or a website for the restaurant you like the most, or even better, your own website (this blog is not necessarily a good example since it’s a WordPress blog, but I have stated it long before I even started to work in IT).
Understand design patterns
By the time you have created your own projects, you will see that there are a lot of challenges that you will face. You’ll solve them eventually, but if you’re passionate about programming you will keep asking yourself if there are better ways to tackle the challenges that you encountered. Design patterns are the answer to these questions, so start to study them. But don’t stay at studying! Go back to your own projects and make them better using the design patterns you learn about. Note, however, that not all design patterns you learn about are suitable to refactor your projects. So when you study something, think about ways in which that specific pattern could help you refactor your projects. This will also develop your critical thinking.
Yes, get involved in developer communities. Don’t wait until you’ll become “a better developer”. If you’re passionate about programming you will probably never feel that you are good enough. So even if you’re still a rookie, get involved in Stack Overflow discussions, try to answer questions. Get involved on Twitter or Facebook groups. Publish your personal projects on GitHub, even if they are “not good enough”. Write your own blog. That’s the way you will always get better.
But there’s more to getting involved then improving. When you finally decide to apply for a software development job, believe me that it will be a huge difference if besides your resume you will be able to say to the recruiter: “Here’s also my Stack Overflow profile, here are my GitHub repositories, here is my blog”. This will show that you’re really passionate about technology and programming and trust me when I say that most of the companies put a lot of emphasis on this.
That’s it. If you are really passionate about technology and programming and follow these steps, I’m fairly sure that you would be able to become a software developer. Even if you didn’t study computer science!
A last call to action
If you have questions, please feel free to post your comments!
Also you might want to share this article, since you might have friends that would find this information useful. Sharing is caring!
And last, but not least, thank you for reading to the end!