The initial question
It was during the second semester of 2019. During that year, I had been thinking about what I’d really like to do with my life. Even tough after much questioning I couldn’t clearly answer that question, I figured my best bet was to take some actions to find it out. That’s when I decided to start self-learning computer science (or in more practical terms, to learn how to code).
For good or for worse, I was almost 30 years old at that time. Obviously, I had many doubts about starting. I had already obtained a degree in environmental engineering a few years back, but I wasn’t thrilled about the job opportunities I had in that area.
After a lot of research and thinking, not only about what should I do with my life but also how would I do it, I decided to give it a shot. Something that was very helpful in reaching this conclusion was asking some friends who were working as developers.
Asking for advice
I had many questions, but in broad terms I asked the following:
- What is it like working as a programmer?
- What capabilities do I need to become one?
- Do I need to go to university (again)?
- Is self-learning computer science a good option?
In general terms, this is what they told me:
Working as a programmer
It’s about problem solving using a computer as your tool. Obviously, you will have to spend many hours in front of a computer. You have to be sure you would like doing something like that. It can also get lonely, sometimes. Specially if you do remote work.
And the most important point: you have to be prepared to keep on learning. Technologies change often and very fast, so you will need to constantly learn how to use them. Ideally, you should like learning new things.
Getting a degree
There are many examples of people who have achieved great things without degrees or finishing their studies, but I do believe that getting a degree can be a great boost and that universities offer an amazing environment to learn. However, it wasn’t a viable option for me.
That’s why I asked my friends if it was absolutely necessary to get a degree in computer science if I wanted to work in that field. In one sentence, this is what they told me:
It’s not necessary.
By this, they were not saying that a degree wasn’t worthy. Not at all. What they meant was that by getting a degree you develop a set of abilities and knowledge that allow you to create something. And that’s the important thing. And one word of caution: I followed this advice because university wasn’t an option anymore for me. If you have the opportunity to get a degree, consider it.
In less general terms, they told me:
If you are able to develop any useful and interesting project showing your abilities and knowledge, you’re good.
They also gave me many examples of people both young and not so young that were working on the area without formal studies in it. Basically what you need is the will to learn and keep on going at it for whatever time’s necessary.
I was thrilled! But, what resources should I use? How should I proceed?
Self-learning computer science resources
When I first decided to start learning computer science, I didn’t now where nor how to start. If you’re in this situation and you feel kind of lost or insecure, rest assured: there are lots of great resources online, both free and paid. For starters, you can find a list of the best curricula I’ve found online here.
Many great resources in CS are freely distributed. This is partly due to hacker culture (and I’m referring to ‘hacker’ in this terms, by the way). There’s this very nice and respectable tendency of sharing, of making things free (understand ‘free’ as in GNU). Sharing your knowledge with other people is a badge of capability in this medium.
Leaving aside the reasons, the fact is that there are many great resources to be found online. Even more surprisingly, many great computer science books are made freely available online by their own authors. Just how amazing is that?
The final verdict
The great feedback I got from friends, added to some other resources, helped me make my decision:
I was going to start studying computer science by my own.
I felt it was it was something I really wanted to do.
At this point, I knew that it was feasible. That other people had done it. That there were many great resources available. I felt that given enough time and dedication, it was something I could achieve.