Most people will tell you how great it is to be a software developer.
You earn a lot of money, can work from home, get free food and drinks, and more. But the truth is not quite as rosy as described; there are a few points in software development that no one has told you about so far.
Never an Expert
There is so much to learn that it's impossible to be an expert in everything, except in a specific field or niche.
There are only two possibilities:
- Learn a skill as well as possible and stay in that niche.
- Learn a little from everywhere, but don't be surprised if you can talk about everything on the surface, but lack depth.
If you choose to learn as much as possible in every area, it's important not to be distracted by small things. Take web development, for example. It's both hated and loved. New fancy frameworks, tools, and CSS tricks emerge every day, and many disappear as quickly as they come.
You might not become an expert in one area. However, if you keep switching to new fancy tools without consistency in sticking to something else, you won't have anything to be ultimately proud of.
Don't get distracted.
Burnout is real
There is so much to learn. Just when you think you've mastered one thing enough to work with it, a new problem arises, and you find yourself diving into the documentation. This example can be applied to so many situations.
Lifelong learning – that short phrase applies to development as well. There is always work, no matter where or how; anything with a screen, or even without, can be explored.
In most cases, burnout is self-inflicted. Looking back at what I've learned so far in my retraining, I would say it's quite a lot. However, this amount, in my opinion, is not enough to establish oneself in the professional world. So, because I enjoy it, I've also taught myself many things privately. I've read about CSS, learned Bootstrap during my retraining, then moved on to TailwindCSS in my personal time. In school, I learned MySQL, then encountered Postgres, and came across something about Prisma, and the list goes on endlessly.
Don't overwhelm yourself, take breaks. It's okay not to know everything immediately.
Soft Skills
When you look at Senior Engineer Developers, chances are high that not all of them have as much programming experience as you do.
Many people in this field are generalists rather than specialists. These individuals have a broad understanding of various technologies and can effectively cater to clients/colleagues, but they may not be experts when it comes to diving deep into the code. It's not necessarily about these individuals writing all the code; rather, they excel in creating pseudo-code or articulating tasks/explanations to their counterparts.
But one thing they must excel at is communication.
Whether you want to climb the career ladder, land a new job, or start your own business, you need a good understanding of how to communicate with people. And this isn't about using if-else statements and technical jargon, but rather about direct and clear communication.
It's not as crucial how well you can code if people don't enjoy working with you. That won't take you very far.
Never be perfect
If you're a perfectionist and also tend to procrastinate, you'll find the software development environment challenging.
There will always be moments when you're not happy with something. You need to find the sweet spot between the right balance of speed and quality. Yes, we no longer live in a time like the early 2000s when the internet looked like this:
Websites have changed, design has improved, and people have gained more knowledge of UI/UX. However, you should still focus on the essential things – that your software runs and functions. No matter how much you test your application and change a button from bg-stone-400 to bg-stone-500 (Tailwind CSS classes), there will always be a better or more beautiful result.
I'm not saying you should deliver half-finished projects, but learn to understand that nothing is perfect from the outset, and some things take time to evolve.