Published
12/16/2015
Categories
Software

What is Great Software Development?

methodology diagram

What Is Great Software Development?

Great software development produces fast systems that work reliably and efficiently. Great software development stands on the shoulders of previous software that has come before, when unnecessary, it shouldn’t reinvent the wheel. Well crafted software development is driven by great design, coupled with efficient, and forward-thinking project management.

So there’s the elevator pitch. But you can tell great software development from it producing accurate, fast-running outputs, within a relatively short period of time. Even when facing moderately changing circumstances. E.g., implementing new accounting software, integrating a multi-store function. You achieve this through smart design & planning from the beginning, and execution by experienced developers and project managers who can map-out software designs and make intelligent decisions about development priorities for your business.

How Do I Achieve Great Software Development for My Project?

Beyond these high level strategic approaches, there are some tactics that can increase your success.

For instance, be sure your software engineers are using well-established software development frameworks. In the web world, for custom apps, the backend would be something like Symfony, or Rails, or Django. The front-end might involve a templating engine like Twig, a JS front-end like Angular, and a CSS framework like Bootstrap.

Using these frameworks helps to ensure your developers are following industry best-practices, like the MVC (model view controller) pattern, Service Oriented Architecture, and other software engineering design patterns that have been long established.

Proper use of these frameworks help to ensure components of your system remain decoupled, so that as your software changes and evolves (and your software will need to change and evolve over time), that change process can be more easily managed, without wide-scale need to refactor.

We’re getting into the technical aspects but another good idea is to ensure your engineers are utilizing an ORM or ODM system. It’s not a requirement to know, but it allows you to ask further questions in your software development consultations. With that said, these acronyms stand for Object (Relational | Document) Mapping. Most modern software architecture is object-oriented, yet most data storage structures are not.

Object oriented programming is a really wise and efficient way to organize and write software, and relational / document databases are really wise and efficient data storage mechanisms. ORM / ODM ‘s manage the interaction between the software and the data store, enabling object-oriented ways to interface with relational and/or document storage engines.

The results of using an ORM or ODM compared to hand-built database querying is faster development, faster adaptation to data structure changes, more consistent database interactions, and automation of the most common and trivial database interactions, helping to avoid reinventing the wheel.

One final tidbit we’ll share for now relates to how the project is managed. The agile software development method is probably the smartest approach available for most projects.

The core principles of agile software development include developing features by order of priority, time-boxing feature development into “sprints” each between 1 and 4 weeks, daily scrums to stay apprised of developer progress and challenges, client check ins that bookend each sprint, and an understanding that priorities and requirements will change over time.