Getting what you pay for in software development

A brief exploration of the radical differences in contract software engineering quotes.

Software companies are everywhere these days. If you add in the number of freelancers on contractor sites, craigslist, or the guy your friend knows, they are like grains of sand on the beaches. And they all get the same question every day: “How much would it cost to build an app?”

This is a question that has been addressed on a thousand blog posts, mainly by frustrated engineering firms who struggle to understand how people can ask such a question. They give answers like, “How long is a piece of string?” or “How much does a house cost to build?” These examples are designed to show that the cost of something custom varies wildly based on what the specification is. This, however, is only the most surface level answer to that question. The real cost multiplier, and the hardest part to explain and quantify, is quality.

Quality of development is not simply a measure of your experience (e.g., How nice were your agency’s offices? Did they perform frequent check-ins? Did you feel good about the process? etc.). I’m talking about the actual quality of the code itself – not just the final product’s look-and-feel.

If you are paying a lot of money (relatively speaking) for a custom built application, it should be obvious that it was made with a thoughtful user experience and appropriate graphic design, while not throwing errors or leading to dead ends. Right? Unfortunately no. Even though this should be the bare minimum, getting the basics handled correctly is rare in my experience. As sad as that is, these signs of quality are something that you can shop for. You should be able to see examples of your potential agencies’ previous work or of your freelancer’s portfolio. But you need to test them in real life, as if you were a real user, before committing. Do not believe anything you see in a PowerPoint presentation.

The biggest difference in software design company prices is the quality you don’t see. These are the tougher to articulate items. What I’m talking about here is the commitment to engineering best practices and processes, the quality of the code, and the thinking behind that code.

A decent developer can build many of the same applications that a great developer can – especially your typical business software system. It might even take the two teams the same amount of time to complete the same project. And the apps might be indistinguishable when they launch. Great code, a real belief in process and best practices, and solid team management is not as apparent in the first iteration of a product, but it becomes glaringly obvious in later releases.

As a product matures, new features are added, interactions with other systems are required, and user bases grow in size. These three fundamental points are rarely considered by your average development firm or freelancer.

When you add new features to a piece of software, you will often need to change the database structure or the APIs of the original design. These can result in large scale, breaking changes; meaning updates will break previous versions of the application. This type of work often requires huge time commitments to testing the new versions, providing triggers and fail-safes for existing users, and of course writing all new code. Top class developers on the other hand design their systems from the get go to be extensible. They plan multiple API versions from day one, have contingencies in place for breaking changes at inception. They may have already built your system to be multilingual (even though it is only launching in one language) because they know it would be a huge undertaking to add on later. They will take into account accessibility standards, security, and data optimization.

The ability to interact with systems outside of the application’s native environment is another frequently overlooked engineering problem. Abstracting your APIs with middleware might take an extra day or two at the beginning of your design process, but it might save you months of work down the line when you want to change out a data provider. Documenting the process as you go along, explaining to future developers how this should work, is easy when you’re building it. It becomes a huge task of reverse engineering if you have to do it a year later.

Finally, we should talk about scalability. A well-designed system will have architectural structures in place that are designed to expand or to leverage scalable hardware systems, while balancing the long-term costs of growing. A lesser development firm will have a “cross that bridge when we come to it” attitude or will throw expensive additional monthly hardware costs at a problem that could have easily been avoided in the design process.


The problem with picking a software engineering firm is that they are not going to bore you with the details of their documentation process in the sales pitch. I haven’t even touched on things like automated testing of code, good relationships with distribution partners, well qualified project managers, and penetration testing as a standard practice. The problem is that almost no one is going to include these invisible quality requirements into a specification they put out for bid. Yet, these are the strongest determining factors in the long-term success of any software project. I promise.

Your options are to have a really solid technical lead on your team to evaluate the work being done or to pick a company that does go into these details in their sales pitch. You should be aware that doing things the right way is going to cost more up front, but it will save you double or even triple the time in the future if you do it the wrong way.


Truly Awful LinkedIn Behavior

We all love to hate on the business social network site. Here are current top five annoyances with how the system is used.

The Uber Humble Brag

This is where LinkedIn can out-shine even the worst of what Facebook has to offer. These professional humble brags often cite the team or company as the disguise.

Totally exhausted from working on fixing the last of the software bugs in my Fortune 50’s super important project. Look at the shape of my 5 star hotel on a Swiss mountain top, it’s a mess because I’ve been working so hard.

Please, stop.

The Mr. Masters

If you have an MBA it does not give you a title. Do not use it after your name. If you have a PhD, and or some degree that might have something to do with the professional certifications you are required to have for your job, then I can kind of see how it is acceptable. But never, ever, use your MBA.

InMail Monsters

Typically this networker or sales person sends one of two messages:

Hi Greg,
We don’t know each other, but I we have a lot in common and I’d love to have you in my network.
Sales Person

Or the other equally common:

Hi there,
LinkedIn recommended that we should know each other, so I’m reaching out because we both have legs in common.

Look, I get it. You are using LinkedIn to prospect and sell. I do the exact same myself. But if you are not even bothered to try and squeeze one personal or business related item into your greeting, I’m not buying.

Inspirational Text Image Poster

Image Text Is Annoying

The Things I Hate Poster

Writing about things you hate is often easier than writing about what you are passionate about. Yes, that’s absolutely what I am doing here. Rather than complain, why don’t you go out there and make a difference? Why don’t you go build something better? Because it’s the end of the day on Friday, OK? And I just had the last one of these “I think we should be in the same network” messages, and I cracked.


New Delhi New Years

If you ever get the chance to go to an Indian wedding, take it. People save for years to put on a display of food, dance, music, celebration, and pure opulence, for days on end. For the last ten days I’ve gotten to join the insanity, dance to the endless drums, and do a bunch of touristy stuff to boot. I only saw a small part of the country (from Delhi to Agra basically), and only lived the 5-star tourist experience, but that little exposure was enough to both delight and horrify me. You need to go.

I was asked to bring my kilt… so culture clash!

I’ve wanted to visit India since as long as I can remember. As a kid, my grandfather told me stories about his childhood there during the Raj, and then again in the early days of his military career. I used to think that Indian food was what all grandparents gave their grandchildren for breakfast, and what your dad cooked when the grandparents came over for dinner. Basically grandparents equalled malasa in my mind. My favorite poems were all Kipling, and when I drew or painted, the Taj Mahal was almost always front and center (regardless of whether it was a drawing of Superman or not). So when my friend, Prateek, invited me to New Delhi to meet his new wife and celebrate with their families, I jumped at the chance.

The first thing that hits you in New Delhi is the pollution. Nothing you read can really prepare you for the air quality. The winters are even worse due to the millions of people who burn wood or coal to heat themselves. I’ve never had to think about an air quality index, but I discovered that Tampa was a 38 when I left, and New Delhi was a 401 the day I landed. It’s so bad it has its own Wikipedia page. I was there 10 days, and never got used to it. Writing this after being back for three days, I still have a persistant cough, psychosomatic or not. This perfectly illustrates the biggest take away I have from trips like this: remembering to appreciate how good we have it in the US.

A shot from our hotel room

While many parts of Delhi (old and New) are marble coated, air-conditioned, commercial spaces, the vast majority is in pretty rough shape. As you move away from the city center, buildings are literally crumbling from disrepair. In parts of Agra, filled with tourists being rushed in an out, are completely collapsed buildings that have become informal dump sites, with scavenging dogs and cows being fed cabbage. People sleep in the streets, and beggars rap on the windows of your Uber, all while the coffee shops and carpet emporiums neatly sweep the dust off their doorways. We accept American Express.

The disparity between wealth and poverty is like nothing I’ve ever seen before. I’ve never been anywhere in Africa or Asia that come even close. I walked out of a clothing store on a market square to see two men, both with terrible deformities and missing limbs, pulling themselves through the crowds on carts 5 inches off the ground, begging for change. Stepping between the space the two carts created, a woman in a sari and her daughter found a clear path to their brand new Range Rover.

Just cows… grazing through the trash

Regardless of circumstance, everywhere we went we were treated extremely warmly, but frankly. Indians don’t pull their punches. When they talk about the problems the country faces, it’s all very honest, and often brutal. The only times that the conversations diverted from the path of warmth+humor+frankness were during any negotiations of commerce. There is a deal to be had around every corner, but as a “Westerner” it can be exhausting to keep up. Other than that, people were the same as everywhere else in the world. We discussed the weather, politics, religion, and cricket. It was so good to talk to people who understand cricket!

On the hospitality side, or the service side, I don’t think I’ve every experienced anything better. People would go so far out of their way to help us and to make us feel comfortable. People were so friendly, and so accommodating, that I think I tried not to ask for too much; the level of effort being put forward almost made me uncomfortable. There was more than one occasion where I would ask a question like, “how do we get to the spice market,” and the next thing you know is someone is taking you there by the hand.

“Foreigner privilege” might have something to do with this. Tourists represent a significant revenue for a developing economy, so we might look like dollar signs with legs. This does feel really weird when done at the institutional level. At ever temple and tourist site, there are separate queues for foreigners. The line at the Taj Mahal for Indians was probably a 3 hour wait, but for us there were only two people in front. The tickets for tourists are about 10 times as much, but that’s still an insanely small amount for an American.

The one place this did not hold true was the airport. Our flight left at 3:30am, so we figured 11:30pm would give us plenty of time. In the end we made it, but it was cutting it close. The security “line” was more of a disorganized mob; people fighting, yelling, pushing, and trying to get to the front. It took two full hours to get through, and I’m amazed the authorities didn’t step in.

The “line” at Delhi airport

Would I do it all over again? Absolutely. As much as it sounds like New Delhi is hard on the senses, overwhelming, polluted, and dirty, it is still magical. There are centuries of life and architecture and food and religions, all living on top of each other. I’ve never been to anywhere like it, and I am extremely grateful for the experience.