Software engineering is one of the most intriguing and in-demand occupations right now. You've probably heard about how wonderful software development is, and I agree that it excites me every time I hear about it. However, I suppose we should be aware of the flip side of the coin because let's face it no job is perfect.
I conducted a Twitter space recently on this topic where over 20+ speakers and more than 100+ active listeners were present and shared their views on this. For more such spaces on software development, you can follow me on Twitter.
Addiction to Work
There's a good possibility you got into this field because you like coding and solving complex challenges. Coding is a highly addictive activity. Something doesn't feel quite right till the bug is fixed.
Though this will benefit you by allowing you to complete more work in less time and impress your boss, we must keep in mind that this comes at a cost.
- If you aren't a geek, you can relate to this: we underestimate the code, which requires us to commit more time to it than usual, potentially causing plans with friends and family to be canceled.
- If you don't get up from your chair until the glitch is fixed, you could be sitting for up to 8 hours, which could cause major health problems if done on a regular basis.
- Terrible back and neck pains.
- Computer Vision Syndrome
Take a break
- We often forget to take breaks need to remind ourselves to take a break.
- You can download Stretchly the break time reminder app ( It is also open source!)
Disconnect from work
- Separate your workstation from your bedroom or your resting space.
- Keep your phone free from all the work apps.
Constantly Keeping Up With New Technology
Let's see if any of this looks familiar:
- You feel that you are lagging as you are not using the latest tech stack in your current project.
- You feel like jumping to every other thing and learning multiple tech stacks at once.
- (For senior developers) You overhear your subordinates discussing a tech stack about which you are completely unaware, and they expect you to be an expert.
Because the pace of new technology is so fast, you can't keep up with everything, yet people expect you to know everything at least to a basic level. To keep up with the latest trends and be an active member of the community, you think need to be well-versed in everything.
How to overcome this:
You need to realize that learning multiple things at once results in reduced productivity. Tim Buchalka who has taught over 1 Million students has explained it beautifully in this video.
(for the senior software devs) Flip the question, ask your team members to answer this:
- Can you explain it to the entire team and make it so simple that no one needs to study it?
Project Managers and Product Managers Unrealistic Demands
There's a good probability that your boss doesn't have a technological background. They are also under pressure from their superiors to release a feature in a short period of time. This can result in low-quality code, as well as a weaker foundation for future builds.
You are annoyed and furious with them, which leads to an unhealthy relationship between you two and a loss of trust. This need not be a case, save this bad blood by following these.
Communication is the Key
- Have a healthy discussion, outline why the task is unrealistic.
- list out the points in detail and the steps why it is unrealistic.
- Provide them with alternatives.
- Cut the problem down into smaller pieces, why the requirement is coming in and how can we go about it in a more realistic way.
- Discuss the (LOE) Level of Effort that would be required, so that you can get a timeline for the issue.
Understand your Boss
- One of the most common issues among software developers is a lack of awareness of the commercial side of the business and the chain of command.
- After reading John Sonmez's following articles, I got a tremendous degree of clarity:
Unhealthy competition for compensation
How many times have you checked out Blind and have been so addicted to it that you had to uninstall it?
There are a lot of developers who are just running after money hence switching companies after 6 months.
Constant comparisons between peers regarding salaries and stock options have made things extremely competitive, which is affecting their happiness.
Do you feel a constant need to improve yourself to get a better salary or offer?
- This definitely is a great push for getting better roles. But, at some point, you will overwork yourself as there is no end to this greed. Hence, you will stop enjoying your job.
Switching is not that easy
- When you switch so frequently, your integrity gets questioned and this would be reflected in your resume too.
- It would be clear that for you, money matters more than software.
- Also you would have to start all the processes of knowing people, building trust from scratch.
Life is not all about money
- Money should not be the driving factor. A good work-life balance, good peer group, work on challenging problems matters more in the long run.
Maintaining Legacy Code
It is just really scary to touch.
Legacy code can be a challenge to maintain:
- The code is not well documented.
- The code is not clean.
- Fewer resources to integrate it with the new trends
- You need to step up and change it, if you do not change it then it becomes a dark side.
- The most important thing you can do to go up in the ranks at any company is to take on more responsibility. Legacy code is an area where no one wants to get involved.
- This is the best test. A sign of a really good engineer. Take this chance.
What are all other challenges do you face in your workspace? Comment down below 👇🏼