This is the final installment of my comparison series on software development with other professions. At least for now. If anyone wants to write their own comparison or send me an idea, we'll see if it's worth revisiting.
I've had quite a few people ask why to bother with this. It's not so much that I think software development needs to have a model, but rather that I think there is value in looking at the way things are done in the IT world against the way things are done in other professions. Maybe we can do better, perhaps we can improve our processes by looking at what works with other groups, and potentially we could avoid mistakes other professions make. So today I talk about engineering and software development.
I'd think the jobs that engineers do might be the closest comparison to developing software, after all, building software is sometimes called Software Engineering, but I'm not entirely sure how accurate a description this is.
There are many types of engineers, mechanical, electrical, civil, and more. Each of these works in very different areas, but they have some fundamental similarities between them. Engineers are charged with using science to build physical structures or forecast the operation of those structures. Software developers really do this same thing in the virtual world, building, modeling, or designing how bits will be manipulated.
Engineers build very complex structures, that must handle a wide variety of loads whether that's a spacecraft, a bridge, or refining oil. In many ways it seems that software developers do the same thing, working with both simple and complex applications. It might seem that software can't even be tested as well as physical items that are engineered, but I would speculate that our testing methods and tools haven't evolved enough.
There is one very large difference between engineers and software developers. Engineers must be licensed and certified. Most countries require a Professional Engineer or similar designation to call themselves an engineer and offer services to the public. There are exceptions for some engineering disciplines (like automotive engineers), and as we know, software engineers. There are well defined requirements and tests from various governing bodies that perform the certification.
In the software world, vendors of products provide certifications, and in doing so, often establish profit centers to create examinations and administer tests. Instead of being focused on ensuring a high quality workforce, these exams seem to be structured to benefit the vendors and promote their products. I know the writers of questions do the best they can, but within the structures for more programs, it seems they overall process is geared towards ensuring these programs do not lose money.
Overall I think software engineering compares well to other engineering disciplines, just much less mature, but I would like to know how you software developers feel. Should we have standards bodies like the Association for Computing Machinery (ACM) provide more structure for software development and DBAs? Should groups like PASS do more? Perhaps the government (personal shuddering here)? Let us know what you think.
The Voice of the DBA Podcasts
The podcast feeds are now available at sqlservercentral.mevio.com to get better bandwidth and maybe a little more exposure :). Comments are definitely appreciated and wanted, and you can get feeds from there.
Overall RSS Feed:
or now on iTunes!
Today's podcast features music by Everyday Jones. No relation, but I stumbled on to them and really like the music. Support this great duo at www.everydayjones.com.
I really appreciate and value feedback on the podcasts. Let us know what you like, don't like, or even send in ideas for the show. If you'd like to comment, post something here. The boss will be sure to read it.