A Passion for the Big Picture

29 Tips for Smart Software Development

Sales people for software development companies could have the easiest job in the world.

Why?  Because with software, it’s so easy to promise the sky, the moon, and all points in between.  Sure, we can build that.  Yes, you can have all those features.  Of course that can be done.

Really, anything and everything is possible in the world of software development.  That’s the beauty of it.  And the curse.

Because while the sales person for the software company might get someone to sign the bottom line, over the long haul, no one is going to be happy operating under the premise that the software will be able to do everything for everyone.

If you’re going to develop software for a business, you need to be highly disciplined and focused.  This is a multi-variable, multi-faceted undertaking.  Every software project is jam-packed with moving parts, including budgets, business goals, and most importantly, human talent.

We’ve tried to break down those “moving parts” into this special report:  29 Tips for Smart Software Development.  It’s a big picture approach to software development, and it includes everything from new technologies to budget control.  

Use these tips as overall guidelines, whether you’re going to start a project on your own or you’re looking to outsource.   Believe us, at some point or another, a successful software project requires them all. 

  1. Communicate, communicate, and don’t forget to communicate.  As is usually the case with any business project, excellent communication between a project stakeholders and the software developer is key.  Communication works best when it’s consistent and ongoing, so establish regular checkpoints.  
  2. Face-to-face is best (that includes Skype and video conferencing!)   Everyone communicates in different styles, but our experience has been that’s there’s no substitute for face-to-face conversation (that would include Skype with a video feed).  Phone conversations are second, email a distant third. 
  3. Define and agree on the project scope and deliverables. 
    Spend your money on software and avoid paralysis by analysis. You definitely want to get a sense of the full technical picture, but you don’t want to spend the bulk of your budget trying to define the project.  The best thing to do out of the gates is establish the overall business goals and the broad-based scope of the project.   The details will evolve with the project.
  4. Work in iterative phases, or don’t build the sidewalks right away.  An architect designed two buildings, but he did not plan for any sidewalks.  His reasoning was that he wanted to see how people would walk between the two buildings.  After a few months, he saw the worn patches of grass between the building that revealed the natural traffic patterns, which is where he built his sidewalks.  Follow his lead and develop in iterative phases.  Let your customers show you where the sidewalks need to be built.
  5. Remember the 90% rule. Time and time again, we see people developing software to cover everything a customer could want.  Remember that 90% of all software features are never used.  Establish the absolute essentials, and then proceed from there.
  6. Whatever process you use, make sure it can handle change.  There is no shortage of software development methodologies.    Whichever one you choose, not only should it allow change, it should embrace it. Change will help you adapt to the needs of your internal and external customer.  How you handle it will ultimately determine your succes.
  7. Be transparent.  Too often, developers will sit on a problem, hoping that they can correct later in the project.  It never works.  Sugar-coating doesn’t help solve problems – it exacerbates them.  Be upfront about risks to a project.  Remember, change is a constant, so the key to creating good software is to adapt to any issues that arise.  
  8. Set up regular-touch points with key stakeholders.   It’s easy for key stakeholders to start a project, and then turn it over to a team while they move on to other business.  That’s fine, but keep the key stakeholders involved throughout the project.  Even as little as a 30-minute meeting, twice a month, can help keep everyone on the same page.
  9. Technology should not dictate the business, it should support the business.   Everyone likes the latest and greatest new technology, but unfortunately, that’s not always what’s best for software development (or the bottom line).  Fully understand the business need before you even begin to consider the technology.
  10. Get outside your comfort zone.  You’ve got an established software system in place, but is it really achieving what you want?  Are customers using it simply because they have no other choice?  It can be helpful if you try and look at your systems from a fresh perspective.  Get outside what’s comfortable for you, and see if there are simpler, easier ways to accomplish your business objectives.
  11. Get business leaders and developers at the same table.  It’s very easy for the business leaders and the development team to drift into their respective silos and lose touch with the project.  That can be extremely detrimental to a project.  Your teams should meet on a regular basis to understand each other’s needs, and review the project with regular group walk-throughs. 
  12. If you can’t get them at the table, find the right go-between.  For some organizations, regular walk-throughs for both the business leaders and the developers aren’t possible.  If this is the case, find an intermediary that understands and can speak the language of both ends of the spectrum.
  13. Test, test and test some more.  Working in an iterative phase allows you to test your progress repeatedly with your target market.  This is critical.  The more frequently you test, the easier it is to find the key changes that need to be made.  It’s far easier to make something simpler more complex than it is to simplify something that’s extremely complex.
  14. Allow innovation.  Your company may have restrictions on the types of software that can be used.  Keep those as loose as possible.  New innovative approaches will keep you on the cutting edge.
  15. Let’s get real.  As you’re creating your goals and deliverables, be realistic.  If you want to be the next Facebook, do you have the budget to make it happen?  Is it even a feasible concept?  This is where the devil’s advocate should be welcomed at the discussion table.
  16. Produce deliverables every 3 to 4 months.  You want the team to produce something, then show and test continuously along the way.  Think in terms of short bursts, not a marathon.  
  17. Find the valid metrics. This is always a tough one.  How do you measure your progress as a team?  What exactly do you need to be tracking?  It’s difficult to do, but essential.  One key metric we like to show clients are the hours used to date on a project.  It can provide a snapshot of how efficiently we’re moving, or it can serve as a wake-up call that we’re spending too much project time on an insignificant item.
  18. Maintain an allegiance to the project.  Once a project begins, it’s very easy to get side-tracked by new technologies or other business needs.  Before you allow scope creep to take effect, be loyal to the initial goals of the project.  While you need to be adaptable, it’s also wise not to allow yourself to be distracted from your initial goal.
  19. Build budgetary controls into your project.  Build in a not-so-exceed element into your budget.  You’ll want to break down the project into all the budgetary elements, and then see how they roll up into a final figure.  Then review on an ongoing basis, maintaining budgetary control so the project stays in line with your business results.
  20. Scale for the future.  It may sound cliché, but your solution truly needs to be scalable for the future.  Considering how quickly technology changes, you want to be open for ongoing change as well.
  21. Think in terms of full-cycle development.  The critical areas of software development include designing, building, and deploying support applications.  Consider the entire process as you initiate a project, especially the support element.  All software should include a maintenance plan, with regular fixes.  
  22. Use specialized resources only when you need them.  Developing software is like building a house.  You don’t want to pay a plumber or an electrician their hourly rate for the duration of the project.  You just want them working for the short amount of time you need them.  The same holds true for software development.  Use specialized personnel only when you need them.  If you’re working with a software developer, don’t let them sign up all their resources upfront.  You only need to hire what you need.
  23. Your personnel will dictate your results.  The old adage “you get what you pay for” particularly applies to talent.  Use senior level people on your program, especially if you’re hiring an outside developer.  It’s common for companies to parade in high-profile executives for the pitch, and then backfill with junior level people during the project.  Get the top talent.
  24. Don’t reinvent the wheel.  In this high tech world, chances are good that your super-cool new program has already been developed.  Before you invest tons of money on a new project, do a thorough search and see if a product already exists (especially freeware) that can meet your needs.
  25. Examine in-house versus external resources.  Most software development projects will require on-site developers and external specialists to work together.  Clearly delineate who will handle what roles before the project begins to make the most efficient use of your time.
  26. Consider issues beyond the creation of the software.  Building the software is just step one of a project.  You also need to include the marketing and licensing strategy that you’ll initiate once construction is finished.  If you’re selling the software, how will you protect your licensing?  Do you have a plan for encrypting proprietary data?  How will you enforce security of the data?  
  27. When is the latest technology ready for prime-time?  As you’re investigating technologies that could be used in your project, keep in mind that new technologies tend to have bugs and gaps in their functionality.  If you have a long-term schedule, you might be able to deal with the issue.  If you’re on a short-term schedule, the risk might not correlate with the reward.
  28. Assess integration with other products.  New software will not operate in a silo.  In some way, it will likely integrate with other systems that have data.  Consider how all these systems will communicate before you begin work on your project.
  29. Schedule some slack.  You know change is inevitable, so as you’re building your schedule, allow for some slack time.  If everything proceeds without a hitch, you’ll look like a hero.  But chances are something unforeseen will emerge, so give yourself plenty of breathing room.

Phew, there you go.  Twenty-nine tips.  Follow them and we guarantee your projects run more smoothly.  

One last thought.  Like business, software development is a discipline game.  The loud-mouthed salesman who promises the world might get the sale, but he won’t get you to the finish line.  Take a smart, disciplined approach instead.  Not only is it a smarter way to succeed at software development, in our experience, it’s the only way.

About Us

Yahara Software is a Madison-based group of over 30 software developers.  Our Big Picture Approach to commercial software development helps us deliver cost-effective, high-quality, get-your-butt-to-market software products and services.