Join us on 4 June as we come together with project professionals, sustainability leaders, and volunteer voices from around the world for a special World Environment Day event focused on the future of project leadership.
How much do you challenge the directive? If project managers are always going to go along with what they are asked or told to do, then there really isn’t a lot of point in them being there.
Employers often favor candidates who already have real-world execution experience. That leaves many capable professionals stuck trying to break into a field that increasingly expects them to already know how to operate inside it.
On a four-month project early this year, Headstrong, Inc., a global consulting company, increased productivity more than fivefold using code generation software on a project for one of its top clients1.
Impressive results such as Headstrong's are not unusual with code generation. "Model-driven code generation streamlines the product development cycle in a big way," says Jack Herrington, owner of the Code Generation Network portal. "It drastically cuts the defect count. And it cuts way down on the time it takes to implement a project."
It is a technology which has been available since the days of COBOL and mainframes, but developers have been slow to take it up. An informal poll on the AngryCoder.com website revealed that only 43 percent of the developers sampled used the code generation in previous projects.
The fact that the makers of code generation tools have been slow to update their products to match rapidly changing technology may be one reason developers have so often ignored code generation and its potential for increased productivity and decreased defect counts. However, code generation may be coming into its own as:
Applications increase in complexity
More is expected from developers
Competition increases with today's global IT market
According to Gartner, code generation based tools "allow organizations to be at least 40 percent more productive" and the market will grow with at least a 30 percent annual compound rate through 20082.
This article will examine improvements which make this technology a better bet than ever before and discuss which projects can benefit most from code generation and why.
Is My Project Right for Code Generation?
Projects which are the best candidates for code generation are:
Projects matching these criteria are simple to generate due to the repetitious nature of the code. Resource management applications are a good example. They track resources, skills, certifications, training, projects and staffing and contain some reporting functionality (e.g. "which resources are available that match my needs?"). Their strong CRUD-based, database I/O focus makes them ideal candidates.
Is My Project Wrong …?
Projects not suited for code generation:
Have a complex workflow component
Involve time-consuming reporting
Require systems integration
Demand detailed security
Include intricate calculations.
Projects matching these criteria are more difficult to generate due to their complexity and the non-repetitious nature of their code. Portfolio management applications are a good example. They contain: advanced reporting such as complex calculations in rollup spotlight reports; workflow such as the approval process for rebase-lining budgets or schedules; and security, such as disallowing viewing of certain portfolios for certain users. Projects of this sort will always gain some benefit from code generation, however, because it provides a foundation of code upon which to build.
"I'd say you could get at least 50 percent time savings, even on a project that is heavily business rule centric," says Ankush Tewari, Headstrong senior consultant. "Just getting the CRUDs out there would probably save half the time."
What Do I Get Out of It? (or not?)
Time savings is the most valuable and measurable benefit of code generation. Other benefits include:
Fewer defects
Higher customer satisfaction
Increased project predictability
Shorter delays caused by data model changes
Code generation decreases a project's defect count because generated code is more consistent and less error prone than hand-written code. Customer satisfaction can be increased because code generation provides the ability to generate prototypes during design, which allow customers immediate visual feedback regarding their application prior to development. Increased project predictability comes with the standardization that a code generator provides and can additionally lead to decreased maintenance cost. The final benefit is a decrease in delays due to data model changes, which often require a significant amount re-work due to last minute requirement changes.
Drawbacks include:
A higher learning curve
The potential for code bloat
The largest drawback is the increased learning curve associated with learning a new tool--and potentially a new architecture and new coding standards. A quality Commercial off-the-shelf (COTS) code generator can help mitigate this through an array of pre-implemented best practices and architectures.
Code generation can make it so easy to generate code that more code is generated than is necessary; code bloat is the result. This increases complexity and maintenance costs and potentially degrades application performance. Bloat can be minimized with thorough product evaluations since some COTS code generators are better than others.
Summary
When used on the right project code generation can be a valuable tool. For larger, structured, CRUD-based projects, the primary downside of an increased learning curve is easily made up for by the upsides of increased in productivity and maintainability, and the decrease in defects. Even on some less suitable projects, code generation's structure can prove a valuable asset.
Lee Richardson is a veteran of more than nine years in the custom application development and code generation industries. Lee is the founder of Automated Architecture, Inc, and is the author of Blue Ink, a tool for rapid application development.
1. Headstrong, Inc. uses an hours-per-entity metric to track development productivity. Over the past six years, Headstrong reduced this metric from an average of 121 to 77 hours-per-entity using various rapid application development technologies. Using Automated Architecture's Blue Ink code generation product, they further reduced the metric to 23 on a recent resource management project. This resulted in a 426 percent increase in developer productivity.
2. Gartner, MDSFs Offset J2EE Complexity, December 22, 2003