What exactly is custom software?

software business

The world is full of software. Just take a moment to look around you and you’re probably surrounded with many examples. Whether it be the browser that you’re reading this in, the software you use at work, or the software that’s running inside your car, software is everywhere these days.

Most of the time, we are interacting with software built for the masses. We’ve got Instagram, Whatsapp, and Facebook for our social lives, we have Word, Excel, and Acrobat at work, and we have so much software behind so many devices we use everyday.

While these applications are incredible and improve our lives in so many ways, there are times where they aren’t quite what we’re looking for. Especially when it comes to work or running a business, sometimes the applications out there fall short in one way or another.

So what do you do?

You really have three options

  • Put up with existing software and live with its shortcomings
  • Wait for updates or a brand new application to come out that hits the mark
  • Build something yourself

Now when it comes to building it yourself, most of us don’t have the luxury of knowing how to program a piece of software.

That’s where custom software comes in.

Custom software is software that is built specifically for you, your business, your needs, and your wants rather than software that is built for the masses. It’s like the difference between getting a custom, bespoke suit made for you versus buying one off the shelf.

Typically, because a business doesn’t have the technical knowhow to build custom software themselves, they hire another company to build them a piece of software to solve a problem they are having. The company they hire is a custom software shop and the software they build is custom software.

The many forms of custom software

Custom software comes in many forms and is sold by many different types of companies. When it comes to the software itself, custom software shops analyze the problem and decide what’s the best technology to use. They may recommend a web application, a mobile application, a desktop application - or even recommend that custom software is not the way to go at all. While custom software is typically built from scratch, sometimes custom software solutions involve integrating existing applications.

If this is getting a little confusing, let’s look at an example of a good candidate for custom software. Let’s say you run a plumbing company. Today, you get appointments by having people call a phone number. The appointment leads to a service call that you fill out on paper and give to one of your plumbers. They complete the job, fill out the paper service call, come back to the office and file the final report.

You might think to yourself that it would be great if a lot of this was digitized and automated. You go to a custom software company, educate them about your workflow and they build you a custom mobile application for your plumbers who can receive service orders on their phones, fill out the reports on their phone, and have the data automatically sync to a back-end office application that you can view. They may even build you a web application that allows your customers to book online. That would be a great candidate for custom software.

Who sells custom software

When it comes to the companies that offer custom software services - there are a whole bunch and they call themselves all sorts of names. To make things more complicated, sometimes companies that are focused on other offerings may offer custom software solutions as a side service. For example, even though Marketing agencies are focused on marketing activities, they may still offer custom software services since that may play into their strategy. Below is a small list of types of companies that may offer custom software services:

  • Custom Software Shop
  • Custom Software Services Company
  • Software Firm
  • Software Consulting Agency
  • Software Consultant
  • Software Freelancer
  • Digital Agency
  • Marketing Agency
  • Web Design and Development Shop
  • Mobile Development Shop
  • Software Solution Firm

All these types of companies and more offer custom software.

When it comes to the service of custom software, typically companies do a lot. Among other things, they will analyze your problem, make recommendations, strategize with you, implement a robust development process, design the UX and UI, implement the code, and deliver the final product. In most cases, they will also maintain the software. By the end, if you’ve dealt with a good custom software shop, you’ll have a good sense of what it’s like to run your own software company.

Some great companies local to Ottawa that do custom software include Industrial, Netfore and BitHeads (Not to mention BiteSite :)). Outside of Ottawa, there are amazing companies like Thoughtbot and TWG.

So what?

Now that you know what custom software is - what is the big deal? We’ll be writing more and more articles on this subject, but custom software is all about solving a problem. By solving that problem, your company may get the edge on a competitor, your company may run more smoothly and efficiently, or your company just may experience more joy at work. Whatever it may be, it’s all about identifying problems that can be solved with software.

So are you a business owner? Spend 10 minutes thinking about your business and the challenges you face. Ask yourself could something be done better? Could you picture yourself using software to solve it?

If so, custom software might be the answer.

Casey Li
CEO & Founder, BiteSite

The Pros and Cons of Custom Software

software business

When you run a business, you may inevitably hit a point where you decide that software can help. Whether it be a website for marketing purposes, an app to help with automating workflow, or a solution to give you an edge over your competition, software can solve many use cases and bring many benefits.

But as you start to navigate the world of software you may be faced with information overload and have trouble deciding which route to go.

When dealing with business problems that can be solved with software, generally your solutions fall into two major categories:

  • Existing Applications
  • Custom Software
    • Custom Software involves hiring a team to build a piece of software specifically for you and your needs. We sometimes refer to the companies behind these pieces of software as “Services companies”. BiteSite falls into this category along with TWG (https://twg.io/) and Thoughtbot (https://thoughtbot.com/).

In this article, we explore some of the biggest pros and cons to choosing custom software as opposed to the alternatives.

PRO #1: Custom software solves your specific problem

The number one reason businesses choose custom software is that none of the alternatives truly solve their problem. Existing applications may come close, but may be missing one or two key features. A lot of times this happens when businesses are in very specific niches or have complex workflows that are not common. They’ll try what’s on the market and end up not satisfied with anything out there. Product companies typically develop software that suits large markets with common issues. If you find yourself in a smaller market that’s not served by existing applications, custom software is a great way to ensure that your chosen solution actually solves your specific problem.

PRO #2: Custom software is optimized for you

When exploring existing applications, they may solve your problem, but they may also solve 100 other problems. There are a few issues with this. First, all these extra features can clutter your experience and get in the way of what you really need. Secondly, all the extra features may actually be overwhelming leading to a frustrating user experience. And third, you may be paying for a lot of functionality that you’ll never use.

With custom software, in general, the features that go into the product are completely dictated by you and your business. This way you can ensure that only what you need goes into the product and nothing more. Furthermore, with a reduced feature set, you get the added benefit of quality over quantity.

PRO #3: Custom software teams are hired to work for you

When using existing applications, they may be incredibly powerful and feature rich, but consider for a second that they may also be serving hundreds of thousands of customers. 95% of the time the app may work great, but there may be 5% that doesn't work so great. So you call up the support team and you make a request to add a feature. The problem here is that your feature request might be competing with hundreds of thousands of other customer requests. While product companies will do their best to address your problem, the reality is they may not get to it for another year or more.

With custom software, you can be sure that your voice will be heard and that the features you want will be prioritized because you'll have a more direct line to the team and the team is generally serving fewer customers. The extra money that you pay for custom software gives you dedicated resources to solve your problems.

CON #1: Custom software is expensive

One of the biggest and most obvious reasons to NOT choose custom software is cost. Existing solutions can cost as little as $10/month, whereas custom software can run you literally tens of thousands of dollars a month. The best custom software is rarely a small 1 to 2 week project. Building custom software requires a solid understanding of the business and their problems, robust software practices, and dedicated resources. This all adds up pretty quick.

CON #2: Custom software takes longer to get up and running

Custom software is typically developed from scratch or at least from a basic framework. When it comes to features, not a lot comes for free. Thus, building everything to your expectation can take a long time. Even the most basic features we take for granted may take some time. For example, you may request the ability to allow users to log in. Simple enough right? Well, what if people forget their password? Ok, let's add a 'Forgot your password?' feature. Well, what if people want to delete their account? Ok, let's add the ability to delete your account and so on and so on. Each one of these features may take a significant effort to design and implement. With existing applications, you can be up and running in literally minutes.

CON #3: Custom software can suffer from lower quality

When talking about the pros - I mentioned that a reduced feature set can lead to higher quality. This is a result of the team spending more effort on fewer features. However, there is another factor that works in the opposite direction.

Generally, Product companies have way bigger teams. With services companies, you may have a team as small as 1 to 10 people working on your project. With product companies, you may have thousands or people working on a single product. Granted, typically product companies are working on products that are more complex, but having a larger, more diverse team can lead to higher quality software. This is not a certainty, but the best product companies in the world are typically doing some of the best work in the industry. That being said, service companies like TWG (https://twg.io/) and Thoughtbot (https://thoughtbot.com/) are really pushing the boundaries of software as well. And is some cases, product companies will acquire service companies because they are so strong in their field.

So, what should you do?

There are many more pros and cons aside from the ones I’ve discussed here, but the important thing is to choose the right tool for the right job. There are situations where existing applications are definitely the way to go, and there are other situations where custom software is the answer. Even though BiteSite is a custom software service company - many times we will forward potential clients onto existing applications because it makes more sense for them.

Deciding can be tough, but there is one saving grace: existing applications are generally cheap to experiment with. You could pay $10/month to try out a cloud product or even sign up for a free trial. If you’re not happy with it, you can start to explore a custom software solution. No huge loss.

The important thing is to do a little research up front before diving deep. And in my experience, people from both sides will give good advice even if that means directing you away from their business.

Casey Li
CEO & Founder, BiteSite

Homebrew install of PostgreSQL won't restart properly

coding software

Alright, let's say your computer didn't shutdown properly, and you're running the PostgreSQL service (via homebrew or other mechanism). You may try to restart the server and it may tell you that there was no problem, but you still can't connect.

What's most likely the culprit, is that PostgreSQL still thinks you're running the server via it's Postmaster ID file.

So what you can try is removing that file

rm /usr/local/var/postgres/postmaster.pid

And then restarting. That will probably help you out.

For a full detailed description of this process, check out https://coderwall.com/p/zf-fww/postgres-on-osx-with-homebrew-not-running-after-osx-crash

Casey Li
CEO & Founder, BiteSite

Stripe.js Bank Accounts: Invalid transit number. The number should be in the format xxxxx-yyy or xxxxxyyy.

coding software

This is going to be a quick one. I was working on a client project that uses Stripe Connect. We were using Stripe.js V2 to generate tokens for bank accounts. However, everytime I tried to use the test account numbers, I kept getting this error:

Invalid transit number. The number should be in the format xxxxx-yyy or xxxxxyyy.

After looking around a bit, I realized it was a really stupid error. I was trying to test a Canadian account, but when I went to look at the test accounts that Stripe provides, "United States" was selected. So lesson of the day, when testing Stripe Test Bank Accounts, make sure you select the proper country.

Hopefully that helps out some peeps.

Casey Li
CEO & Founder, BiteSite

Swift PUT and PATCH requests not sending httpBody

coding software

Hey everyone, this will be a quick one.

I'm finally coding a Swift iOS app to interface with my Rails app and I'm now at the point where I'm starting to implement PUT or PATCH requests for my record updates.

For my requests, I have a basic APIController that runs this code to build the request:

urlRequest = URLRequest(url: url)
urlRequest.httpMethod = "PATCH"
urlRequest.httpBody = bodyString.data(using: .utf8)

This method generally worked perfectly fine for my POST requests, but for some reason PUT and PATCH requests were not sending the httpBody.

Turns out, for PUT and PATCH you need to be explicit about the content type. Since I was using form urlEncoded data (so something that looks like "key=value&key=value&key=value" I just had to add this line:

urlRequest.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

And then everything worked.

So final code looked like this:

urlRequest = URLRequest(url: url)
urlRequest.httpMethod = "PATCH"
urlRequest.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
urlRequest.httpBody = bodyString.data(using: .utf8)

Hope that helps out some peeps!

Casey Li
CEO & Founder, BiteSite