Fog Creek Software
Discussion Board

Software Manufacturing

The most recent post to Joel on software starts out with, "Making software is not a manufacturing process."  I think this statement needs to be qualified a little.  Writing code is definitely not like *high volume* manufacturing where a firm produces a large number of identical items.  There are (or at least can be), however, a large number of similarities to so-called "job shop" manufacturing systems.  These are manufacturing concerns that take on custom, low-volume manufacturing tasks.  A familiar example of this is the machine shop around the corner that produces custom machined parts for its clients.  Another example is that painting shop that does such fantastic work on "American Chopper" [1]

The reason that I think that the manufacturing idea shouldn't be dismissed quite so easily is that these guys have been in business for a long time.  They've learned a lot about the process of building hundreds of variations of a small number of themes in an effective way.  There's even some good science associated with these efforts. [2]  In other words, there's a lot that can be learned by studying what these folks do, the mistakes they've made, and the tools they've created to overcome them.  The similarities should not be overlooked.

Of course, maybe the proper thing to do is convince that lot that they aren't really manufacturers; they can be designers, like us, instead.

[1] American Chopper Fan Page on Discovery:
[2] Factory Physics:

Monday, December 1, 2003

Joel's final observation that (to paraphrase) 'only large shrink-wrap software companies can afford to do craftsmanship' does not follow my own experience, both as a user and as a developer.  Some of the best 'all of the screws line up' software that I have had the pleasure of using has come from small open source and one person 'free' projects.  Conversely, some of the worse 'misaligned' software I have ever used was purchased from large software companies (who shall remain nameless).

Case in point is the 'Programmer's File Editor', created by a system administrator at a university in England (Lancaster University).  -  one of the few links I found to download this free editor (the original website is innaccessible - I assume the fellow moved on to another job).  If you have ever used EMACS in the unix/linux/*nix world you can appreciate the power of an extensible editor.  PFE does for Windows what EMACS did for unix.  The most interesting thing about this project was what the developer did to make sure 'all the screws lined up'.  He started with a 16 bit windows version, then he moved the project over to Win32 - to provide stability, and in the course of this development reaped the rewards of the 'third system' effect.  He had one final release (version 1.1) to fix a last set of bugs - and then froze development - perhaps 2 years of development effort in all.

At first glance you would think, 'there goes another free software project down the tubes'.  That was not the case, and 5+ years later I am still using the software - and have not been able to find a new bug in it (I replaced notepad with it on all of my windows boxes - it reads both DOS and *nix text files correctly - no strange control characters); I have no intention of changing my text editor under windows because it works - and I can extend it as needed to do more than it was designed to do.  Why was this project such a success?  From my standpoint it is precisely because of craftsmanship.  The developer 'got all the screws aligned', and more importantly, knew when to stop - instead of being driven forward by the demands of forcing the project to make new money by evolving a tool beyond usefulness, as many large shrink-wrap software companies apparently are driven, he made the application configurable and extensible in simple ways and left it at that.  Simple, yet complex where it needed to be - a work of art.

Just as an artisan builds a violin by hand, shaving off small slivers
of wood and testing the fit as he goes, software development can be an art as much, if not more than a science.  Furthermore, I would argue
that the best projects lean toward the craftmanship side of the
equation more than the dross that passes for software from the large
'shrink-wrapped' companies.  Smart developers are pushing the edge of the envelope and going beyond waterfall methods in an effort to encapsulate incremental iterative development cycles - precisely the things that craftsmen have been doing for centuries.  Software development is not a factory - and as much as bean counters would love to quantify the quality of software output by the number of lines of code produced - a more holistic approach is becoming apparent as those of us in the biz attempt to keep the jobs we have by being more responsive to the needs of our internal and external customers, and those looking for work attempt to differentiate themselves in attractive ways.

Malcolm Campbell
Monday, December 1, 2003

Sure hobbiests do a great level of craftsmanship too, probably among the finest. I think Joel was talking about the corporate environment not producing craftsmanship.

Dennis Atkins
Tuesday, December 2, 2003

First comment on PFE: the link provided doesn't work. Second comment: I agree with Malcom in most points, however, i have found bugs in the memory handling of PFE for files with a large number of lines. it does strange things if you open a file with a large number of lines, it can also do strange things to other files it has open at the same time. That said, it used to be my primary editor on windows, although these days i tend to use editplus2 more.

Tuesday, December 2, 2003

sorry, just realised i didn't answer OP at all. my bad.

Tuesday, December 2, 2003

I have found a valid download URL for PFE and installed it.

A page where you can download it is

I don't want to flame, but the editor is way behind my standards.

- no syntax highlight

- no tabs for each file

- couldn't find the word-wrap function, if it exists

Want an editor that is WAY better than what PFE provides? Try:

NoteTab Pro

They all fix the disadvantages of PFE described above.

So.. the theory of "open source jewel" is not valid in the case of PFE.

Tuesday, December 2, 2003

How many times can you take even a small component in your requirements that needs custom coding and just say "spray this up, as long as it's red and cool?"...

IT and it's complexities rarely run in a such a consistent fashion as the spray painters for custom paint jobs. Business rules etc etc etc. And integration's always tougher than just a few bolts.

Arron Bates
Tuesday, December 2, 2003


First, PFE isn't Open Source, so it can't be an "open source jewel."  I _wish_ he would have released the source when he decided to stop maintaing it, but he decided not to (which is a valid choice for him to have made).

I can see no need to have word wrap in a programmer's editor. If I'm looking at a document, I have word processors that work better with documents.

PFE can set tabs per file type (i.e. extenstion or group of extenstions). Actually, it can set several different parameters per file type.

I also don't care about syntax highlighting - if I want syntax highlighting I'll use an IDE specifically for the language.

Tuesday, December 2, 2003

"IT and it's complexities rarely run in a such a consistent fashion as the spray painters for custom paint jobs. "

Before you say it, you might want to spend a little time in a paint shop so you know what you're talking about.  After that, go to a machine shop where they make high performance drive trains, or even go watch how they make custom hunting rifles.  Then come and try to convince me that IT has the market on complexity cornered.

Tuesday, December 2, 2003

"Some of the best 'all of the screws line up' software that I have had the pleasure of using has come from small open source and one person 'free' projects."

The "craftsmanlike" quality of some free software does not invalidate Joel's point.  In free software, a programmer can expend the extra 500% effort for the 1% benefit simply for the satisfaction of doing it.  In commercial software, they have to make decisions based on the profitability of doing so.  They will look at the ROI and won't spend that extra 500% unless they have a large enough user base that enables them to profit from implementing that 1% benefit.

Tuesday, December 2, 2003

No small paint shop in the world is going to take on a job that takes 7 man years of skilled labor, like CityDesk does, because the cost is way prohibitive. Development of a job that expensive needs to be paid for by 'deep pockets', or needs to be spread out over multiple customers. If you go to a small job shop and ask them to clone a one-off version of CityDesk for you, you are going to pay over a million dollars for it and it is not going te be very robust because it hasn't had the benefit of running on thousands of desktops and being fine tuned for features and stability over a period of many years.

Now, if you have some craftsmen come and build you a very custom home and it takes a crew of 7 a full year and you pay a million dollars, then that is comparable. But you are paying a million dollars again and not $300 for that home.

Dennis Atkins
Tuesday, December 2, 2003

the point being that that is craftsmanship and not manufacturing -- manufacturing is when you order a prebuilt home and it arrives on the back of three flatbeds and they screw it together in an afternoon.

The custom paint job shops are more craftsmanship than manufacturing too.

Dennis Atkins
Tuesday, December 2, 2003

*  Recent Topics

*  Fog Creek Home