This subject fascinates me. Lately I’ve seen lots of ads for courses or people who claim they can teach you how to become a software developer / designer / front end developer, you name it. The conclusion seems to be that anyone can do it.
This is born from the huge demand for developers of all kinds, demand which increases every year. New companies are born all the time, new products built so yes the demand gets higher and higher.
There is also the realization that the engineers produced by universities are not taught what they need and can’t write any kind of useful code. They go on to companies who then have to train them like you would train someone who has never seen a programming language in their life. Maybe this is 100% true, maybe not, there are always people who are better and some who waste their time going through a few years of advanced learning. This is not the point I want to discuss.
What I want to discuss is if anyone can become a developer. Can we take someone off the streets ( not literally although it has been done that way as well!) and teach them how to code? Is this the answer to the huge demand of developers everyone faces?
Let’s delve into this a little. What does one need to become a developer? Well first you need to learn a programming language. You can’t write anything unless you know a language, right?
Can anyone learn a programming language? I believe the answer to this question is yes. Anyone can learn the basic blocks, how to write a for loop, an if statement, how to add numbers etc. One could go on and write simple programs which do a few things, like implement an algorithm of some kind. Of course knowing a programming language properly means a lot more then a few basic things.
You could get dragged into learning how to manage memory properly which pushes you into learning how computers actually work. Maybe you get to the point where you understand what a high level programming language is and maybe you understand what binary is and how come that a computer can understand what you ask it to do and actually does it. Maybe you understand these things and maybe not. The point is, do you want to understand these things?
Maybe you write an algorithm and are suddenly interested to see if you can make it faster and more efficient. Do you have the inquisitive mind which simply needs to understand how something works, or are content to see that it works and you don’t really care how.
I believe that in order to be a successful software developer of some kind, you need to have the aptitude for it. Creating something in this world is about creating an abstract model, imagine it all work and then implement it. That’s why a lot of very experienced developers will tell you that before you write any code, first go ahead and draw it on paper or on a board, imagine it like that first and once you figure out everything, only then sit down and actually write any code.
If you come from a maths background, whether you know it or not, that’s a very good sign that you can be a developer. Why do I say this? Because maths is all about the thinking process, it’s about abstract thinking, it’s about modelling and going from one known thing to another. If you have all these things then that’s a good indication you can be a developer, although it is not 100% guaranteed. I have seen very smart people with amazing background fail miserably in this field, because of their attitude and because of their inability to learn once they had it in their minds they knew everything better than anyone else. This happens because development is an ongoing process, once you get into it, you keep learning and learning and learning.
Learning never stops.
That’s what makes it harder than other disciplines. Sometimes it leads to burnout because you wake up one day and realize there’s no way you can keep up and there’s no way to know everything. Maybe you wake up one day and realize that you just can’t be bothered anymore.
At this point you might wonder, hang on a minute, are you trying to push me away from trying to become a developer? The answer is not exactly no, I want you to know what you’re getting into. Yes the salaries in IT are great, but if you don’t enjoy the field, you’ll never be more than an average level developer and won’t get any joy out of it. I want you to understand what these things mean and make you sit down and think if this is for you. If it is, great then go ahead and try.
Take the Yams challenge first though. Yams is a game with 5 dice, with poker like combinations. You can search more info about it and learn every little detail. I encourage you to write a program which implements this game in whatever language you want. Keep the interface simple.
If you can build a working version of this and enjoy yourself in the process then by all means you will love being a developer. You are in a great position because there is a lot of information out there, for free, about anything. You still need to figure out what you need though and how to do it.
Have I done it myself? Yes, I have. I did it before starting on my current path. I was actually working as a care coordinator at the time. I remember using Visual Basic 6 and winforms and I wrote the game for my wife. I absolutely loved it and it pushed me towards software development. I can only wish it does the same for you. Take the challenge and find out.
It’s up to you but the point is the tools won’t cost you anything.
Oh and let me know how it goes, if you do take the challenge.