Software is a solution that solves a particular problem. While all businesses have problems to solve, not all problems are solved with software. Within the realm of problems that are solved with software, not all problems fit the same solution.
The solution can vary from relatively cheap (Commercial Off the Shelve Software aka COTS) to relatively expensive (fully custom made solution using a stack of your choice). The solution that your customer needs lies somewhere in between and so does the cost (from hundreds of dollars to tens of thousands or even hundreds of thousands and up).
So what is your job as a software developer? That very well depends on your role. If you are the one working directly for the customer, your job is to listen intently and recommend the best possible solution. If the decision for the solution has already been made, then your job might be to simply implement the solution the best way you know how or recommend someone who can.
Determining the best solution is subjective but can be evaluated on some objective measures. That brings me to main topic of of this post.
As a software developer you have a moral obligation to recommend to the customer the best product they need. It’s easy to go for the most rewarding (monetarily) solution but that won’t be the best option for your customer. Ultimately the customer may decide against whatever recommendation you present and that is perfectly fine, but at least they are making an educated decision.
So how do you become a developer that knows how to make these types of decisions?
The only way to know how to choose wisely is to know and understand your options in the first place.
Whenever a customer asks you for a solution, you should recommend a solution only after you have heard the customer’s criteria.
- What are they trying to accomplish? No really? Don’t assume that they really know. Sometimes you must really dig it out of them.
- Budget – Realistically what is their budget? You can’t make assumptions on that. It may be best to get an upfront range of what they have in mind. It would be useless to even consider a custom solution if their budget is nowhere near that solution.
Here is a list of questions you should ask yourself once you know the answer to these questions.
- Are all the requirements truly requirements? Sometimes the customer may not have a full understanding of how things work and may be asking for something that is resolved in a different manner.
- Is there a COTS product that can meet these requirements? With so much software available on the market chances are software exists for that purpose. COTS software is not necessarily inferior by any means. Think in terms of buying a movie as opposed to having a team make you a custom film of your great grand father. The COTS may actually be superior to the custom solution. The downside may be that it does not fully meet your needs.
- Would a content management system (CMS) work in this case? Many applications are now websites even within the intranet and that’s for good reason. The data can be shared by multiple users. Content management systems allow much faster development, easier maintenance, and faster response time to extensions than custom built solutions. The most well known CMS is WordPress but there are many others.
- What are the shortcomings of a CMS in this case, for now, and for the future of the solution? Compared to a COTS solution you need a word press developer. Compared to a custom solution you may not be able to implement a feature unless you turn to actual coding.
- What are the benefits of a CMS for now and for the future? Custom solutions are used by entire communities of users. Issues are more well known than custom solutions. Plug-ins are abundant. For example you may have a site that does not require a store today but what about in the future. Most CMS solutions are extensible at a relatively low cost.
- What are the shortcomings of a custom solution? Custom solutions are expensive to maintain. Labor rates for developers are high. In many cases custom solutions have very unique implementations that require deep analysis for a maintainer. Depending on the skill of the developer the solution may be filled with security holes. The solution may also be very rigid in design and maintenance costs will likely dwarf the creation costs.
- What are the benefits? Custom solutions allow you to implement anything and I do mean anything (within the realm of electronics). However, one could argue that some CMS like wordpress also allow this customization through custom PHP code. The downside is that it’s PHP and a “true” developer hates PHP.
The answers to these questions are not all inclusive. You must taylor the answers to your customer’s particular needs. You may even need to ask additional questions.
Why does this matter you, the beginning programmer? Well chances are that someone will turn to you to ask you to create their solution but before you jump into solving it it’s good to be aware.
It helps to be aware so that you can perform the best job for your customer. Sometimes that may be no coding at all.