I’m a DIY (Do It Yourself) sort of fellow. I just finished fixing the bathtub that my 4 boys adeptly clogged with baby wipes and bath loofahs. That went pretty well and was definitely cheaper than calling a plumber. However, yesterday I tried to repaint my glasses. I tried model paint, spray paint, electric anodization, oxidation, and flame anodization before I destroyed them and bought a new pair. Thankfully my wife was in bed when I constructed a forge out of fire bricks on our kitchen table and was quenching red hot titanium in vegetable oil ;)
So, I get it. I hate to outsource labor, but sometimes it makes sense. But how do you know when it makes sense? When making the decision, here are a few factors to consider:
Technically, all you need to develop software is a programmer. Practically, if you want it to contain the right features, present an intuitive and aesthetically appealing interface, be reasonably bug-free, and be delivered on time, then you should probably value the other software development disciplines as well. These include User Experience, Designers, Operations (IT), Product Owners, Quality Assurance, and a few more depending on the application.
Additionally, there are different types of developers. Ignoring language, your main categories are Front-End (Web), Back-End, Cloud, Mobile, Desktop, Big Data, and Firmware. Even still, I’m leaving out a whole slew of them. For example, if you are developing smart lights then you probably need the following:
- Front-End Developer (Angular, React, Vue) who can build the brochure site and likely some sort of customer portal.
- Back-End/Cloud Developer (AWS, GCP, Azure) who can build and configure the backend services to manage the devices and process telemetry.
- Mobile Developer to build the client native app for provisioning and controlling the device.
- Firmware Developer for building the device’s software.
The problem is that many companies don’t need all of those roles in a full-time capacity.
I’ve been a solo developer on projects before and it can be tough and a bit dangerous. You don’t have anyone on the same level who you can bounce ideas off of. No one is there to review your code and help you improve. There isn’t anyone there who can help you solve a new problem by drawing on their own unique experiences. Working closely as a community of practitioners is so vital for the growth of an individual in their discipline and the health of the work they produce.
There are some meetups, slack channels, and other organizations out there that try to provide this community but all of them fall short when compared to working shoulder to shoulder in a community of practice.
Everyone is worried about backing up their data. You want some fallback in case the AC breaks down at your datacenter and your database server melts (that happened once…). However, few people consider that some of the most important data is the knowledge that is in their developers’ brains that enables them to efficiently operate and improve your software. Lose your sole developer and be prepared for a serious efficiency hit.
Many organizations struggle with creating a consistent flow of work for their software teams. Often market factors will necessitate speeding up or slowing down for periods of time. It is unreasonable to hire full-time staff to handle your peaks and keep them on through your lows. Hiring quality is also a slow process and your response times may be insufficient for your business needs. It also doesn’t look good if you routinely lay people off.
Technology isn’t the specialty for most companies. However, in this day and age, it seems that every company needs a technology arm to keep that competitive edge. The problem is that most organizations simply lack the requisite knowledge and skill to properly hire and grow an effective software development team. It is a lot harder than most people think and many seem to accept the low performance of their technology team as normal.
Many companies find it difficult to attract the kind of talent that they need to be successful. The current market favors the technologist as the demand for qualified workers continues to outpace the supply. Some companies find that they have to court technologists by creating a culture that is attractive to them. Many don’t know how to or find it difficult in their environment.
The Consultant Benefit
Sometimes it makes sense to hire and build your own team, but it isn’t a trivial investment. It takes time, money, focus, and a rare skillset to pull it off properly. If you can, then by all means, do so. However, we find that most companies don’t and we want to save them from that pain and waste.
The consultant model offers a lot of benefits that enable you to be successful and to focus on your differentiating factors. Consultants generally have in-house talent covering the spectrum of software development disciplines, which you can gain access to on a part-time basis without making a full-time investment. This environment provides their workers with a community of practice that can help out in a pinch and proactively help each-other grow. They also tend to have the fluidity to scale up and down with your needs.
At Induro we build continuing education into the normal work week to ensure that everyone is growing in their craft. This is really attractive to good developers as they want to grow in a community like that. We also make sure to put at least two developers on each project to provide feedback and a back-up. Everyone also has the freedom to pull in others to consult, even if they aren’t on the same project. So with us you are getting more than just a consultant, you are getting a team. We call this offering Teams as a Service.
Erik is an agile software developer in Charlotte, NC. He enjoys working full-stack (CSS, JS, C#, SQL) as each layer presents new challenges. His experience involves a variety of applications ranging from developing brochure sites to high-performance streaming applications. He has worked in many domains including military, healthcare, finance, and energy.