All professions have occupational hazards and risks, and software development is no exception. While it's true that we rarely have to deal with man-eating sharks or explosions, ignoring some of our profession's challenges can lead to lots of trouble.
The good news is that most of our problems are the result of some form of neglect. Fixing them is just a matter of becoming aware of the problem and caring enough to take action.
Neglecting your sleep
For reasons I can't understand, not sleeping enough is now a fashionable thing. Every time I'm out with a group of friends and the conversation gravitates towards work, there will invariably be a member of the group who starts bragging about sleeping less than 5 hours per day and 'giving it all' for their current project. And for the last project, and the one before that too.
I believe this trend is fueled, among other things, by:
Media that portrays the overworked individual as an ideal we should aspire to become: a strong person willing to make sacrifices for the sake of the project.
An inflated sense of self-worth and the belief that we are irreplaceable at work.
What these portrayals forget to reveal is how sleep deprivation hurts our overall performance. When we sleep, a series of important neurochemical processes take place, our brain freshens up and the connections between our neurons strengthen. A well-rested brain is also sharper and more creative, making it easier to tackle mental challenges at work. It's not about working more, it's about working better.
The other important thing is that, while your contribution is important and valuable, tasks can wait until next morning in 99% of the cases. Very few situations actually demand to work for more than eight hours. And if you couldn't find a solution on the 14th or 16th hour with an exhausted brain, the best thing might have been just going home, sleeping enough and trying next morning.
Jason Fried said it best, being tired isn't a badge of honor. Do yourself and your career a favor: make sleep a priority.
Poor diet and sedentary lifestyle
Healthy bodies are important not only because, in general, we don't like dying. There are proven benefits for our mental performance and creative output in doing regular physical activity and eating well.
We spend most of the time sitting in front of a monitor, in a meeting room or in front of a whiteboard. If you think about it, there are not many natural opportunities for us to do something good for our health at work.
It doesn't mean we all need to be able to run a whole marathon (but I need to recognize you are pretty impressive if you can). It's more about recognizing the importance of a healthy body and taking responsibility for our own health.
We are one of the few professions where we define ourselves by the tools we use. When asked about what we do for a living, answer's like I'm a java software engineer or I'm a React developer are common. What would we think if we started to notice a rise in hammer carpenters or wrench mechanics?
Why should we identify ourselves by the tools we use and not by the things we can build? I am confident that a good Django developer will be equally good at working on a Rails project after a couple of weeks. If you are experienced in building Java enterprise software, I feel confident in your skills for handling a project in C#. The difficulty in software development is in the domain problem and in how to craft a maintainable solution, not in the programming language.
Another subtle issue with using programming languages as tags for our careers is the risk of becoming tool zealots: our programming language or tool of choice is the best thing that has ever existed and all the rest is absolute trash. Identifying so strongly with a specific thing pushes all the tribal buttons in our brains: we become unable to admit anything wrong with our group and dislike everything about all others. Have you met people like this before?
Don't be a hammer carpenter, you are so much more than the tools you use.
There's a lot of fantasy around many software frameworks and libraries. Many of them are genuinely good tools, and when used in the right scenarios they can save a lot of time and money. The problem starts when people start making the wrong choices just because they feel this new technology is essential. Mistakes like re-writing big sections of perfectly good software every time a new library becomes super popular.
Even worse, a lot of times hype can lead management into starting totally unnecessary projects by inflating the virtue of a given piece of technology. Chatbots were all the rage a couple of years ago, and a lot of resources were spent in creating platforms centered around them that nowadays few teams use. Examples like that are common, and in almost every software department there are stories of overhyped projects few people ended up using at all.
Fred Brooks wrote about the role that technology and methodologies play in productivity in one of the most important articles of our field: No silver Bullet. The article states that there is no single development, in either technology or management technique, which by itself promises even one order of magnitude (tenfold) improvement within a decade in productivity, in reliability, in simplicity.
New shiny frameworks will not fix all our problems or give us a magical productivity boost of 10x. They are important options to keep in mind, but 'playing with cool new toys' should not take part in choosing technologies.
We should not let the hype cloud our judgment on what the best tool for the job is.
What to do next:
- Share this article with friends and colleagues. Thank you for helping me reach people who might find this information useful.
- Go out and do some exercise. Jogging 20 minutes per day will do wonders for your health.
- Start taking your sleep seriously. Create a sleeping schedule and respect it. In a couple of weeks you will feel much fresher and your brain will work better.
- You can find helpful books to continue investing in your carrer in the recommended reading list.
- Send me an email with questions, comments or suggestions (it's in the About Me page). Come on, don't be shy!