A lot of the marketing hype regarding the next generation of programming tools and methodologies (e.g., extreme programming) has me concerned. It seems like the primary emphasis is on productivity and generating more code faster. I have nothing against productivity, but to my mind, the problem isn't a lack of code. All modern development platforms have productivity tool sets that facilitate rapid coding. Today's IDEs have graphical design environments, and the .NET and Java class libraries provide hundreds if not thousands of pre-built functions that you can readily use in your applications.

No, the problem with many applications is too much code—too much bad code, that is. Not that the code generated by some tools such as Visual Studio is bad—quite the contrary. The code is usually pretty good, probably better than the average coder would produce to do the same tasks. And nothing's wrong with making coding easier. The problem is in the mindset and expectations that this "more is better" mentality fosters.

For programmers, this mentality leads to the idea that coding must be done quickly—the faster, the better. The emphasis isn't on creating defensive and highly reliable code. Instead, it's on getting things done quickly—as if quantity were a desirable substitute for quality. Writing high-quality production-level code takes time, and for the most part, productivity enhancements such as generating code to make Web services from stored procedures or reducing the effort to create reports don't address the more serious issues of coding for reliability and security.

However, a far more troubling side of this mentality is the management expectations that it engenders. Buying into the improved-productivity line gives managers unrealistic expectations of the time required for coding tasks. Although not all managers fall into this category, plenty of them do, even some who have good technical knowledge. This way of thinking by managers creates an insidious trap for the programmer who argues for more realistic deadlines. As programmers know, this argument often translates in manager-speak to "the programmer lacks the skills to be productive" or "we've chosen the wrong tool set to get the job done." Both of these reflect negatively on the developer. The first could imperil his job and the second suggests that the business has invested in the wrong products. Fear of either of these management perceptions can lead programmers into acquiescing to goals they know are unrealistic. This path leads to poor code, followed by missed project deadlines, poor application quality, and dissatisfied users.

The battle between code productivity and code quality reminds me of the IBM adage: "You can have it right or you can have it right now." Lots of code quickly doesn't necessarily equal good code; this message needs to permeate the software-development process from the vendors to the application developers. From the tool vendors, the message to developers should be "doing more to help you do better." Programmers should expect code-productivity tools to help them produce higher quality code by reducing the time they spend performing mundane tasks. Expecting increased productivity to collapse project deadlines is a losing proposition. By building the expectation of improved code quality, everyone wins.

End of Article




You must log on before posting a comment.

If you don't have a username & password, please register now.

Reader Comments

Although I concur with his opinion about some tools, it sounds like Mr. Otey doesn't have much experience with Extreme Programming. If it advocated doing low-quality code quickly, it would indeed be a bad thing. Instead, it puts a strong focus on complete test coverage, high-quality design, and aggressive removal of excess code. Its short iterations and reality-driven planning encouraged a measured pace, not a hurried one.

It's true that agile methods like Extreme Programming focus on increased productivity, but patently untrue that they encourage short-term floods of code; they instead focus on long-term productive delivery of business value.

Anonymous User

Article Rating 3 out of 5

If I'm not mistaken the meaning of Extreme Programming, it involves refactoring which means rewriting of parts of code, which means to delay the deadline for managers.

For this reason, although it does increase the performance and overall maintainability of code, it isn't a easy thing to get approval to assign time doing so.

In my past experience, over 90% of such request attempts are simply rejected/neglected.

Anonymous User

Article Rating 4 out of 5

> If I'm not mistaken the meaning of > Extreme Programming

Yes, you are mistaken. Refactoring is but one practice of Extreme Programming. You aren't including practices such as close customer involvement, relentless testing from day one, continuous integration (not daily builds, but hourly builds!), and several others that work in unison to create a very high quality product.

For more information about Extreme Programming, goto http://www.xprogramming.com, and for refactoring, go to http://www.refactoring.com.

Anonymous User

Article Rating 4 out of 5

Extreme Programming is like so many other development strategies: It is effective to a degree, but not to the level for which it is "Hyped". I have found many who adhere to this paradigm, later, reluctantly, admit to it's shortcomings as a panacea. It is the "pendulum effect" in action!

Anonymous User

Article Rating 4 out of 5

During 35 years of developing code and a couple years supporting systems, I have seen the results of hurried, deadline-oriented developing and testing. And the results are not good. In the old days, we fixed bugs. Today we 'find work-arounds' for our users who are the ones who truely suffer while we in IT meet our goals of a 5% budget reduction this year

Anonymous User

Article Rating 4 out of 5

 
 

ADS BY GOOGLE