The Programmer Bill of Rights Extension


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


 

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.


About Steven To

Steven To is a software developer that specializes in mobile development with a background in computer engineering. Beyond his passion for software development, he also has an interest in Virtual Reality, Augmented Reality, Artificial Intelligence, Personal Development, and Personal Finance. If he is not writing software, then he is out learning something new.