topics that matter; ideas worth sharing

share a tip, submit a link, add something new

Are smart coders the enemy?

April 11, 2001, 06:10 PM —  ITworld.com — 

ITworld.com readers are keenly interested in extreme programming, and that interest has been taken up in our forums. Recently, three members of ITworld.com's Programming Theory & Practice discussion have voiced some doubts about the viability of this methodology. Here are a few of the posts

Are smart coders the enemy?

There is an interesting discussion going on in topcoder.com's discussion groups about what qualities define a good coder. The theme of this site is that coders who can solve complex problems quickly are inherently better and deserve more points. I believe this philosophy is fundamentally flawed, and I would like to launch a discussion here about XP and what it means to be a good coder.

There is the general notion in the software industry that the ability to absorb large quantities of information and grasp high levels of complexity are the most important traits in a good software coder. Although I think these coders are very effective and useful, I do not believe that the rest of us should idealize and worship them. Coders with a high level of tolerance for complexity may also tend to produce complex code; this also increases the intellectual burden on the rest of the team, who must interface with and manage that same code.

The fundamental bottleneck in software development is our limited ability to grasp complexity. We can solve this limitation in one of two ways: we can hire coders who are smarter at figuring out existing complexity, or we can hire coders who are better at writing less complex code to begin with.

Unfortunately, when software gets out of control, many organizations feel forced to hire coders with a high tolerance for complexity in order to maintain productivity. However, these organizations fail to recognize that good software design reduces this burden significantly. But what constitutes good design? A good design is one that everyone can understand without having to wrack their brains. This aspect is far more important than the traditional goals of reusability and extensibility. If code needs to be rewritten, so what? Typing is not the bottleneck. Our limitation lies with grasping complexity. So, rewriting is fine provided we have clear understanding of what needs rewriting and how.

Many supposedly sophisticated organizations tend hire an elite group of architects who put in place an infrastructure that embraces good design so that the less-skilled "bricklayers" can fill in the holes. However, I believe that this approach is also flawed. For one thing, there is no clear conceptual difference between design and implementation. Design exists at all levels of code down to the granularity of algorithms. It is important that high-quality design principles underlie all levels of code.

Furthermore, this role distinction lulls us into the naive assumption that we can get away with hiring relatively uneducated and untrained coders to act as bricklayers. This becomes more problematic when organizations hire masses of uneducated/untrained people under the assumption that a few architects can manage all the significant design complexities. Not only do the bricklayers

I like it!
Post a comment
The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
Resources
White Paper

Symantec Backup Exec 12 and Backup Exec System Recovery 8 deliver industry leading Windows data protection and system recovery. Download this whitepaper to find out the top reasons to upgrade and how to get continuous data protection and complete system recovery.

Webcast

Data and system loss — from a hard drive failure, malicious attack, natural disaster, or simple human error — can happen anytime. Don’t leave your business vulnerable. Make sure you have a secure recovery strategy in place. Symantec's latest backup and system recovery technology can efficiently restore critical applications, individual emails and documents and even restore your entire system in minutes in the event of a loss.

White Paper

Businesses face a growing challenge to ensure that the IT environment is properly protected. Backup Exec 12 integrates with other applications in the Symantec family of products, to complement your current data protection strategy, keep your data securely backed up and make it recoverable when you need it most.

Free stuff
Featured Sponsor

Get a broad understanding of important regulations and how you can make sure your site is in adherence.





Learn how VeriSign SGC-enabled SSL Certificates can help improve site security and customer confidence in the free white paper, "How to Offer the Strongest SSL Encryption." In this paper you will learn the differences between weak and strong encryption and what they mean for your site's performance.

Get VeriSign's free white paper: "The Latest Advancements in SSL Technology" and learn about the benefits of strong SSL encryption, Extended Validation (EV) SSL and security trust marks and what these SSL offerings can do for your site.

Now with Extended Validation (EV) SSL available from VeriSign, you can show your customers that they can trust your site. Learn about EV SSL benefits in this free VeriSign white paper.

More Resources