The best way to speed up software development is to reduce the number of decisions the developers must make

When anything new is being created, the people doing the work have to make decisions. If you’ve ever done a simple home renovation – having a small bathroom remodeled – you know you have decisions to make. What kind of sink, what kind of faucet, what tile for the floor, what tile for the shower walls, how thick should the grout lines be, what color grout, where should the toilet paper holder be mounted … ?  Hundreds of decisions. 

If you’ve hired a contractor to do the renovations, you should expect they’ll make many of the decisions – what size trowel notch should be used for the thin-set under the tile?  Other decisions are yours – should the shower tile be herringbone, vertical subway, or horizontal subway? But if you do the renovations yourself, you make every single decision.  And making hundreds of decisions is time consuming and overwhelming.

When software developers begin designing and coding a new application, they too have many decisions to make.  But instead of hundreds of decisions like a bathroom remodel, it's tens of thousands, and maybe even hundreds of thousands of decisions. Users and clients won’t know or care about most of these. Should we indent two or four spaces?  What datatype should we use to store Airport Codes: strings, integers, enumerated types, or a lookup table in a database? Should the UI buttons have square or rounded corners?  If rounded, what radius should they have? 

For other decisions, users and clients should be involved. What features are critical to be included in the MVP? How should we arrange the user interface to be the most useful? Does the system need to allow ad hoc reporting, or can we build a simple way to download CSV files and let people use Excel to create reports in the format they want?

Good software developers will know which decisions they should make, and which decisions they need to defer to users.

Software developers are typically paid for the time they spend, so to reduce the cost of custom software, we should try to reduce the amount of time they need. The software development community has forever tried to make application development easier. We’ve done so by creating new programming languages, tools, code libraries, data storage techniques, and methodologies. But each time something new is introduced, it actually increases development time because now there are even more decisions for the development team to make. Which DBMS should we use? Which HTTP verb should we use for this endpoint method?  GET, POST, PUT, PATCH … ?  (Answer: Just use POST. It works for everything, and now you've got one less decision to make.)

At DelMar, our software developers strive to decrease our time and costs. We do this by following patterns, using published coding standards, reusing code we've developed, not over engineering solutions to simple problems, and not changing tools just because something new has come along.

We also encourage our clients to reduce the decisions we need to make (and hence save themselves money) by making as many decisions as they can before talking with the development team. 

Think of the software development process the same as you would when doing a bathroom remodel for your house. Make a list of requirements before talking with architects and contractors -- my new bathroom must have double sinks, a walk in shower, and radiant floor heating.  Then create inspirational Pinterest boards of things you like that other people have done. 

For software projects, make a list of desired features for the system, separating them into "must have" vs "nice to have" categories. Decide which computing platforms your systems should support -- does it need to work on all web browsers, or just desktop Chrome?  Also create a folder with screenshots of the user interfaces of other applications you like -- I really like the colors used by PayPal, I really like how Wayfair allows you to search for things, and that font used on is cool.

Any decision you can make before getting the development team involved means less time needed by the development team, which means less money you’ll have to spend on your new application.

Do you have a list of things your application needs? Contact us to discuss how to streamline your project.