We've seen a pattern emerge over the years.
Company finds success.
Company needs to leverage technology in order to advance further.
Company hires a computer programmer.
Company experiences years of pain and betrayal.
Company loses faith that it is possible to do technology well.
Out of necessity, Company hires a software development firm to pick up the pieces.
After years of therapy and over-scrutinizing the software development firm, Company learns to trust the technology industry again.
Company regrets the wasted years, money, and missed opportunities.
Obviously, if you are a large organization with mature software development practices and standards enforced, you should go ahead and hire away. In fact, we can even help you do it through our staff augmentation, contract to hire, and direct hire services. But for the rest of you, we put together a little information on navigating this decision in your company, so you don't end up being the guy with the no ragrets tattoo.
Why do companies hire a developer?
There are numerous reasons companies hire their own developer. Here are some of them that we commonly see.
Hiring a team of professionals is too expensive.
A computer programmer right out of college might only cost your company $60,000 per year, while hiring a small software development team might cost $60,000 per month.
Wooed by a confident developer.
"We think we found a really good one. He really seemed to know what he was talking about. He is a real wiz kid. He seems like he could do everything we ask him to."
Lack of understanding of the software development roles and methodologies.
Sometimes organizations don't know there are more roles in software development than the role of a computer programmer. Other times, they see the varying roles and assume that these are for large organizations. "All we need is a simple computer program."
What goes wrong?
A company took the leap of faith and hired their first computer programmer. Here are some ways we often see that decision backfiring.
This can vary from lack of experience to straight fraud. A non-technology organization often doesn't know how to effectively recruit technical talent, nor should they be expected to. At Prominent, we wouldn't know how to hire a good brain surgeon. Adding to this problem is the fact that we are in the middle of a tight talent market where top talent is scarce.
Not filling all the software development roles.
If you are building a small house or a shack, you might build it by hiring a carpenter. But, if you are building a home of any importance or complexity, you might engage an architect, a general contractor, consult a little engineering, a plumber, an electrician, a carpet installer, a tile installer, a drywall finisher, etc. Even the best carpenter around wouldn't be the best or most cost-effective at all these roles. In the same way, the other roles in software development are really important. Developers want to implement great systems. Developers are often less excited about spending time on Architecture, Business Analysis, Quality Assurance, Project Management, User Experience, or General Project Oversight. Any given developer might do one or two of these roles adequately, but if these roles aren't all given the proper attention, the resulting system will suffer for it.
All your eggs in one basket.
What if your developer burns out and is last seen walking into a wooded area with survival blanket and pocket knife? Who made sure he was properly utilizing source control? Who else knows the system? Who else has the passwords? When you have just one or two developers, you might not even know the risks you are taking until it is too late.
If there is a skillset that doesn't come naturally to the average developer it is project management. Developers are notoriously bad at estimating and managing scope. Schedule delays and budget overages are too common in the typical software development project, and even more so when it is unmanaged or loosely managed.
Performance issues, security vulnerabilities, features that just don't work right, poor user experience, frequent system outages... These are a few categories of things we see when we look at systems which haven't been developed by a strong development team.
What am I supposed to do?
This all might feel a little discouraging. What are you supposed to do? You can't afford to hire enough people to cover all of the software development roles. Even if you could, you would have to hire a pretty large team to get the right ratio of these roles. A team with two developers doesn't need a full-time PM, BA, QA, Designer, or Architect. Worry not - you do have options. Here are some ideas that could save you a lot of time, money, and mental anguish...
Explore commercial off the shelf (COTS) solutions.
Obviously, we are a custom software development firm and we believe in the value of custom software. A custom solution is often the only option for organizations that provide specialized services. Likewise, companies who distance themselves from their competition through their unique processes are served best by software which supports their unique processes rather than forcing those processes to change. All that being said, many of today's technology needs have already been solved. Companies who have industry standard processes or common business problems are well served by a COTS solution.
Hire a firm to create a custom solution.
While an entry-level developer might cost you the same amount in a year that a solutions team costs you in a month, the team is going to produce similar quantity of features and higher quality for each dollar spent. So, instead of hiring a developer to plug away at your software needs over a two or three-year period, you can hire a firm to get the software into production in two or three months. Software firms can take various approaches to this. A fixed-price approach might be a good option if you want to keep scope increases (and cost increases) to a minimum. A time and materials approach might be best if you want to get started really quickly or if you have constantly changing requirements.
Hire a firm to develop on your fixed budget.
If you want to budget a certain amount to software each month, you could hire a firm to work within those parameters. This can be done on a time and materials basis with a monthly not-to-exceed budget or it could be done as a retainer. These options will not perform as well as a custom solution project, but might be a good option depending on your situation.
Hire a firm to do an assessment.
This is a great option if you don't feel confident about what to do. You might not have the time or expertise to look into the COTS solutions that are available. You might not even know a ballpark figure on costs and timelines for a custom solution. You might not know the best next step to get you the technology system you need. An assessment (what we call a Solutions Road Map) can fill in all of these blanks and arm you with all the information you need to take the next step. We believe this is one of the most valuable things a company can do for itself when looking to implement a new system.
As I was asking myself how to conclude this article, I remembered that I started writing an article on highlighting the importance of the non-developer roles and honoring those highly-skilled role players on the Prominent team. So, without further delay, shout out to all of you UX/UI designers, quality assurance specialists, business analysts, and project managers! Good software depends on you to do your job well. We salute you.