A Programmers Essential Tools
Thoughts on the tools of the trade for a programmer
If you are starting a career with programming I urge you to seriously consider the tools discussed when purchasing items for your workstation.
The opinons below are going to be based out of my experience and as such should be considered with these details in mind. I am 5'11, live in the United States and work from home. I author code for front-end web applications, back-end web services and work with various management tools (i.e. Github, Google docs, etc.). In the past I was an Individual Contributor (IC) and spent the vast majority of my time coding. Easily 6 hours out of an 8 hour day. Now I am a manager who still contributes code. Resulting in far less coding but still with the majority of the day being hands on a keyboard.
I have been programming for a decade and am now starting to experiencing the health issues associated with not having an ergonomic setup. Primarly I recently had sharp pain in my forearms that prevented me from typing code. Currently and more subtely I have been experienceing achilles tendenities. After starting physical therapy I'm discovering the root cause is lack of supporting muscles in my calfs, glutes and thighs. I would describe my self as fit and in good health. Which was why I was so dumbfounded as to why I began experiencing issues with my achilles, preventing me from running, hiking, etc. The years of sitting at a desk for 8+ hours a day had caught up to me. I had not been activating the small supporting muscles vital to having good overall mechanics with the physical activites I get up to.
This year I've made some significant changes to my workstation setup to curtail these issues. I want to share my thoughts on the importance of these tools and ecourage you to consider where you spend your money on the tools required for this career.
Below find my thoughts on the tools essential to a programmer ordered by importance and when you should not skip on cost.
Keyboard
I can not over state how much you should invest in a quality ergonomic keyboard as soon as possible. This quintessential tool is your primary means for creating code. I put off purchasing an ergonomic keyboard for years. Until this summer when I experienced debilitating forearm pain. After asking around on the San Diego JavaScript keyboard channel I was recommended and purchased an Ergodox EZ. I was nervous about the drastic change from a traditional WASD keyboard to the split form factor of the Ergodox and the non-traditional modifier key layout.
While I am still getting used to the layout I can readily say I will never go back. Even with key placements in the layout which are causing more errors for me while typing. The Ergodox allows for customizing the modifier keys. This is something I weill need to experiment with at some point to see if I can reduce the error rate of unintended keystrokes.
It also provides a "layer" feature. This allows pressing a modifier which then changes all the key mappings. Increasing the amount and complexity of key combinations.
Recently the same company that produces the Ergodox came out with the Moonlander. I have not used this keyboard but it seems to be the next evolution of the Ergodox. The major change being a "columnar" key layout.
The sticker shock on this keyboard is real. Luckily I got one used from a friend. If you find yourself with an employeer budget or the ability to afford one I highly ecourage you to cut costs elsewhere and invest in an ergonomic keyboard.
$354 Ergodox EZ
Chair
8 hours a day. That is roughly how much time your butt spends in that chair. Making it the second most important item in your workstation considerations. You want to invest in a high quality chair.
Admitly my current chair is not the best build quality and I definitely cut corners on cost with this purchase. Which I am starting to regret and considering purchasing a different chair. While it has the majority of points of adjustment you will want such as; height, lumbar, forearm, seat inset or extended, the actual quality of the components are on the cheaper side. Meaning the sturdiness or tightness of the parts fitting together has losened up and the adjustments feel sloppier. But for a chair at this price point I am not sure I can complain. My only true issue with the chair is the headrest adjuster simple does not work. You pull up on the headrest which contains a toothed spine that holds the headrest in place after adjustment. The problem is it does not hold. Once you lean your head against the rest and then move off of it the headrest unlodges from the tooth and falls down to the lowest position. They should redesign this so there is a true locking mechanism.
I am considering switching to the recent Herman Miller X Logitech G Embody Gaming Chair, two brands known for quality products in the office space. At more than 3 times the price of the Autonomous, $1,495.00, I am hesitant.
Desk (Standing)
If you can, make it a standing desk! I am still working on building a habit of using my desk in the standing position. It is vital for me to do, and you, as it helps engage the supporting leg muscles which I have regretably ignored for years. This is something that will creep up on you and when using a stand desk you are not going to feel like it's doing much. If anything it will be the opposite, it is going to hurt. Your going to feel sore when you walk away after standing at your desk. Your going to need to bend down slowly because your back is going to feel tight. If like you are like me and have been sitting for years you have not been using a lot of these muscles and this is your body being sore and tight from using them again. Keep at it though. I can not understate how important it is for your long term health.
While this is the third most important item for your ergonmic health you can save a lot of cost here. The key factor is having a stand desk which encourages you to actually stand. Meaning it needs to be easy and simple. The primary factor in cost is going to be desk real estate. If you want to have a large desk with lots of table top space you are going to pay for that.
I opted for a no name brand off of Amazon which I belive ships straight from China. While I do find myself occasionally wishing I had gotten more real estate it is not enough to make me consider paying more. The desk overall is sturdy and looks good. I did begin having issues with the desk automatically rasing in height. A simple email to the seller and they sent me a replacement control which has completely resolved the issue. A+ service.
My one complaint and not specific to this desk manufacturer is that there is a middle bar which houses the driver rod that lifts and lowers the desk. At my height this results, when sitting with my legs at a 90 degree angle, me bumping my knees against a metal bar. Ouch. Which discourages me from sitting in an appropriate posture.
Alternatively if a larger desk or a known name brand is important to you there is the Uplift. Which seems to be largest competitor in the US market. You are going to pay a premium, espcially for a larger desk. The Uplift desks also seem to have their driver rod set back from dead middle of the desk. I am curious if this alleviates the potential for knocking my knees against the casing.
$248.87 SHW Electric Height Adjustable Computer Desk, 48 x 24 Inches, Walnut
Monitor Arms
The key to monitor height is for them to be at eye level. Meaning while sitting or standing at your desk the middle of your monitor should sit at eye level as you look straightforward. I can pretty much guranette the factor stand or even whatever books you have it on are not doing this. I would recommend monitor arms for a few reasons.
- You are more likely to get the monitor positioned properly at eye level.
- It frees up space on you desks table top
I purchased my monitor arms to hastily and did not think about some key factors. Arm raising height and supported weight. I assumed all monitor arms would essentially be equal. I was wrong. My monitor arm raising height is to low. I can not get my monitors at the previously described eye level. I am currently staring down a few degrees. I also did not consider supported weight. My monitors are fairly heavy and are right at the top line of the arms rated weight. This causes the monitor in the landscape position to sink causing me to be off from eye level at an even sharper angle.
If you are planning purchasing monitor arms I would highly encourage you to consider the following factors; your height + chair height + desk height to determine how high you will need your monitor arms to be to meet a proper eye level. You should aim for both height and weight ratings above what you plan on needing. This will give you some wiggle room when fine tuning your setup.
$87.10 EVEO Dual Monitor Stand
Monitor Display (Dual)
My opnions here are not based on ergonomics. They are primarily about workflow.
If you are authoring a lot of code I would recommend 2 monitors (a.k.a dual monitors). One in landscape and another in portrait. The portrait monitor is where I display my code editor and terminal. This allows me to see a large amount of code and logs on the screen. It is also where I keep my chat app. The landscape monitor is where I keep my browser. Since I do a lot of web application development. This allows me to have my web app open in the landscape, with my browser inspector open and code in the portrait monitor. I find this to provide a very efficent feedback loop between authoring code, seeing the user interface changes and inspecting the outcome.
If you are coding user interfaces then the specifications of your monitors are going to matter more. You will want to consider color accuracy. This will help ensure you are producing interfaces which do not look drastically different on your users screens. Resolution will also be an important considertation. While it is tempting to go with the latest high resolution monitor (e.g. 4k) so you have a crisp visual experience this may not be what your users have. Resulting in you building interfaces tailored for your display and not your end users. If using a high resolution display, which I do, it is important to remember to test interfaces you build across may differing resolutions. Thankfully most browsers include a feature that will allow you to mimic various devices screens. You just have to remember to include this in your development flow.
Currently I use 2 Dell p2715Qt, no longer available. While these look great they are really high-end monitors and are probably to much for most programmers. Since I work a lot with interfaces I do value the color accuracy they provide me.
$589.99 X 2 - Dell Ultrasharp U2718Q 27-Inch 4K IPS Monitor (Latest Model)
Mouse (Vertical)
I had seen co-workers with vertical mouses before. They all looked hideous and awkward. Many using roll balls for scrolling, count me out. Leaving me disinterested in using one. Fast forward to the Logitech MX Vertical mouse. The only decent looking mouse on the market that even had me consider a vertical mouse.
Using the mouse I find extermely comfortable. This is the only mouse I will recommend. My only complaint is now with my split keyboard the mouse lives in an even more awkward area. It either is in the middle of the two keyboard halves or on the outside of one. Which puts it even further out of the comfort zone it would exist in with a traditional keyboard.
I have not found a good solution for this. The only reason it is not a deal breaker for me is that I am a believer that your hands should come off the keyboard as little as possible by using key commands to navigate software and your operating system.
$99 Logitech MX Vertical mouse
Internet
This is an often overlooked aspect of the role. More than ever, due to the rise in video calls, a fast high bandwidth connection is vital. Unfortunately this is often one aspect that is very far out of your control. At least in the United States we are limited to a handful of Internet Service Providers (ISP). Often only one. Therefore you are bound to what they offer. Whatever they offer opt for the fastest connection you can get. A gigabit connection is a good baseline. While you may think that is overkill it can affect the speed at which you can deploy code. For instance say you have a docker container that is 800mb, being able to push that up fast can be important. Imagine the difference between a 10 minute or 20 minute deploy in a mission critical situation. e.g. Pushing a hotfix to a production service. Now imagine you are working from home with family members who are streaming, listening to music, playing online video games all at once. Using up the available bandwidth.
$65 Centurylink (Oregon) Fiber Gigabit
Computer
Okay here comes the hot take. Your computer is not all that important. There, I said it. You do not need that fully loaded $6,699.00 Macbook Pro. Let me contextualize that a bit. If your primary work is producing text and running the resulting program. You probably do not need the latest CPU, GPU or maxed memory. A CPU 1 to 2 generations old is fine. Integrated graphics is fine. 16GB of memory has served me well but I will say this is the one area you should increase when possible. When programming you typically have a code editior open, running a build process, potentially a virtual machine, a browser with a thousand tabs open, slack and potentially your music of choice. That is a lot of open in memory programs and you will see benefits from having a machine with larger amounts of available memory.
The primary factor in which computer you will want is which Operating System (OS) you choose. The three major being Linux, Windows and OSX (Mac). People will choose between these for varying reasons. There is no right or wrong answer. I personally chose Linux because I often work directly with servers that also run Linux I wanted to maintain familiarity with that OS by using it in my day-to-day activites. There are other reasons in regards to philosophy, style, etc. The "flavor" or "distro" (a.k.a distribution) I use is Ubuntu. While there are many distros to choose from I went with Ubuntu because Dell makes the XPS series which they provide first party driver support on.
I am extremly happy with the Dell XPS 13 laptop. The 13 inch model was important to me as I often carried it to and from work, on trips and to tech meetups. The smaller form factor made for an easier and pleasent experience. Now that I work from home and with the current COVID 19 pandemic I'm finding the need for a smaller model not as important. The 13 inch model was not enough to power my dual monitor desk setup as such I needed to also purchase the Dell universal dock. Even with the dock I am pushing it to it's limits with my needs as described above. The 15 inch model would provide more power that I would appreciate.
$1,591.91 Dell XPS 13 (Model 9370)
$149.99 Dell Universal Dock (Model D6000)
My XPS 13 is the prior generation. If this is a laptop you are considering to purchase I would absolutely recommend you get the latest generation. Primarily because they resolved my only hardware annoyance with the web camera being located at the bottom of the screen.
Microphone & Headphones
Remote work is becoming more predominate and as such you often interactive with co-workers and peers over video chat. Please please please do the others on these calls a favor and get a quality headset or standalone microphone which will produce a clear sound for them. It is nice to be heard and understood on calls.
Music is a large part of my process when programming. It can be an important tool for me to get into a "flow state". My headphones are a large part of that. I want to be immersed in the sound. It helps me block out my envrionment and focus on the process of programming. My current cans are a set of AKG
$59 Microphone: Blue Snowball iCE
$59 Headphones: AKG Pro Audio AKB K92
Webcam & Lights
Okay hear me out on this one. Having a decent web camera setup, largerly affected by your lighting, creates a more professional preception. I know that may sound silly. If in a large organization where you do not know everyone by name or you are client facing it is a simple way to demonstrate you "have your shit together". A lot of people have been thrust into working from home this year, 2020. Many do not have the ability to dedicate space to calls where they can craft a controlled and professional envrionment. It is definitely a privilege but the reality is if you can it will allow you to present yourself well.
There is also some cost saving oppurtunites here. Most web cams come with microphones built in. You will want a better webcam than what a laptop would offer so that is an easy purchase. If you are looking to cut costs this is one place that would make sense. Opt for using the webcam microphone instead of a dedicated one.
While a HD webcam is important it will not get you very far without a well lit area. Three-point lighting is the ideal. If you are recording or streaming video this becomes more important. If you have the ability to combine natural window light, with a cieling light and/ or a floor lamp you can get pretty far depedning on your room layout. If achieving good lighting with the constraints you proves difficult you may want to consider a dedicated ring light.
$56.49 Neewer 8.9 inches Webcam Light for Logitech Webcam
Total Cost
That is a whole lot of pricey stuff so what was my total cost for my workstation? In the breakdown below I have excluded my internet as I attribute that to a personal cost and it is the only non one time purchase. I have also rounded.
- $354 Keyboard
- $339 Chair
- $249 Desk
- $87 Monitor Arms
- $590 X 2 ($1180) Monitors
- $99 Vertical Mouse
- $1,592 Dell XPS 13 (Model 9370)
- $150 Dell Universal Dock (Model D6000)
- $59 Microphone
- $59 Headphones
- $89 Webcam
- $56 Ring light
---
$4313
When starting a new position with an employeer this is a budget you should be requesting. It is part of the cost of doing business and it is important your employeer provides you the tools necessary to accomplish your job without impacting your health. You should also understand if given a budget whether you own these items, that should factor into your compensation. Not every item on this list will fit that criteria and not every employeer will see it this way.
There is an argument to be made for getting a budget and you should make it.