While researching into workplace productivity for software developers, I ran into The Programmer’s Bill of Rights proposed by Jeff Atwood. Within the article, he describes six fundamentals that companies should provide for programmers, software developers, and software engineers to be successful and be as productive as possible. Unfortunately, companies are still denying these basics to their developers.
My goal in this post is to talk about the original six rights and propose four additional rights.
Every Programmer Shall Have Two Monitors
It is limiting to work with only one monitor. Often when you are developing software, you have your text editor, terminal(s), and IDE opened. Along with that, you probably have documentations and a web browser. Unless you have a 4K monitor, fitting all that content into a single screen is extremely difficult. With at least an additional monitor you can fit all the content you are working with, which spikes up your productivity.
Every Programmer Shall Have a Fast PC
To develop software nowadays a developer needs to run a lot of additional software. For example, development environments, database engines, virtual machines, web servers and etc. To run all these software, it requires a fast PC with a lot of memory. The faster a PC can build applications the faster the overall development process becomes. If I need to wait for five to ten minutes for my code to compile, then I will end up losing focus and go do something else like browsing the internet.
Every Programmer Shall Have Their Choice of Mouse and Keyboard
A keyboard and mouse are essential to the work of a programmer and their health. They are tools that programmers use to craft and create. Bad tools can lead to subpar results and less productivity. If the keyboard and mouse are hurting the programmer’s hands, they are less likely to do much work. Therefore, each programmer should have the opportunity to choose the tools he or she wants to use.
Every Programmer Shall Have a Comfortable Chair
Aside from a good keyboard and mouse, the next most important thing is a comfortable chair. Software development for many involves sitting in front of computer screens all day. If you are going to be sitting in a chair all day, why not have it be a comfortable one. Having a comfortable chair is good for the developer’s back and it makes their time doing development enjoyable.
Every Programmer Shall Have a Fast Internet Connection
Many tools are migrating over to the Cloud (online) nowadays. Not being able to access some cloud services may put a halt to a developer’s work. In addition, the internet gives developers access to plenty of resources. A good programmer never reinvents the wheel, when they can use a well-tested library that is available from a simple online search. This allows programmers to focus on solving problems.
Every Programmer Shall Have Quiet Working Conditions
Programming requires focused mental concentration without disruption. A programmer cannot simply start working immediately. It takes them some time (20 to 30 minutes) on cold start to load the context of their work into their short-term memory. When a developer is not interrupted, they will usually enter a state of flow, which is where most of the progress happens. Any time a developer is interrupted after a cold start, they might take five to ten minutes to get back into flow.
Additional Four Rights
The following are four additional rights I believe would make a great addition.
1. Every Programmer Has Access to the Big Picture Idea
Often time, developers are working on small tasks with a narrow description. They do not have access to the end users of the software they are building. This can lead to problems because wrong decisions can be taken. It is difficult to develop software that can evolve properly throughout development when the programmers do not have access to the end goal. To eliminate the chances of major problems from occurring, the programmers should have access to the business requirements.
2. Every Programmer is Free to Choose Their Preferred IDE
Integrated Development Environment (IDE) used to be restrictive, but nowadays build tools for IDE has become mainstream (IDE-independent). Therefore, developers can use different IDE and still work on the same project. In addition, most software management is through version control and most IDE has support for version control. By removing the unnecessary step of learning a new IDE, programmers can move into development faster with their IDE of choice.
3. Every Programmer Shall Have Admin Rights to Their Computer
This one should be simple to understand. If you deprive your developers of privileges to install new applications or run a certain application as root then they cannot make progress. Instead, they are spending their time trying to get around not having admin rights.
It is common for developers to install new software for different development purposes. They also need to be able to configure the system to suit their style. Restricting developers to just what is installed on a computer will ultimately lead to a low retention rate.
4. Every Programmer Shall Have Access to Ergonomic Options
Health issues pertaining to RSI (Repetitive Strain Injury), back pain, and eye strain is always a concern for software developers. Maybe not when they are young (the mid to late 20s), but later on. Ergonomic tools for programmers are more accessible in terms of price and options than it used to be. Every programmer should have the opportunity to an automatic stand up desk, ergonomic keyboard, ergonomic mouse, and computer glasses.
Additional Resources
- Workspace Ergonomics
- State of Flow Benefits
- Using Music for Productivity, Especially in Open Workspace
If you found this post helpful, share it with others so they can benefit too.
Does your company provide the bare necessities mentioned in this post for your programmers? Did this post change your workspace?
Leave a comment or send me an email at steven@brightdevelopers.com. To stay in touch, follow me on Twitter.