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.
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.
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.
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.
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.
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.
That's not well defined. The following posts may help:
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.
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
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. :)