Being a software developer (architect, lead, programmer, software engineer, web developer, coder, or whatever other title you may have) isn’t easy. At least it isn't if you're someone who likes to keep themselves up to date with the latest technology changes. In this article, I will share some of the challenges software developers face today and maybe a few tips on how to overcome them. When I say software developer, that means anyone who is involved in building software and writing code.
But, before that, let me ask you!! What is your biggest challenge being a software developer? What is that one thing that always makes you say, “Oh man ... I hate this.” Is it participating in too many non productive meetings? Or Is it dealing with too many tools and apps? Is it your boss? Or the company culture? Or anything else? I would love to hear from you. Please share in the comments below.
A little background on me. I’ve been writing code since 1997. I graduated in 1997 and migrated to the US in Feb 1998. That’s 25 years now. Even though I do not write code every day, 8 hrs a day, I still find some time to learn new things and explore. I try to stay up to date with the latest upgrades in C# and the .NET world.
Here are some of the challenges I ran into being a software developer.
1. There isn’t enough time in a day.
Do you often feel like there isn’t enough time in day to get your work done? How about learning new things? I personally feel like there isn’t enough time in a day.
Software is always changing and so are the products. To stay relevant, you must upgrade yourself, otherwise someone else will take your job. That means, outside of your job, you must spend time learning and exploring.
Besides my day-to-day full-time job, I spend at least 2 hours a day learning new things. Personally, I am always working on new technologies, so I learn a lot. But I’m sure many of you do not work on the latest technologies. Some work on old technologies. Some work on bug fixes and improvements in existing systems.
So, how do you find time to learn new things?
I call this “skill” stealing time. Every day, you need to figure out how to steal some time from your day-to-day job and learn new things. This can be by visiting websites like C# Corner and reading what is the latest. It can be following product teams on Twitter and so on. The point is, you need to put aside at least 1 hour daily to learn new things. It can be 30 mins in the morning and 30 mins in the afternoon.
Try to pick a topic of your interest, visit websites, and signup for free or those online learning trainings. Many of them are free. Hangout in forums and try to solve problems on the technology you learn.
At least twice a year, ask your company to send you to attend tech conferences. Join virtual events and podcasts.
The point is, there is so much free content out there. Figure out what you want to learn and make it a habit.
2. Meetings! Meetings! Meetings! Oh My …!
How many of you are frustrated with those meetings that don’t add much value to your day to day job, but you still have to be a part of them because your boss is bored with his life ๐. I know some meetings, like Scrum, make sense. You get together daily, plan your day, and focus on your tickets.
What about those emails where you just sit and look around while business owners are figuring out what they really want?
If you’re on one of those meetings, what you can do is, side by side, open a new website or app where you can skim through the latest news and announcements.
If you have option to pick a time, pick the time when you are not productive. For me, I tried to set all my important meetings in early morning and not so important meetings in late afternoon when I’m not productive.
Scheduling meetings on certain days and same time also helps.
3. Too many tools.
I often work with several clients and on several projects. Each client uses different project management and communication tools. For example, for task management and communications, I’m juggling between Teams, Asana, Jira, Slack, Skype, Google, Zoom and several others.
Wouldn’t it be nice if there is only single tool that can manage all of the above?
If you have a choice, try to move everything on a single platform. I think Microsoft Teams is doing a great job by bringing entire project management into a single tool.
I would love to use just a single tool but unfortunately the decision is driven by the clients.
4. Requirements. Make up your mind dude.
How often do you get frustrated because business keeps moving their requirements? You can we build and deliver on time when the requirements keep changing? We can’t hit moving targets.
It is important for you to make sure with the business product owners to identify requirements clearly and set some goals and deliverables. Once the goals are set, there should not be any changes in the requirements. If the requirements change, make sure you redo the entire process and let the business owners know the impact of changes in the delivery time and cost.
5. Emails. Everyone is included.
What is your thought on hundreds of emails each day flying back and forth, specifically on deployment and infrastructure issues? As a developer, I don’t have anything to do with it. Some of it I don’t even understand. If OKTA SSO is not working, why do I have to be involved in those emails?
Some people like to involve everyone in email threads. The bigger the company, the larger the group, the more time gets wasted.
Recommendation: Check emails periodically. If you don't get any urgent emails, check them during your less productive hours or when you need a break from coding.
6. Notifications. Every tool wants your attention.
Unfortunately, we can’t disable notifications on some apps. For example, Teams or Slack or Jira. We don’t know when an important task may need our attention. Because of this, I get so many unwanted and useless notifications. At a matter of fact, some notifications I even get from previous clients who we may work again.
Recommendation: Disable notifications that are unwanted. Install apps that you don't use anymore.
7. Updates! Updates!
Today, software products, tools, and languages are updating almost every few months. For example, if you work on ASP.NET Core building Web applications and use Visual Studio, you probably needs to upgrade yourself at least twice a year. Every year, Microsoft team announces 2 major releases of .NET, C#, and even Visual Studio. This is related to #1.
While I highly recommend reading updates and new features, you don't need to install every latest update. As a matter of fact, some companies won't allow you to install.
8. Boring Work. Maintenance.
Are you stuck on working on a large old project that requires ton of maintenance, bug fixes, and minor feature additions? I feel sorry for you. What boring work. I remember being a software consultant, I was hired to be the architect on a project but end up adding features to an old project that was high priority for the client.
The best way to get out of this work is, ask your manager to find you a better job or at least side by side work on something else that is not boring and gives you an opportunity to learn something new.
9. Long Onboarding Process.
I am amazed how long the onboarding process may take in some companies. I have friends who were frustrated to see it takes weeks to get them onboard and access the project. This is bad for the company itself. Unfortunately, it seems like there is no simple solution to this problem. From getting a machine to access to project and build it, it takes weeks.
While there is nothing you can do about the onboarding process, the best way you can utilize your time is get access to documentation and communication platforms so you can start reading and learning while you wait. If you are going to write software for a specific industry, which in most cases is yes, try to learn more about the industry and the businesses. Try to also meet and talk to people about the business. By the time, your machine is ready, you will already be ready to go.
10. Enterprise Security! Let me be the Admin of my machine.
If you have ever worked for a large corporation, I am pretty sure you have gone through the pain of getting admin access on your own machine. You can’t install applications, you can’t upgrade, and technical support is always slow.
How about VPN performance? How many times you just wait and wait because the VPN is too slow or not working as expected?
Recommendation: I learn to use my time when the VPN was slow for tasks such as emails, meetings, and others.
Get productive. Now!
Do you feel like you are not being productive? Check out Top 10 Tips to Increase Productivity to get more productive.
Summary
The life of a software developer is not as easy as it seems. Software development requires constant upgradation and learning. In this article, I discussed some of the points that frustrate me as being a software developer. I am sure you have your own frustration. Please share what frustrates you the most being a software developer. Looking forward to see your response. Thank you so much!!