The 7 Habits of Highly Effective Developers: Habit #1: Be Proactive
Test and Monitor | Posted July 26, 2012

The recent passing of Stephen Covey, author of the seminal work, The 7 Habits of Highly Effective People, got us thinking a bit more about how developers can best make use of these maxims while writing their own non-fiction works the code that makes the 21st Century work. Over the next few weeks we’ll explore each one of these habits and how you can apply them to become a more effective, more productive developer.

Get in the Game

When asked what made him so successful on the ice, Wayne Gretzky (a.k.a. ice hockey’s “The Great One”) replied with some advice his father drilled into him while teaching him to skate on the rink they built in their Toronto backyard, “Skate where the puck’s going, not where it’s been.”

For developers, whose targets and markets can move as quickly as a game of hockey—and often on thin ice at that, skating to the puck—i.e. being proactive—is critical to success. Consider these strategies and tactics to develop proactive, highly effective, development habits and equally effective applications:

Communication Is Key

Coding is complex, especially so when coding for a mobile application. Team members are just as likely to be in the next cube as they are to be half a world away. Communication between developers is critical so be sure you’ve got the right tools for the job.

If you can employ apps that give anyone on the team real-time, editable files, and threaded conversations by file and line number, code review can become collaborative and much more effective.

If you can automate your workflow, better yet automate a customized workflow, the team can be communicating even when they’re busy on other tasks. Server-side triggers, “waiting,” and “finished” notifications let team members see the status of the project at a glance and provide the information they need to keep things moving forward. And, even when they’re moving sideways, when a defect pops up, automated workflows with defect management ensure resolution is complete before the defects can ever reach users’ screens.

CMMI is a good thing. OK, it’s a pain in the ASP, but in the end, it’s a good thing. Use collaborative apps to monitor CMMI compliance and take some of the pain out of the process while building efficiency into it.

It’s a Requirement; Be Part of Requirement Development

Highly effective developers take the initiative to actively engage themselves in the development of the project’s requirements.

At the top of their game, every professional is actively involved in developing the requirements for their instruments or tools. A concert violinist will tell the luthier precisely how he wants her instrument to perform. A tennis pro headed into Wimbledon or the U.S. Open will set precise standards for how tightly the racquet will be strung—no more, no less.

Developers have a responsibility to be part of the process when it comes time to set out the app’s goals, to establish what it should do, what it shouldn’t do, what it must do well, and what it might need to do at some point in the future. Setting requirements is a team sport. Developers, executives, sales and support professionals, and when possible, practical and realistic, even users should contribute to the requirements.

Test First

QA time can be substantially reduced (as much as 30 percent) if you invest some time in publishing test cases before a single line of code is written.

Using state-of-the-art testing tools figure in about 10 percent of the anticipated total project time to publish test cases before a single line of code is written. The investment can pay off substantially, as much as three-fold because QA time can be reduced by as much as 30 percent if you test first.

If you publish test cases using apps with cross-browser, Web, Windows, and HTML5 testing functionality, whether you’re working in C#, C++, Delphi, Java, or any other development language, you can address the items testers will expect you to have addressed, such as validation issues or bounds.

If you can run tests on multiple physical and virtual machines and then collect and merge test results into a comprehensive report before you start coding, you will decrease your total time to deliver a final product and will go to market much more smoothly and quickly.

When Cooking Up Code, Think Like a Chef

As a restaurant patron, you may be amazed, sometimes even overwhelmed, by the choices on the menu—dozens upon dozens of items. But, read carefully and you will soon see a pattern emerge. A hundred menu items may only require 40 ingredients; they’re just put together in different combinations. Today’s special? That’s a fancy way of marketing yesterday’s leftovers.

Take a lesson from the world’s best kitchens when cooking up your code: Reusability rules.

When you’re designing a system that might need a dozen listing screens and a dozen more edit screens, how about designing one highly flexible listing screen and one super editable edit screen? That way, when something sours and the sausage hits the grinder, you’re only fixing the issue once and replicating its resolution across all the iterations.

Don’t reinvent the proverbial wheel, if you’ve written code for a different application that still functions well and meets the requirements, plug it in. In many cases, that code is already vetted and debugged; it can carry the load as well as anything you’ll write today.

By analyzing reusability upfront during the development phase you squeeze time out of the design process down the road. See whether you can create 100 menu items using just 40 ingredients, or 30, or 25.

There you have it. If you’re proactively involved in the work coming your way, you will be more agile, and identify problems early on (or maybe even before they arise). Using these techniques you can increase efficiency in the workflow, reduce costs, and in the end, develop a better product.

Next up: Habit #2: Begin With the End in Mind