Ivan Neto
Posted on May 4, 2018
When we are just students, getting our first jobs, many questions come to mind:
- What programming language should I learn?
- Should I pursue a more scientific oriented career?
- What are the types of jobs related to the technology I want to work on?
- Where to work? What kind of company?
- What has changed recently?
- And many others...
Such questions are normal and healthy at that time. We have to make a lot of personal and professional decisions during life. In this post, I will show decisions I made, my opinion about key issues and share some interesting cases that happened to me. Things I'd like to hear when I started.
Programming Languages
This is indeed one of the most asked questions. Should I learn Java? Python? C? Ruby? JavaScript? XYZ? Should I learn all languages in the world?
Do languages matter?
Short answer: No.
Fair answer: Yes and no. They matter to learn their differences, paradigms, how they implement object orientation, design patterns, how they deal with memory and the OS. After some time, they are merely tools that you learn how to use in one day or two. You'll probably stick with one, work a bit with another, and have fun with two more. In the end, it's just a matter of choosing the right one for the appropriate job.
A couple of years ago I learned Python and a friend of mine, Java. He got a job quickly, and I didn't. I genuinely liked Python and he chose Java in order to find jobs. I could get a very good job and enjoyed it. If I had quit, it would have been difficult to find another one, though. His job wasn't that good, but he could quickly find another job. There is an inevitable trade-off.
Technologies
What I'd say about technologies is about the same, but as soon as you narrow down your knowledge to some area, there are categories we could easily fit each of the ones we'd want to learn. They represent essentially technologies that:
- We work with;
- are related to the ones we work with;
- complement it;
- we just want to play around with them;
- we find an opportunity to learn them.
As a web developer, I worked with Python language, Django framework as related technology, MySQL, PostgreSQL, Redis, JavaScript to complement my work. That was typically my stack. I played around with Swift because I wanted to learn iOS development and I had an outstanding opportunity with Pyramid.
Opportunities
One of the most significant things about a professional is its rarity. Technologies play a critical role regarding the transition between keeping looking for jobs and being disputed by companies.
There are many Python developers around. Not so many with experience in OpenCV and OCR related technologies. In a certain company, there was a chance to work on a modest project to detect dirty and broken walls in a room. The dev chose to work on it so now she remains as part of this group.
Whenever I have the chance to grasp something new or do things others devs refuse to, I'm very inclined to do so. The consequences of accomplishing that are often extraordinary. Once I learned a legacy system only one guy maintained and when he went on vacation I could take over. Bit by bit, I took the "legacy system maintenance" role from him so he was finally released to do more important stuff and I became essential as well. When we had to remodel it, I knew most of the company's business rules.
Another primary thing that assists the process of learning faster is code reviews. Even if you are a Jr dev, go ahead and review a Sr dev code. Just ask questions about implementation, approach or business rules. Next run the code locally and play with the changes. Inspect modules, classes, function returns. This improves considerably with your growth anywhere.
Market
Keeping an eye on what's going on with the market is also a very good step towards increasing the chances of getting more opportunities and being a rare professional. The company and the job request from you, but the market also does.
If we go from 2000's until now, it's possible to follow the evolution of the web, for instance, and the arising of many jobs related to adding rich apps, audio, and video. We saw the advent of the smartphones and we could specialize in mobile apps development. We also had a front-end boom, with many possibilities of JavaScript frameworks, chat and home automation, big data, data science, and more recently, we have progressive web apps, cryptocurrencies, and blockchain.
Additional Questions
Should I try a more scientific career?
It really depends on your background. If you already had the experience of working on a paper and submitting it to a journal or similar, that makes things easy. Or if you like data analysis, it's possible to find hybrid jobs.
What are the developers "rank"?
That's not well defined. The following posts may help:
7 Ranks of Coderhood: Coder, Programmer, Computer Scientist, Developer, Engineer, Architect
Lorenzo Pasqualis ・ Nov 30 '17
Corporate or Startup?
You should try both and see which one is the best fit for you. I tried startup first because I could have more freedom and work in different areas I wouldn't have the opportunity to work in a big company. I talked to clients, gave presentations, gathered requirements, implemented solutions, deployed, worked even at the financial part of the company.
Should I consider a remote job?
For sure. I have been working remotely for seven years, and part of Toptal for four years, and I say it's really straightforward to find a remote job. Even non-tech companies are starting to allow remote employees, and it's working well. Some hire remote for a period of time, some have a remote and an on-site team, and some are constituted by only remote people. Even the CEO!
If you want to pursue a remote career, be sure to follow this.
Below is a list of places to find remote work:
- Toptal - https://www.toptal.com/#book-tested-programmers
- Hackhands - https://hackhands.com/
- Vanhack - http://www.vanhack.com/
- Remote OK - https://remoteok.io/
- Upwork - https://www.upwork.com/
- BairesDev - https://www.bairesdev.com/
- AngelList - https://angel.co/
- Remote.com - https://remote.com/
- Codementor - https://www.codementor.io/
- Indeed - https://www.indeed.com/jobs?q=developer&l=remote
- Dice - https://www.dice.com/jobs?q=&l=remote
That's it
This post has a lot of my opinion and past experiences, but I hope it helped in some way. If you disagree or would like to discuss any specific topic, just comment and I'm happy to talk. Thanks. :)
Posted on May 4, 2018
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 25, 2024
November 21, 2024