On this page:
If someone else can learn to do it, you can too. That’s always the case, it’s always been the case, and it always will be the case. But when it comes to learning how to become a good programmer, do you really need to go to university to learn? In this conversation, I talked with a former pupil from React GraphQL Academy about his experience.
Student: In my last job, my company was running out of funds and they dismissed and replaced me with a full-stack dev. For them, it was better to have a dev that could implement a feature backwards than to just have a front-end dev. So, I started thinking that maybe I don’t have the necessary skills for this market and I need to know some more stuff. Is that the case?
Alex: So what do you think the problem here was:
You didn’t know front and back?
Your company didn’t have the funds to train you?
I’ll be honest with you - I run a small business. If you ask me whether I would hire someone who does front-end or someone who can do front-end, back-end, and a bit of UX alongside a working knowledge of Google Analytics… I would tell you that the person who only knew front-end dev wouldn’t have many chances at React GraphQL Academy.
But, is the full-stack hero who can do all of these things good enough? I would say that we can’t be good at everything.
In my view, being a full-stack UP-TO-DATE developer is a utopia nowadays. Someone once told me that specialization is learning more about less. You need to find a balance that works for you. In my small business I don’t need a developer who can build 500 super-scalable microservices - that’s Netflix, not React GraphQL Academy. The point is, who do you want to be and who do you want to work for?
Student: You’ve made some really good points there, Alex. But I was always made to think that a Computer Science degree would either make or break my career. It takes nearly three years to complete a CS degree - will it be worth all that work, effort and pain?
Alex: I started uni for my software engineering degree at the age of 25 while I was working as a developer. True, it was tough to work as a dev and go to uni at the same time. But being tough is one thing - is it worthwhile to do it?
I think the question I would really ask you is, what is your goal? Is your goal:
To get a degree?
Or to have a solid foundation?
In other words: do you want to work for companies that value a degree or your knowledge? Some companies won’t offer you a job unless you have a certain degree, while other companies might be more interested in your open source contributions and don’t care that much about your background. If you want to be a professor in the future then you’ll need the degree. Likewise, what if you wanted to work for the government? You'd probably need the degree, too.
Student: But if I was being very honest with myself, I think I lack some of the basics like data structures, algorithms, patterns, and designs. Should I go to uni regardless of what you’ve just said?
Alex: I did those things at uni. One of the data structures I remember well (or at least I believe so) is trees. A couple of weeks ago I had to traverse a tree to calculate some value. I Googled the algorithm and copied it from Stackoverflow.
Now, I don’t think the work process that you and I would follow here would be that much different. In fact, the only difference might be that you judge yourself for not knowing the algorithm and think that you should go to uni and learn it. But I went to uni, learned it and Googled it anyway! I don’t judge myself because I know that’s what a lot of devs do in the end.
But you raise an interesting point. This is a matter of confidence. It’s easier to be confident when you know what others do (those who went to uni in this case). It’s only then that we realize we are not that different at the end of the day. What I read from your message is you should work on your confidence.
Student: I think that if I had the solid foundation that CS degrees provide then I could easily learn a new language and adapt to the market’s needs. Do you agree?
Alex: I tend to agree that having a solid foundation will help you learn new things. The same can apply to people who want to learn human languages. I tried to learn other languages (English, Chinese, and French) and I saw in the classroom that those who had studied linguistics could learn faster than the ones who didn’t. The same applied to dancers. I’ve seen a guy who learned a lot of bachata and became very good but he struggles when learning salsa. However, another friend who had a foundation in dancing (understands body movement, spacing, timing, etc) learned the new dance faster.
Following the same analogies, to be a holistic dancer or linguist requires a lot of work. In my experience, in practice, no one in London cares if you are a linguist or which path you took as long as you can communicate in English well enough. In my experience dancing, no one on the dance floor cares if you have an amazing balance and can follow the bit in 2 different ways as long as you can dance bachata properly and connect with the other person.
To be honest, I’d love to have the skills of a professional dancer and linguist, but in practice, how many new dances and languages am I going to learn in the next ten years? Probably not many.
The point here is, is it worth the effort, in your case, to create that whole new foundation? Because we can learn a language without having the perfect foundation - it will take longer, sure, but eventually you’ll make it anyway.
If it helps, in my 15 years of professional experience I learned and worked as:
I’ve learned a lot of tools and frameworks but worked professionally with mainly 3 languages (.NET, PHP, and JS) in 15 years. I think the most difficult part was to leave the comforts of the first language (.NET) I used to make a living from and start again as a Juniorish PHP dev because I knew nothing about the new language, patterns, frameworks and ecosystem. I’m not sure how much uni helped me take that initial step to leave my .NET comfort zone.
Another point is that you don’t need a uni to create that foundation. All the knowledge taught by any university is probably available for free on the Internet. In my opinion, uni, or any other counterpart for this purpose, should give you the structure, consistency, and guidance/mentorship to help you shape your skills. In the case of a CS degree, it will probably shape your thinking in a more critical, abstract and analytical way. At least that’s what I got from the university.
It’s probably true that depending on the uni/organisation that you choose, it’ll shape your thinking in a given “school of thought”. Example, if you chose a CS degree in Stanford or you chose a CS degree in the public university of Barcelona, at the end of both you might get similar knowledge if you end up choosing similar curriculums, but you won’t necessarily think the same way. I’m not judging one will be better than the other one. I’m saying that, hypothetically, the same person who builds software for a given business problem could end up with radically different solutions based on which of the two universities she/he went to.
Like I say, I’m a strong believer in having structure, consistency and guidance in learning because that takes us further faster. University provided that for me, as well as other things. For instance, I think my English would be much worse if I hadn't had feedback pointing out things I couldn't hear, or I didn't have certain role models that guided me and showed me what I could do. That’s actually the reason I founded React GraphQL Academy: to provide the structure, consistency, and guidance for developers who want to go further and faster in React and GraphQL.
Taking everything I’ve said on board, I think there are three questions you need to answer before you choose to take on a Computer Science degree if you want to learn how to become a developer.
1) What type of company would you like to work for?
If the company values a degree over knowledge and a can-do approach to development, you have your answer.
2) What are the skills those people that work for those companies right now have?
Look at the companies you aspire to work for and see what skills their current dev team - then:
3) How do you level up your skills to get on par with that team?
Find one of the people in the team you want to join and ask them how they got their skills and if they’ll be your mentor (I’m not sure how likely it is they'll mentor you, but if you don’t ask you won’t know).
At React GraphQL Academy, we aim to upskill developers who want to learn one of the best and most up-and-coming languages today: React and GraphQL. If you or your team are currently looking to expand your skill set, our array of training programs are here to help. From week-long intensive bootcamps to part-time trainings, we can work to your schedule to ensure you deliver the highest quality work possible.
Want to find out more? You can also contact our friendly team for a chat.
Disclaimer: I just wanted to point out that while I believe wholeheartedly in everything I said in this conversation with a former student, I did take a Computer Engineering degree at a public university in Barcelona. However, although I completed all the lectures and successfully passed all the exams I didn’t get my degree because I didn’t complete my graduation thesis.
Share this on:
Comments? Shoot me a tweet @alex_lobera !