I’ve been meaning to write this post for a very long time - not only for others but also for what I wish I was told when I first started working as a developer. Hope you find this useful!
Software development is not a physically demanding work like farming or factory work, but you are spending a lot of hours sitting and starting at a screen.
You might be healthy now but unfortunately, as you age, your vision gets blurry, your wrists or back start hurting etc.
This might not happen to everyone - There are plenty of developers who are in their 40s, 50s and above without these issues, but why take chances?
Take a break from work now and then. Earth will still be spinning after you return from break.
There is a huge gap between what’s taught in universities and how we work in the industry. Unless you’re lucky, you don’t learn about how to use a debugger, source control, terminal, regex etc when you start your first job.
Make time to learn about these foundational concepts as you go about your job. It’ll be useful for your entire career.
Using Vi/Emacs doesn’t make you an awesome developer. Similarly, using Sublime Text or Notepad++ doesn’t make you a bad developer. Same applies for languages, frameworks etc.
If you can complete your tasks and feel productive with the tools, continue using it. Don’t tie your self worth with the tools you use.
Don’t blindly do something just because Google/Facebook/etc are doing it.
Each software project is different in terms of scope, business value, people involved, their skills, how long the project is going to be maintained etc.
Engineering is all about tradeoffs. Ask yourself: in which context a particular advice makes sense. This is the only way you’ll learn.
- Don’t blindly use Kubernetes/Golang/React/Mongo for a static website which can be written in plain HTML and served by a single Nginx box.
- If business urgently wants a throwaway website that will be only used for 2 weeks, don’t try to build it using TDD etc
Your job is not to write code but to solve business problems.
So, when you’re given some problems or tasks, try to understand what business problem you’re solving. Ask as many questions as needed for you to understand. It’s okay.
Once you know what you’re solving, there are good chances that you can come up with better solutions or solutions that can be implemented faster. Propose these solutions, most of times they’ll get accepted. Else you’ll be told why your solution won’t work in that scenario. In which case, you have learnt something and can make better suggestions in future.
You’ll be learning a lot of new technologies and processes now that you’re new. But over years, you’ll get comfortable and stop learning.
Technology advances super fast. While it’s impossible to learn everything new that’s coming up, it’s better to be aware of the new things that are slowly becoming the industry standard and learn about it when you have free time.
Your peers, leads, managers are all in the same boat. See if you already have learning sessions in your company. If not, you can suggest starting one and most of the time, people will be supportive.
Unless you have a really good memory, try to take notes about a particular process, technology, how to do x etc.
Most of the time, we end up doing something that we did 2-3 years back (vertically centre something in CSS, implement login flow, upload a file to S3 etc).
When you have notes, you can reach out to it and implement the solution quickly instead of googling about how to do it and scrolling through pages and pages of StacknOverflow and GitHub issues.
Even better, blog about it so that it also helps others 😊