I started my career as a Java developer in 2006, and it is almost 15 years that I have been continuing as a software developer. Along the way, I have experienced some amazing things, and a lot of shitty things as well. As I am not a super smart person by birth, I ended up learning many things in the hard way.
In this article, I would like to share some of my learnings.
You will always be working in a time and resources-constrained environment. So those who can get things done within the given constraints will succeed. Your ideals won’t help you because you are not living in an ideal world.
You can brag about Clean Code, Clean Architecture, Domain Driven Design, TDD, BDD, etc all day long, but what management wants to see is releasing the software on time as per plan. If you talk about the importance of Code Quality, Long term maintainability they will talk about Need of the hour, Time to market, etc. In this argument, you can’t win, trust me.
Everyone has a great suggestion for someone else’s problems. When they face the very same situation, they may struggle more than you. So, just because someone gave you clever advice don’t assume that everyone else is able to handle these difficulties smoothly, and only you are struggling.
Someday you too, yeah YOU….the passionate developer, get bored with writing code. Have some non-coding habits too so that you won’t go crazy not knowing what to do with your free time.
Age is NOT just a number. With age several things change. When you are a bachelor you have all the time in the world to play with all the cool stuff. But once you get married and have children then things change, and priorities change. You won’t have that much time you used to have. So use your time wisely when you still have it. Learn as much as possible in the early days of your career because later you will be busy learning how to talk diplomatically 😉.
You will not get tired if you are doing something that you love. So, do something that you really LOVE at least for a few years in your career. Later you can go on and write boring REST APIs to earn money 🤑.
While having a debate with strongly opinionated people don’t try to explain why your approach is better. They won’t listen anyway. Ask how their approach works in the cases you feel doesn’t work.
Your super clean code written in the modern coolest language will become a legacy in a few years and will be rewritten in something else. Your good relationship with co-workers will help you throughout your career.
Before saying, “This existing application code is crap, and we should first rewrite it from scratch in a cleaner way before adding new features”, take a moment and have a good look at the code you wrote a few years ago. Yes, that code of yours also may look crappy, but you know under what circumstances you have written that. The same may be the case for other’s code. Understand the circumstances without judging too early.
With a bit of commonsense and googling skills you can become a decent developer. Learn how to debug and narrow down the problem then you will become an awesome developer.
Learn to say I don’t know more often and then see how simple life is.
If you got accepted/rejected in an interview, don’t take it entirely upon yourself. There may be many things at play. Interviewers might select you because they have rejected the last 12 candidates, and there is pressure to go easy in evaluation. Interviewers might reject you because they don’t want a highly skilled developer career to burn into ashes in their shitty company. So take it easy.
While it may sound very cool to hear “Your team heavily depends on you”, you are actually digging your grave…very slowly.
Are you eager to become a Tech Lead or an Architect so that you will have the power to design the perfect system in the way you always wanted to?. Well, sorry to be the one telling you that you may end up sitting in long boring meetings, trying to convince the people who don’t even want to hear you, writing the documents in Confluence etc more than getting your hands-on system design.
It is very hard to think about improving the performance of that one tricky query when your neck is paining severely. So, first go get the proper work desk setup before it is too late.
Your monthly paycheck is not entirely the result of your own hard work; it also includes lots of help from open-source developers, blog posts, StackOverflow answers. Don’t forget to thank the people who helped you.
If at all possible help somebody to build their career, that is more satisfying than being the highest paid developer in your team.
Have some long-term career goals so that you won’t lose career focus due to temporary day-to-day frustrations.
While it feels good to be in an echo chamber where everyone will agree to everything you say, have someone who can tell you that you are wrong on your face.
If you realize that the work culture is shitty, and you can’t change anything there, then get the hell out of there as quickly as you can. Staying in such environment for too long will make you loose self-confidence.
We don’t have an infinite amount of time to learn and master every programming language, framework, and tool. So, learn what may help you in the near future, and you can learn other things if need be. Follow Purpose-Driven Learning than just randomly tinkering around with everything that appeared on Tech Twitter or Hacker News.
As you gain more experience, you will be spending more time with people than code. So, if you are an “I hate people management” type, then understand that there is no way around. So try to improve soft skills.
Learn how to ask for help. If you are asking someone to help you then provide as many inputs as you can and specify the exact problem you are facing. Let me tell you, simply messaging “I want to build a highly scalable system. How?” or “I am getting 403 error from OAuth 2.0. Why?” won’t get you any answers.
Life is too short to make all the mistakes by yourself and learn from them. Find a good mentor and get some guidance.
Learn to say NO. It is very difficult, especially in India, to say NO for unrealistic deadlines because many managers can’t even conceive the idea of hearing NO from a subordinate. But over the time they understand when you say NO mean NO. Even they start respecting you if you keep delivering on time when you say YES.
Your past glory won’t carry forward to your new company. You have to prove yourself in new organization before expecting them to realize your worth.
You need to ignore certain unpleasant things at work. Yes, your fellow Java developer who doesn’t even know how to set JAVA_HOME environment variable will get an “Employee Of The Year” award, another person may get “Quality Champion” award just because they share a cigarette lighter with a manager in smoking zone. There are certain things that are beyond your control and focusing on them only demotivates you at work. Learn to ignore those things, not easy…but need to learn.
If properly used, Social Media platforms like Twitter can help you to learn from experts, build network and become part of a larger community. But, make sure to take breaks and think for yourself about what you want to do instead of doing what everyone else is doing.
On weekends, it is perfectly ok to stay away from Computer, just chilling without doing anything as opposed to what “Productivity Gurus” tells you on Twitter :-)
It is very difficult to focus on work when having health issues, so take care of health as a high priority always. Some simple habits like drinking more water, taking regular breaks and daily walking help a lot.