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.

Conclusion

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.

Previous ArticleNext Article
I help cruise lines turn their technical ideas into reality. I'm experienced in all stages of innovation and technology management. I've also been programing since I was 8 years old, and have somehow retained the ability to have normal human interactions. Occasionally I speak about how Industrial Psychology and Neurophysiology can be interrogated with IT and systems management, because I spend a lot of time thinking about the subject, as strange as that may seem.

How to Land Your First Tech Job: Or at least what I will tell you


Ah, the age-old question that haunts every college graduate’s dreams: “How do I get a job?” But not just any job. A job that doesn’t involve asking, “Would you like fries with that?” unless it’s a cheeky Slack message to your new tech team while deploying code (because, let’s face it, multitasking is key).

So, you’re fresh out of college, armed with a degree, and ready to conquer the tech world. But there’s a catch – everyone wants experience, and you’re fresh out of that. It’s like needing a job to get experience but needing experience to get a job. A real chicken and egg situation, except less philosophical and more annoying.

Now, before you start sending LinkedIn invites to every CEO with a pulse, hoping one of them will notice your enthusiasm (or desperation), let’s talk strategy.

1. Start a Blog – No, Seriously

First things first, start a blog. I give this advice to everyone, and you’re not going to take it, but I will keep trying.

“But I’m not a writer,” you protest. Well, guess what? Neither are most of your competitors when it comes to that job interview. But here’s the thing – writing helps you articulate thoughts, share knowledge, and most importantly, shows you’re committed. Write about what excites you in tech. Dissect the latest AI breakthrough, or maybe just rant about why tabs are better than spaces. It’s your stage. It’ll also help you greatly when interviewing. If you’ve actually researched and forced yourself to write about a topic, it’s WAY easier to talk about it.

If the thought of cranking out 500 words twice a week makes you sweat, consider this: if you can’t commit to a blog, how will you commit to a job? Harsh but fair.

2. Ship Something… Anything!

Next, if you’re a coder, designer, or any species of maker, you need to create something and get it out into the world. A portfolio is great, but a product is better. It doesn’t have to be the next Facebook. Heck, it can be a to-do list app that makes a satisfying ‘ding’ sound when you check off an item. But it shows you can see a project through from start to finish. Plus, nothing beats the thrill of seeing your creation out in the wild, even if it’s only used by three people (including your mom). And three users is way more than what most juniors come to interviews with.

3. Polish That LinkedIn Profile

Ah, LinkedIn, the worse MySpace of the professional world. It might not be the most exhilarating social network, but it’s where the grown-ups and LinkedIn Lunatics go to humble brag. So, get your profile in tip-top shape. Showcase your blog, add a professional photo (no, your beach selfie doesn’t count), and maybe sprinkle in a few insightful comments on posts. Show the world you know how to play the game. It’s only for show as a junior, and everyone knows it, so don’t go overboard.

4. Read. Then Read Some More.

While not the world’s biggest Jim Mattis fan, I got a bit of a kick in the pants after reading his Call Sign Chaos: Learning to Lead. In it he said “If you haven’t read 100 books on the field in which you claim to be an expert, then you are functionally illiterate.” That was a bit of a wake up call for me as a CEO. So if you’re a junior, lets make that rule “If you haven’t read at least five books about your chosen profession, you’re not ready to be a junior anything.” It’s a bold claim, but let’s face it, you’re competing with people who live and breathe this stuff. Catch up.

5. Network, Even If It’s Painful

Finally, networking. Yes, it’s awkward. Yes, it feels like speed dating but with business cards. But knowing what’s happening in your field and who the players are is invaluable. So, go to those tech meetups, chat with people, and yes, maybe even endure a few boring conversations about someone’s revolutionary blockchain startup. Try and meet one or two people who know me before you reach out to me. Then we can have someone to gossip about, and it’ll feel more personal. Tampa has a few good tech networks that throw decent, free events where you can find people who know me. Check out Tampa Bay Wave, Embarc Collective, and Tampa Bay Technology Forum.

And there you have it. Five steps to improve your odds of landing a job in tech. Most won’t follow this advice, but if you do, you’ll be ahead of the game. And who knows, one day, I might be asking you for a job. Or at least, for some tips on my blog.