A few months ago I made an observation about the software development profession that I simply brushed off as unimportant. Now I still feel it is equally unimportant, but in the spirit of Obi Fernadez’s talk at acts_as_conference I figured I would bring it up.
As I look across many different professions I see one thing in common about the stages of development. I will use construction as an example, because my father is a part of this industry. When you start off, you rely heavily on your crew for the tools you need. You will buy yourself the basics, like a hammer, and a pair of pliers, but the bigger stuff like drills etc.. you will have to rely on the company you work for, or the team you are a part of to supply certain tools. I went through this one summer when I worked in the field as a electrician’s helper installing rough packages on new construction houses.
When you progress to a journeyman in the profession you tend to acquire more and more of your own tools. In construction this would be items like drills and saws. At this point you have committed to this job as a profession for some substantial amount of time. But you may still rely on your company to provide you with specialized equipment.
Finally after you have been working in the field for numerous years you will have acquired pretty much every piece of equipment you need to accomplish any task your job requires without any assistants from tools from outside sources. At this point you can move from job to job and be a huge asset to the company because you have all the equipment you need.
Which brings me to my point, you can look at numerous professions and this will be the case, construction, painter, sculpture, mechanic, and even professional athletes choose the tools (e.g. bats, sticks, clubs and cleats) they use to practice their craft. For whatever reason this is not how most software development shops work. I see a few benefits of choosing your own tools (computer, os, IDE) in our profession.
Built-in platform testing
The easiest one, is automatic OS testing. If you have a few PCs, a few Mac users and that one Linux user, than you have all the basis covered. Since each user is testing on each OS respectfully you will find platform problems much easier
Local development in a box
If a developer works on his own machine enough, he/she is probably going to have it setup to run whatever code he is working on.
Less cost to hire a new developer
This one is a double edge sword. Like I said above it is customary for a new construction worker to buy his first set of tools, and have the big stuff provided. I think this could work in our profession as well. Thinking back to my electrician’s helper job I had to purchase a specific set of tools in order to even start work. Those tools probably equated to ~$150 and with the drill I was supposed to buy, that probably would have pushed me into the $225 range. A quick search on dell shows me that you can buy a desktop for between $350 – $500 or a laptop for $500. I will admit this is a greater cost to entry than a construction worker, but it is also something you will probably already have as a developer coming out of college, or trying to get into the profession. Not to mention your base salary as a developer should be higher than an entry level electrician’s helper. In an ideal world, the base salary should be increased sightly, since the cost to hire has decreased for the employer.
This is by no means an exhaustive list of all the benefits to using your own machine at work, but it is something to whet your appetite. I wouldn’t be doing my job if I didn’t point out some of the negatives as well.
I personally think this is a false sense of security but I will speak to it anyways. When you have a locked down set of hardware it is much easier for a sys-admin to do his/her job. In certain situations this is good, for instance not letting junior developers log into production boxes. But that isn’t the kind of security that you get from having locked down security. The protection you get is from having outside virus’s enter the work place. And that goes completely out the door if you have anyone on your team that has a laptop. Actually in this case, the developers are the ones you need to worry about least because they usually have a firm grasp one how to not let virus’s happen. The non-technical business people are usually the ones that you need to worry about, and they are usually the ones with the laptops.
On top of that you could require a certain protection package for anyone who wants to add their computer to the network. This would have to be specific to each operating system, but I think is a small price to pay if you are overly worried about security.
Added cost of entry
This is the counter point to the above benefit to the employer. Yes their is a great perceived cost of entry, but what developer doesn’t have their own machine at home? How did you become a ‘developer’ without owning your own computer? Because I think this is a perceived negative I am going to ignore it.
However I will point out, my Father is allowed to write off many of his tool purchases, and thus purchase tools more regularly. If developers were able to count their ‘personal’ machines at work machines, then we would probably upgrade our machines on a regular basis.
Standardized Work Environment
Some people believe their is a benefit to having everyone using the same setup so that if you need to move developers/machines, or work together on something everyone will be comfortable in the new environment. I think this is breaking the 80/20 rule. I think at most 20% of your time will be working/looking at someone else’s machine so why should I have to standardize my habits/behaviors so someone else is comfortable? Which sets me up for an entirely other rant about standardized work environments.
Much enterprise software only works on Windows. I am referring to the HP Quality Center and the IBM Rationale of the world that are available to make us so much more productive. I am not going to debate the quality or helpfulness of these tool, but their are ways to run these on any machine, using emulation or dual boot setups. Again 80/20, I would much rather switch between a windows and mac install for these two tasks, or even have a box dedicated to modeling.
On top of that, we are these enterprise product customers. If we as an industry move to allowing multiple machines in our development space, they will have to move to allow this as well. Or someone else will come along to replace them. Vendor lock-in is the worst, and for some reason we have allowed Microsoft to lock us in, even when we fight against it from other vendors.
So enough ranting, I am willing to bet that most of my arguments are shallow and probably inaccurate, but I think it is something to think about. Even though I drew a parallel to the construction industry, we do have different problems to address in our work environment. I don’t however think that is reason enough to ignore this situation.