custom software development
custom software development remains a mystery to many.
While everyone uses some form of computer these days, be it a desktop, a laptop or a smartphone, very few of us know how they were created, or how they do the things they do.
In truth, there’s no need for the role of developers to be a mystery. It’s a field of expertise that is vital to the health and wealth of both individuals and organizations, and understanding its ins and outs can help anyone to gain both an appreciation for what this field brings to the world, and an understanding of how application development might facilitate greater personal or organizational success.
software, program or application?
These terms are often used interchangeably, but the truth is that there are subtle differences between software, programs and applications.
Software: An overarching term that is generally used as a contrast to hardware. It is simply the programs and other information used by a computer while it’s running. All computer programs and applications are considered ‘software’, and the term can also refer to multiple programs and applications running together.
Program: A set of instructions telling a computer what to do. A computer program could run in the background of an operating system without a user knowing, or could present to the user through a graphical user interface (GUI). All applications are computer programs.
Application: A computer program (or a group of computer programs) designed for the end user which features a GUI. Adobe Photoshop and Microsoft Word are computer applications, for example.
In this way, the only type of software that most computer users will ever really deal with is application software.
It’s also important to note that while most developers will have a computer programming background, there’s a reason why the process is called software development rather than simply computer programming. The writing of the actual program is but a small part of the software development process, with many steps both before and after. This makes the developer’s role an incredibly multi-faceted one.
why is application development important to my business?
On the surface, off-the-shelf applications seem the obvious choice to get your computer completing the tasks that you need done. But while a person on the street would be silly to pay to have their own spreadsheet application developed when Excel is right there in the Microsoft Office suite, the same may not apply to a business looking to automate a portion of their proprietary process.
Most organizations require very specific tasks to be completed by their computers. And while an off-the-shelf solution may be capable of completing these tasks, they will often do so inefficiently or not as effectively as they could.
More and more organizations are realizing this, and see application development as a real investment in their business. After weighing the higher upfront costs against the greater efficiency and effectiveness that a custom solution can offer, it might be surprising just how quickly a custom developed application can pay for itself.
How is a computer application developed?
The development process for computer applications is referred to as the systems development lifecycle (SDLC). It follows a similar path no matter the application being developed, composed of the following steps:
Planning: Identifying desired outcomes and considering the solution options.
Analysis: Listing the functional requirements and anticipating any potential issues.
Design: Devising the application’s features, components, and exactly how it will work.
Construction: The application is written by programmers, following the design specification.
Testing: The application is tested for bugs and to confirm that the desired outcomes have been met.
Implementation: The application is made available to the user.
Support: The developer keeps in touch with the user, monitoring their experience. If recommendations for revisions are made, they will make their way through the lifecycle as well.
But while the steps of any systems development lifecycle should remain the same, the execution of these steps can vary. There are two methodologies which are most commonly practiced – waterfall and agile.
Waterfall or agile application development?
So, if they cover the exact same steps, how exactly do these methodologies differ?
Waterfall: Before any other software development methodology existed, there was ‘waterfall’. This method demands that you complete each step in order and in its entirety before moving on. It is a method borrowed from real world construction projects. It offers clarity with a set budget and timeframe based on a very detailed specification. While it offers the customer certainty about budget and timeframe, it also makes the process less flexible and take longer to make changes.
Agile: Software developers eventually decided to capitalize on the fact that they had more flexibility than bridge builders, and developed the agile methodology. It is designed to be adaptable – developers begin with a loose set of requirements, and run through the SDLC process in a series of iterations that gradually form the application, bringing it closer to completion with every phase. While budget and timeframe are difficult to set in stone, the ultimate end product is a result of these iterations rather than being fully specified up front. The adaptability of the agile methodology is a huge benefit and the process allows for input by the end users or product owners during development, enabling them to interact with the software and incorporate their feedback into the the next iteration.
So application development can either be based on a detailed specification and rigid process, or a general concept and agile process. The decision on which methodology to follow must be made by the customer, in consultation with their application developer.
How can I assist in the development of my application?
If an organization chooses to go down the custom application software route, they’ll find themselves at the beginning of a significant process, and one where the light at the end of the tunnel can often be hard to see. But with the rewards being great, it’s a process that the business would be wise to invest as much time and energy as possible.
As an application development customer, there are a few things that can help to make the development process a little easier and more efficient for all involved:
Respect your developers: It can be tempting to see developers as robots, mechanically punching in code in response to barked orders. They are not. Treat your developer with respect, and the entire process will be far smoother and quicker.
Listen to expert advice: When it comes to application software, the developer brings a depth of experience. This is what they do for a living, after all. Listen to their advice and recommendations, and be transparent with your questions and concerns. View this process as collaborative. The final product will be all the better for it.
You can do anything (with the necessary resources): If you can dream up a feature for your application, in all likelihood a good developer will be able to bring it to fruition. But great things take time, so this process is unlikely to be cheap. If you want something ground-breaking, be prepared to invest.
Be constructive in your criticism: ‘Why is my software glitchy?’ This question is not a productive use of either your or your developer’s time. It’s like asking a journalist ‘why is there a typo in this article?’ People make mistakes. Advise your developer of the glitch, give as detailed a description as possible, and they’ll go about fixing it.
Applications are becoming as integral a part of our lives as eating and breathing, and it seems that their influence is only going to become greater in years to come. In all likelihood, your organization could stand to benefit from a custom application crafted specifically for your situation. A tailored suit always looks and feels better than one off the rack.
If you choose to go down the custom path, understanding the ins and outs of application development can allow the process to run smoothly, and will ensure that the final product is delivered exactly as you need it.
have questions about custom software development?
CSG thrives on serving our clients by creating great technology solutions. We are passionate about our craft and believe it’s important to grow as people, consultants, teammates, and engineers. If you have any questions about BI or related technology, please don’t hesitate to ask!