![]() |
|
An e-newsletter published by |
May 2007, Vol. 4 No. 5 |
| Welcome to Food for Thought™, an e-newsletter from Software Quality Consulting. I've created free subscriptions for my valued business contacts. If you find this newsletter informative, I encourage you to continue reading. Feel free to pass this newsletter along to colleagues by clicking this Forward Email link. If you’ve received this newsletter from a colleague and would like to subscribe, please click this Enter New Subscription link. If you don't wish to receive this newsletter, click the SafeUnSubscribe™ link at the bottom of this newsletter, and you won’t be bothered again. Your continued feedback on this newsletter is most welcome. Please send your comments and suggestions to info@swqual.com. |
In This Months’ Topic,
I offer some suggestions on selecting an appropriate development methodology...
|
||
|
Learn from your Elders At a recent Boston SPIN meeting, I had a one-on-one conversation with Ed Yourdon. Ed is truly a visionary in our field. After graduating from MIT, he started working in the computer industry in 1964 at Digital Equipment Corporation where he wrote the FORTRAN math library for the PDP-5 and the assembler for the popular PDP-8 minicomputer. He has since written 27 books and become a world renowned consultant on software engineering methodologies and web technology. |
|
![]() Ed Yourdon |
I asked Ed why it seems that younger software engineers aren’t learning critical project management skills from their more experienced colleagues. He agreed that this seems to be the case and recalled a conversation he had with a colleague on this subject. After the meeting, I sent Ed an e-mail asking him about this conversation and he replied by sharing the e-mail with me. This is what he wrote:
According to Ed, each new generation of software engineers believes that the previous generation is “old-fashioned” and “just doesn’t get it”. These kids were raised in the technology era and believe that technology and technology alone can solve all problems. While they are definitely able to assimilate change and new technology faster than the previous generation and certainly faster than the Baby Boomers, what they don’t get is:
The current generation of software developers has much to learn about effective project management techniques. In fact, the approach most often used to develop software today is often referred to as the “code-and-fix” approach. As Steve McConnell observed: |
|
|
The “code-and-fix” approach represents one end of the product development spectrum. At the other end is the “get-it-right-the-first-time” approach. Watts Humphrey [4] stated that this approach is always the most efficient way to work.
However, we often need to find a middle-ground since we don’t always have all the requirements and as a result, we have to do some amount of code-and-fix. The issue here is that when we use the code-and-fix approach, the likelihood that we inject more defects increases significantly. We need effective techniques to mitigate this problem… Desk-check your work! Desk-checking your work is like proof-reading a report or other document. Sure, word processors can find spelling errors and some grammatical gaffes but spell checkers have limitations. The following sentence draws no complaints from most spell checkers:
|
|
|
Compilers, like spell checkers, are good at finding common syntax errors. But compilers often can’t find subtle semantic errors, such as misplaced semi-colons or missing else clauses. In addition, compilers are software, and as we all should know by now, all software is defective… Young software engineers don’t seem to have learned why desk-checking their code before compiling is so important. The attitude of younger software engineers seems to be:
Allowing the compiler to find your mistakes means that you are not taking responsibility for the defects you have created, as Watts Humphrey observed:
So, even when we are forced to use a code-and-fix approach, there are ways we can take responsibility for the quality of our work and minimize defects injected… Desk-checking is a technique that SQA engineers can benefit form as well. Desk-checking tests is a good way to save time by making sure the test is correct before trying it out. You can learn from your elders As a young software engineer, I was fortunate to have had the opportunity to learn from several skilled and talented engineers during my “apprenticeship”. These mentors not only helped me with technical skills but also helped me with:
They also taught me how to use “the system” to get work done. These skills are not taught in school and cannot be supplanted by the latest technology. As I stated in my Oct 2006 newsletter,
When I asked Ed why he thought young engineers are not learning from their more experienced peers, he observed that:
Everyone Needs a Mentor Since the software engineering profession doesn’t recognize the importance of an apprenticeship, it is imperative that young software engineers and SQA engineers find a mentor. Mentors can provide young engineers with essential “soft” skills that can help them improve their effectiveness and provide them with skills that can only be handed down from a more experienced engineer. Some organizations have recognized the importance of mentoring young engineers and have in-house mentoring programs. If your company is one of these organizations, participating as either a mentor or mentee can provide significant benefits to both the organization and to the individuals involved. If your organization does not have an in-house mentoring program, the IEEE can help. Recently, the IEEE launched a mentor program which aims to identify IEEE members who are looking for mentors and pair them with IEEE members who are interested in being a mentor. ‘Till next time… |
Every month in this space you’ll find additional information related to this month’s topic.
|
Every month you’ll find news here about local and national events that are of interest to the software community…
|
Software Quality Consulting provides consulting, training, and auditing services tailored to meet the specific needs of clients. We help clients fine-tune their software development processes and improve the quality of their software products. The overall goal is to help clients achieve Predictable Software Development™ – so that organizations can consistently deliver quality software with promised features in the promised timeframe. To learn more about how we can help your organization, visit our web site or send us an email. |
I hope this newsletter has been informative and helpful. Your comments and feedback are most welcome. Send me your feedback… Thanks, |