ramblings


I got my engineering degree in Canada. Upon graduation, most students participate in the Iron Ring ceremony, where they receive a ring representing an engineer’s obligation to protect the public. You can spot a Canadian engineer by the ring worn on their pinkie. Part of the ceremony refers to Rudyard Kipling’s poem The Sons of Martha, forever toiling in obscurity so that others can enjoy a carefree life. A more contemporary interpretation would be the Morlocks in the time machine (the 1960 movie is a nice rendition of the H.G. Wells novel). I don’t fancy myself a cannibalistic cave dwelling troglodyte. Others might disagree.

People working in the embedded field are very much like the Sons of Martha (or the Morlocks) working in the shadows so the world at large can be a better place. embedded systems are, by their very nature, invisible.
The programming world is far from homogeneous. It has many tribes and subcultures. Some of the more obvious include Open Source, Linux, Microsoft, methodologists, academics and a number or language oriented tribes.

Each of the tribes have their rock stars. Open Source has Richard Stallman and Eric S. Raymond. Linux obviously has Linus. Microsoft (the ecosystem, not the company) has many figures with a high profile: Scott Hanselman, Carl Franklin & Richard Campbell (via DNR), BradA, ScottGu and plenty of others. Methodologists such as Kent Beck, Booch and Jackobson all left a mark. The ultimate academic Rock Star is of course Donald Knuth.

However, the embedded world does not seem to have the same figures. Jack Ganssle and Jack Crenshaw are probably the two most visible, due to their longstanding association with Embedded Systems Journal. This is very strange, as embedded software programming is a very large segment of the programming world. This reality is also reflected in the lack of on-line blogs targetting the embedded world. I dont believe the fragmented nature of the embedded world is entirely responsible for this state of affairs.

Is it that embedded programmers are more introverted than the rest? Are we simply the Morlocks to the larger community’s Elois? Am I simply blind and can’t see our own Rock Stars? What do you think, who are the embedded rock stars?

Jeff Atwood at Coding Horror recently talked about two types of programmers (triggered by Ben Collins-Sussman’s source control comments). The top 20% which are interested in professional development, and the remaining 80% which are more like 9-5 clock workers, and are not doing the magazines/blogs/conferences thing. As Jeff clarified, here’s not dissing the 80%, just pointing out that they are unreachable by conventional means.

By Jeff’s definition, I’m one of the Alpha 20% programmer by virtue of the fact that I’m a compulsive book buyer and avid blog reader. Maybe I’m just feeling insecure today, but I don’t feel like a top 20% guy. Let’s look at the competition who else would be in here:

      All the deep thinkers out there who write about methodologies while bringing home the bacon (Kent Beck, Mike Cohn, etc…)
      All the technical authors who end up being paid a pittance for books with a limited audience.

You will notice that all of the above, by virtue of their writing, could be classified as “communicators”. Clearly the exception when it comes to the programming & engineering world. But what about the “silent majority”, who are not so talkative:

Dang! They all seem to have blogs…maybe that’s the new 20%, you have to have a blog?
With all those Alpha programmers out there, I can’t help but feel intimidated. Maybe I’m just at the shallow end of the deep pool.

Microsoft’s Visual Basic spawned an interesting phenomenon. It has made programming accessible to the masses and possible to create decent looking applications fairly easily. But it enabled “The manager masquerading as a programmer”. For the first time in history, managers obtained the power to use computers and create applications to fill some particular need they have. No longer were they beholden to the IT/programmers. They can now scratch their itch (to quote Eric Raymond). Unfortunately, I have seen this phenomenon cause problems. In this case, there is some truth to mother’s admonition to not scratch the itch, it will make it worse.

The manager has a good idea for a new product and being VB savvy, proceeds to develop the product. It becomes a viable piece of software and is moderately successful. However, little thought has originally been put into the structure of the application. This code now must be maintained and extended. In small shops, the manager (in addition to managing) now assumes both the product management role and the development role. Being human, this can lead to a myopic view of the product, with no back and forth between development & product management. This tend to lead to piecemeal features, now much forethought to product growth or architectural considerations. It also distracts the manager and prevents him from excelling in the managerial role.

Another problem can occur when the manager has a need for software to meet some internal business requirements, tracking employee time for example. Being diligent, he looks around at available commercial software, but nothing out there meets his exact needs. Being empowered by VB, he decides to roll his own software. This results in a product filled with quirks and unfinished features. It again distracts the managers from his real job.

In my experience, this seems to be more prevalent in small companies, where the manager’s job is often loosely defined and where a “time is less expensive than money” attitude sometimes prevail. It also tend to afflict managers that come from a more technical background.

Is this something you have run into or do I simply have a very skewed sample set?

I don’t care if you are the most brilliant programmer, able to write tight code, crafting algorithms as aesthetically pleasing as they are fast. If you are not using a source control system, you are nothing but a dilettante, an amateur, or if you are truly exceptional, an idiot savant.
I don’t understand it. The first tool you should install is a source control system; before the IDE, before the compiler. In this day and age of free SCM systems (subversion being the most popular) why is it that there are still companies that are not using source control?
I am not talking about a wholesale document management system. It’s not like we’re saving all the various versions of your frame maker customer documentation. No, I’m simply interested in your engineering department, your programmers, working on lowly source code.
I’m not advocating the use of such advanced features as tagging and branching! Heaven forbid we ask your designers to experiment with the mental gymnastics that are feature branches. I would be ecstatic if companies used a simple linear development main branch. It would make life so much easier.
The objection I often hear usually revolves along the lines of “We will have problems when the same file is modified by multiple designers!” EXCUSE ME?! What happens now if you don’t use source control? Might you not simply overwrite someone’s changes? Well, that’s so much better than getting a pesky conflict and having to deal with a merge.
Another good one revolves around remote development. “We have remote developers, but we don’t/can’t/aren’t allowed to have a VPN to give them access to our servers. We can use a SCM system”. Run don’t walk to Rob’s post on source control for micro-ISVs. I too use DreamHost for hosting, and they provide you with the ability to create hosted subversion repositories. It works darn good too!
Ultimately, those are all red herrings. I believe this is at best, simple inertia. Nobody wanting to take charge of the process. At worst, it’s outright laziness. Let’s face it, the change in workflow is minimal. Do an update in the morning to pick up any changes, and simply commit from time to time. Not that hard.
Why is it that so called developers/engineers/programmers still are not using source control systems? Have you ever been successful in showing them the error of their way?

Ok, I have been chastised: calling out for more embedded blogs, and then dropping out. I’ll spare you the excuses (especially since Scott Hanselmann can keep blogging despite a) starting a new job at microsoft, b) building a new house and moving in, c) becoming a new father and d) organizing a new home office).

The one change I have made to the blog that might impact readers is that you now need to register to post a comment. I do realize it essentially means that no one will comment, but the spam was just becoming insane. Funny since the blog has been inactive for a while…

There will be more posts geared towards “small shops” development, as this is an area of recent experience. There might also be a few posts related to embedded operating systems.
What can I say, it’s the space I operate in now :-)

« Previous PageNext Page »