5 months have passed since I got finally hired for a company based in Valladolid (Spain). Now I’m a member of a team which uses PHP, Symfony 2.8 and MySQL for surveys data representation.
On this months I’ve refactored their code base to follow better code practices, increase performance and implementing the automatization of scss compilation/minification. Besides, I’m the main developer for a whole project. Is a pretty good start for someone who didn’t know anything about development 2 years ago. Don’t you think? :D.
So I think is time to be one of those new developers which blogs about the paht followed to get his first job.I don’t want to bore you writing about all the steps I made, though (they are already written in this blog). So, I’m going to keep it simple and just go straight to the important stuff (which is why you clicked the link in the first place). These are the questions I had during my journey and what are the responses I finally came out with.
1.Which programming language should I start with?
This is a very difficult one, and the very first anyone asks himself once they’ve decided to give a try to this development thing xD. The difficulty of this particular question comes because is such a generic question that there’s no straight answer. It depends a lot of what are you trying to accomplish. Thus, the first thing is to ask is actually: What I want to develop? in my case I started with Python which is really beginner friendly and because at first I was aiming for Bioinformatics (which I no longer do). I would wrap the first choice in these 3 categories: Web Development, Mobile development, Video game development. Of course there could be more that these 3, but with these 3 we can gather the majority of the current industry.
- For mobile dev: Java
- For videogame dev: C/C++
Start with one of these and try to stick with them as much as you can until you think you have to move on. Learn a language at the beginning is quite simple, there’s a lot of material out there for beginners. This is not the situation when things start to get complicated, though. So, we are tempted after learning the basics to swap to another language and the process starts again. Don’t do that as much as posible, really. I got really overwhelmed because there where a lot of cool languages and tools to learn that I used a lot of my vital force jumping from technology to technology without achieving anything really. If I’d spend more time with a single language to reach the advanced topics sooner, my life would have been much more easier. Really, I mean it.
When it’s time to learn about frameworks, do a research for you desired job position and see what they use. I almost jumped straight to learn React as JS framework. Turned out that no one in Spain uses it, so it would have been useless. That’s why, for increasing your job opportunities, look for the tools used in your surroundings.
If you still can’t make up your mind, I would suggest you to pick the language/framework/whatever that makes more easy to you to find resources and people to talk about (online communities, meetups, etc.)
2.Self driven online education or formal education?
If you can, I suggest to go for the formal education, at least here at Spain makes the job search much more easy. It also provides you with some knowledge level that companies will recognise at once. It may sound discouraging if you are willing to be 100% self taught, but the reality I know is that the little piece of paper matters much more than I’d like. Doesn’t mean you can’t get a job without it, though. It just will be more hard for you, that’s all.
In my case I did a profesional education in Web development (2 years long). As educational system, it’s completely outdated and disappointing (I had a teacher that didn’t even know what stackoverflow was). But as I said, the paper matters. However, the good thing is that at the end, I did 3 months of internship that gives you real life experience and even the opportunity of being hired afterwards (not my case, though).
So, formal education is important, yes. Nevertheless, I strongly encourage you to don’t stick with these “oficial” programs. Complement them with the education of your choice. And by this I mean books, online communities, MOOCs… you name it. What really transformed me into this web developer challenger, was all the self-learning I did. Podcasts, FreeCodeCamp, Udemy, Udacity, Coursera, CodeNewbie … all this sites are bookmarked in my web browser and were what filled out my Curriculum vitae, since I didn’t have prior experience. Besides, I made my own specialization (JS developer) with these resources, which is important in this industry. Specialists over generalists (Oh! This reminds me so much my ecology classes :P)
So, for being clear about this question which I think is really really important. Formal education is needed for achieving certain salary level (or even the job), go for it and complement with the online education you want. Besides If the complementary resources can be strongly related with your formal education (languages and tools), the better (because this way you can concentrate more your efforts). Sadly, this is hardly the case (there is little to study about web development in computer engineering, for instance) and it’s ok if you self-study anything less directly related.
3. Should I have my own blog?
Yes!. That was something I first hear at CodeNewbie and then confirmed by Scott Hanselman. At the beginning you might feel lazy about doing it, I felt it as well. However, it was one of the greatest decision I’ve ever made. This is why:
- Probably it has been noticed already that I’m not a native English speaker, so starting this blog in English have done the difference for my skills in this language so needed for a developer.
It’s the best presentation letter for any company. It presents yourself as a proactive person, shows the technologies you work with, projects.
It’s a space you own on the internet, so you own your content and not any company with a TL;DR privacy terms (aka. Facebook, Medium, Twitter).
It works greatly as learning system. Forcing yourself to explain some new topic to other people helps you to find out if you get the idea or not about what are you studying.
You can use it as an archive for all the things you learn. This is something that I’ve been thinking lately over the months I’ve been working. There’s no need for extremely long blog posts, small tips or problem resolutions could be equally good (or even better).
4. Formal education + self-study + write a blog … when do I get spare time?
I want to be concise on this one just because there are a lot of posts talking about the work-life balance on internet. The 2 principles I follow are:
- Have a to-do or priority list to decide what to work at during your productive time
Set a time when you simply stop working and do whatever you feel like it. In my case is 21:00h during the week and after lunch during the weekend.
5. Which IDE use?
The one you like the most but with VIM integration xD.
Nowadays I’m using the simplest tools I can for developing. The thing is that the IDE is not a unique program (and there’s none that will match all your actual and future needs), so using little programs for every task allows me to change them freely depending on my needs constructing and customizing my own IDE.
Currently I use SublimeText3 in vintage mode (Vim mode. Yes I meant it at the first sentence), the git console and xampp. The important thing is using a good editor that allows you to expertise on it and be as productive as you can. By using sublime complimented with more tools I have that text editor, and by using it in vim mode, it allows me to learn more about vim and write on any Linux shell when there’s need to (Like git commits). So I almost have the feel of being on the same text editor all the time.
I think this is enough for now :D. Thank you for reading. However, if you have any question you would like to ask, this is kind of an AMA so, feel free to let me a comment and I’d be glad in answering as good as I can.