I’ve written a response to Olegs article Digital Marxism

Steps One Through Five

Instead of interpreting these questions as “Does your employer follow a certain practice?” ask yourself whether you personally follow a particular practice. Do you, my dear friend, use source control to keep track of versions of your own source code ? Do you document every change ? Do you use some sort of a disciplined task list for tracking issues pertaining to your own source code ? Do you address unfinished tasks before creating new ones ?

This is a good point, and for the most part I would say yes. I do work in this way. The problem is, as you have encountered in your career as well, getting others to work in a way that is compatible with your process. I can keep a log of bugs in my own bug tracking scheme, but it doesnt help my coworker who is trying to fix that bug.

Steps Six and Seven

Seriously, do you have an updated schedule ? I personally find myself setting misleading priorities to tasks if I don’t know what my deadlines are. For example, I may sometimes make a mistake of spending more time on a research task digging into little details than it is really necessary if I don’t know the updated schedule. Do you have updated requirements ? The requirements and specs change all the time whether you like it or not.

I agree with this. Some clients are all about schedules, and some are very relaxed.

Step Eight

I too agree with the philosophy that before you can get quality work done you have to achieve a complete peace of mind. Whether you are a motorcycle mechanic or a computer programmer doesn’t matter — both masters of their respective trades require clean and peaceful environments to get work done.

IT industry is undergoing the same changes that other industries such as manufacturing and textile have undergone. Jobs that require no customer interaction are moved to cheaper countries. Jobs that remain in the U.S. are stressful assignments involving customer interaction.

The fact is, my friend, any job requires customer interaction. Your manager is your customer, your customer is your manager.

A quality custom motorcycle must be assembled here in the U.S. to meet customer’s requirements. A mass produced bike can be assembled on a conveyor-belt production line in Mexico.

There is a difference between requiring client interaction and having to sit right next to them and be constantly distracted. The way things should be is intense client interaction while the Functional Spec is worked out. After that point it shouldn’t matter if I build the project from a bathtub full of Jello if that’s where I like to work. The problem is that most of the time the client themselves don’t know what they want. They can only say something vauge like “integrate this and that”, or “add this feature to the project.”

Step Nine

I personally have never worked for an organization that supplied me with what I thought were the best tools money can buy. It is not the organization’s fault it does not know what you require and what you mean by the “best tools money can buy.” What is great for one person might be an overkill or insufficient for another.

The best motorcycle mechanics in their field have their own set of tools, some of which they made themselves for their own personal use, that they take from job to job. Some of the best surgeons are known to pattent their surgical tool designs. The best IT professionals also have their own tools that they bring from job to job.

The problem is, employers and clients never ever try to understand what developers need. I personally know, and can prove that I’m more productive on a multi-monitor setup and a fast computer running a new and up to date operating system with the best (and not necissarily most expensive) development tools. But the employers and clients seem to think “Why the hell should a developer get that setup when this one 15 inch monitor and pentium pro 200 is fine for running Lotus Notes and Word all day for me. Why do they think they are so special?”

In addition, lets say I spend the money out of my own pocket to build the “ulimate development workstation” what do you think the chances are that I’ll be able to set it up at a client site or at a larger employer without causing all kinds of problems, real, imagined and political?

Step Ten

Testing your own code is hard. Budget restrictions prevent the organization from hiring testers specifically for the job. So, why don’t you ask your colleague to work together and help each other test the application ?

This is a technique I have used effectively.

Steps Eleven and Twelve

These are less relevant in small organizations than they are in large companies. Startups usually hire people existing employees have’ve known for years, while large companies grab random people off the street.

Step 11 can’t possibly hurt.

I use hallway usability testing quite a bit (to the annoyance of my cowworkers :)

So, even if you believe that Joel Spolsky knows what he is talking about because he worked for Microsoft, which according to him runs “at 12 full time” consider this — Microsoft is a large company, and as a rule most people in a large company work on boring projects.

I don’t agree with Joel because he worked for Microsoft. I agree with him because he has experience that I don’t have, he has survived and now has is own successful software company. He’s seen both horribly mismanaged companies, and well oiled companies from the inside and is using the valuable lessions he learned in the formation of his new company.

The twelve steps to better code have to first come from within as one’s personal software practice; on a company wide level they are nearly impossible.

You are right. But it is hard to be Howard Roark all the time.

2 Responses to “Response to “Digital Marxism””

So the real issue is crappy equipment.

Have you tried virtual desktop software ? I am more productive on a multiple monitor set up too, but the last thing I want in my home office is more computer equipment. Virtual desktops sort of compensate for that, but to tell you the truth the best virtual desktop software that I’ve ever used was the VD support in FVWM2.

When I was writing “Digital Marxism” article, I considered that perhaps it should be a common practice to negotiate equipment and workstation set up in the employment contract. If the employer or client fails to do that, you should notify them and say that you have no problem bringing your own equipment but their rules against people bringing their own equipment and storage should be waived for you. But you have to be reasonable — I can certainly see how multiple monitor demand may seem off-the-wall by less technical people (not by me).

I grew to think of my laptop as my sanctuary. I have my tools and most of what I need on my tiny Lifebook and at work sites I simply plug it in. Granted, it is very simplistic and does not support multihead setups.

Read Ed Yourdon’s “Decline and Fall” and “Rise and Ressurrection” books. This guy had decades of experience working for XYZ Megabanks rather than software companies.

I’m actually thinking of building a small luggable desktop system (I think they are called shuttle cases or something like that). Its a PC the size of a breadbox and i could put a decent cpu, multiple video cards and so forth in it and take it with me between jobs. As far as multiple monitors go. I like multiple physical monitors better than virtual desktops.

It seems that every site i’ve worked at had an inexplicable surplus of decent monitors. I’m looking at 3 unused ones right now. If you want to really splurge invest in a set of 3 15 inch lcd panels that can be transported easily.

Have you seen expose in Mac OS X 10.3? It’s awesome, but its even better with multiple displays

Something to say?