Photo by Adrien Tutin on Unsplash
You might not need a computer science degree
I started my Computer Science degree in 2012, just after leaving high school and while being already employed before starting it, because I had been in technical school studying programming back then.
After two years in CS, I realized that it was just “stealing” time from me, all those evenings that I could improve my JavaScript, Java, or any other development skills were lost to studying this Big O notation that I would never need to use in professional life (YET).
So, after realizing it, I dropped the studies and started to use this time to learn “real world” things besides academical ones. It was a really good experience. I spent long weekends playing with Node.js, doing what a friend of mine calls “server-side shit”, It was amazing, I was doing calculus, not coding a boring linked list in Java anymore, I was doing “production ready” code and sharing with the world.
That was a younger version of me, so much energy, lack of sleep and still being productive.
So, as you read these words, you might think that you should drop off your current degree or even don’t start one and follow the same path I did? Maybe that would not be a good idea.
I always advocate that, a CS degree is important for one thing.
Getting to know that some smart people had already faced few problems in the past that you might suffer from or not, but it’s always good to know that some solutions already exist, and even though you might not have the same problem, you can adapt an existing solution.
You can still learn these things without going to any university, you can find good materials around internet related to open courses and so on. So, just in case I will try to suggest few options to learn. (If I get more suggestions I may update the list)
So, the important thing to me and what I advocate is, getting to know about concepts, algorithms, some computer theories but not struggling to learn that by heart, just getting conscious why they exist and what problems they can solve.
It’s not bad, reinventing the wheel lots of time, especially while trying to solve the same problems with a different approach, but not starting with an empty page, using some background to your exercise. Finding alternatives, where them fail, where them succeed.
Everybody will tell you that you should “Keep it simple”, but it’s hard to realize how difficult it is to create simple solutions instead of complicated ones. That’s why we have this much of overengineering all the time and creating legacy code from scratch.
There is no book to teach you how to “Keep it simple”, just time and experience, so don’t mind to creating overcomplicated solutions, but be aware about others’ solutions and use them whenever possible.
We live in the information era, good practices are everywhere, lots of useful projects are shared in Github every day, even maybe some might not be that useful, but you can still learn from that.
So, some types of people might not need a degree in computer science to not know these concepts, patterns, theorems and so on, because they look for more information, if you’re one of these people, it’s really great for you, spread your knowledge inside your team, your community, in the world.
Some others might need it because, learning on your own is not that simple (remember that I said that simple, is not that simple?), you might need some guidance, help and then a university or course would you help to improve your knowledge and be a better professional.
You might not need a computer science degree, but you might need to know some of concepts presented in these courses in order to become a better professional.
Whenever you choose do it, find knowledge wherever is easier for you and spread to others, help others to grow like probably somebody did for you previously or if not just do it anyway, we need more people like you.