Sigmund taxuptfdkpc unsplash

Solution Types to Solve Small to Medium Sized Business Problems

software business

Many problems can be solved with software. Choosing the correct type of software to solve your problems can be tough, especially when you are trying to be price conscious and get the best bang for your buck.

This article will outline the benefits and negatives of some options a small to medium sized business has to solve the problems they encounter.

Non-Software Solutions

The first solution type is very broad, containing all non-software solutions. Forcing a solution by implementing software where it is not needed can cause more problems than the ones you are trying to solve.

This might be odd coming from a software developer but there are many problems that actually shouldn't be solved with software. These types of problems often need a short term solution and possibly are only complicated by the introduction of software where it is not needed.

The main advantage of a non-software solution is that it is probably what is currently implemented. There is no extra cost or effort involved in implementing this so if you only need a short term solution a non-software based solution is okay.

The problem with non-software solutions lies where choosing software is the correct option. It is easy to fall behind the competition if they are using software for the same type of problems. Software not only helps businesses stay ahead of the curve, it also makes it easier to store data safely, and easier to measure the success of the solution’s implementation.

Software Solutions

Benefits of a Digital Solution

The following three solutions - mass market, small scale mass market, and custom software - all contain the benefits of being a digital solution. Some of these benefits include the reliability and speed of access to data, the ability to automate tasks, and the ability to access the software from almost anywhere. Your problem might not need these exact features to solve the problem but they can be great selling points when changing to a software solution.

Mass Market Solutions

The mass market solutions category has the most customers due to the nature of its availability and breadth of features offered in its purchase. Mass market software is readily available software normally purchased on a subscription basis that can be used to help solve your problems. This type of software requires the purchase of many features under one fee and it is up to you to decide what you want to use.

Some pros to this type of software are that it is relatively inexpensive for what you obtain, it is immediately available directly after purchase, and it will have a large user base. The large user base means it likely will have good documentation, regular maintenance, and online help from other users with the same problems. The most attractive feature of this software is that it is ready to use “out of the box”. The problems you have can be solved almost instantly compared to the other solutions.

The cons of this type of software are related to the pros. The first one is that the cost includes many features that are not needed. This is reduced if the subscriptions are offered in a tier structure where you can choose the size of software available. In mass market software the same software is sold to many customers. It must be generalized enough that it will provide a solution to as many customers as possible so it can sell easier. This means that you will be paying for a product that will have many features not used. It is also hard to request changes to the software if it doesn’t fit your needs correctly. This is because it is not feasible for the company to apply all change requests to the software. Related to this is the lack of personal connection with any contacts at the company. Support tickets can be sent to the company’s general mailbox but it is tough to create a connection with anyone there that can be used in the future as a contact with the company.

Small Scale Mass Market Software

This category of software lies in the middle ground between mass market and custom software. Although it is in the middle of the two it rarely contains the best of both. This type of software is great if it fulfils your needs but can be hard to find.

This software can be used instantly just like mass market software as it has already been created. In terms of cost, it is cheaper than custom software but more expensive than mass market due to the lack of users to spread the development costs. The cost might be worth the product if it fits the needs of the purchaser. The lack of users also provides a higher chance for you to be heard by the company and have requests fulfilled via support tickets. This is where it comes close to custom software. If you submit a support ticket and it gets implemented, a developer would have changed the product to fit your needs. The difference from custom software here is that you can only suggest changes, not require them to be implemented.

Custom Software

The last solution category is custom software. This is software that has been designed specifically to meet the needs of the user and has the ability to be modified at any stage in its life. This software is exactly what the user needs and only what the user needs.

There are many advantages to choosing this type of software over the others but it will come at a cost.

All custom software will have a support team available who knows the product inside and out as they were the ones who created it. You can go directly to them to answer any questions or concerns. This is a benefit to them as well because over time your questions can help them understand what you need. They can then suggest improvements to the application that you might agree with but never thought about yourself.

The choice of features is where custom software really shines. It is the easiest out of all solutions to suggest changes since you own it. These changes are billed according to the work required but nothing is paid for that is not needed and discussed prior to its implementation. This allows you to improve your solution at any rate according to your budget.

You also have the most freedom to customize this solution to your problem. Related to customizing the solution to your needs is the ability to work with existing solutions. Custom software can be built to work with your existing environment and the technologies available. Due to this you have control over the security levels built into your solution. Buying premade software doesn't always allow the purchaser to choose how secure the software is.

As you can see custom software has many advantages but there are some points to consider when choosing this type of solution.

The first factor is the size of the solution required to fix the problem. If the software needs to be large to meet the requirements it can get very expensive. Another factor is how quickly the software is needed. Custom software is not ready to use immediately. There is an initial creation time before an MVP is available. This time until it is able to be used depends on the size of the MVP needed. The last point to consider is if you understand what the problem is you need fixed. Custom software shops are good at working with clients who are not 100% sure what they need but if you have no idea what the problem is there can be communication issues with what you need vs what is actually built.

Conclusion

Choosing the correct type of solution is the first step to solving the problem you have. This might not have told you exactly what you should go with but hopefully it gave you an idea of what avenue you want to pursue.

TL;DR: Solution Pros and Cons

(Photo by Sigmund on Unsplash)

About picture
Chris Francis
Software Developer, BiteSite
Software start small

Starting Small with Software

software development software business

You've seen all the success of large software companies such as Facebook, Amazon, Netflix, or anything else and thought, “I should do that”. So you come up with an idea and want to get started right away.

It goes without saying, investing in software is a safe bet for the future but jumping in without thinking is a sure way to overwhelm yourself. Your idea is great but let’s scale it back to a more manageable size. This allows you to not get overwhelmed with complexity and cost right away.

Approaching a company like BiteSite is a perfect way to ensure the project is the right size. At BiteSite we love to work with projects that start small and see where they end up.

What is a small project?

A small project to us is anything with a deadline of 1-3 months, and has a small set of concrete short term goals. At the end of the deadline the client will have a minimum viable product (MVP) that can be used by end users. This MVP will be able to be improved upon in the future once feedback is gathered.

Client

Starting small is advantageous to everyone involved, especially the client. Most of the advantages stem from not locking into a large project.

When a client decides to work with a custom software shop it is important that the company's culture works well with the client’s. This is mainly because the client is part of the development process. A small project does not lock a client into the company for a long period of time. This allows the client to feel out if they want to continue past the initial MVP.

Often in software development, the initial requirements do not turn out to be the final product. This is where it is dangerous to create large scale projects based off of fixed initial requirements. Short term contracts combat this by helping clients not lock into a product they end up not needing. Hence why we advocate for having a small set of concrete short term goals rather than immovable long term requirements. The short term goals can be added upon after users have tested the MVP and feedback is available as to what will be used.

Overall, the client will save time, effort, and money by choosing a small project and developing off of it in the future. The initial large scale idea will eventually be reached just in smaller increments.

BiteSite

Now you know why small projects are advantageous for customers, you might be wondering why BiteSite would ever advocate for a small project. As everyone knows, larger projects mean less uncertainty and more interesting work right?

Most of the time yes, but not always.

Larger projects are eventually what we try to work towards with all our clients but it’s rarely a good idea in software development to start with a large set of requirements and work towards a goal far in the future. Many requirements will not be known until the software evolves into something that can be tested by the end users.

The first reason to have smaller projects with new customers is to feel out what the end users will use. Small starting projects help us understand the clients and end users needs before anything large has been committed. This minimizes the time wasted creating software that is not needed. We can create an MVP to quickly see what features should be expanded upon and what ones will be dropped.

The next reason to start small is to show the client our competence and convince them their time, money, and effort spent on the project will be worth it. Diving into a large project doesn’t create trust as quick as a smaller project does since the finished product is so far in advance.

Larger projects having more interesting work is normally due to the complexity required. With custom software each project is unique so naturally it creates interesting work our developers possibly haven’t seen before. If the client continues the small project the complexity of the project will increase as well.

Hopefully you see how advantageous starting small can be.

Big projects can be intimidating but starting small will reduce the chance of being overwhelmed. The big idea is always there but chunking it off into smaller pieces is a better approach for everyone involved. There is nothing wrong with starting small. Afterall, Rome wasn’t built in a day.

(photo by Engin Akyurt from Pexels)

About picture
Chris Francis
Software Developer, BiteSite
Thank you software developers 600x600

Software developers of the world, thank you.

software development software business

Something dawned on me the other day - something pretty amazing.

So I've been a Software Engineer, Developer - whatever you want to call it, a good chunk of my life. My dad introduced me to coding back in the early 90s, I studied Software Engineering in University, and now I run my own Custom Software shop. So software development has been a big part of my life and I would say I'm pretty proud of where I am.

However, something dawned on me the other day. I've really been standing on the shoulder of giants and what's crazy is - so many of us have.

Let me explain.

If you don't develop software, what you should understand, is that software is built in layers of abstraction. As a developer, you don't need to know how electrons zip back and forth on a computer motherboard because someone built a layer on top of that that abstracts the details away from you. As a developer, you don't need to understand how certain low-level operating system operations work because someone built a layer on top of that.

But it doesn't stop there.

Let's take Ruby on Rails for example. This is my web framework of choice. Because of Ruby on Rails, I don't need to understand when someone types in a URL in their browser, how that sends a request to my code with all the information I need to build a web application. I just use that information and I'm on my way.

But it doesn't stop there.

Many other developers have developed libraries that makes it infinitely easier to send fancy email notifications, create realtime web applications, render fancy charts and more.

And you know what, it doesn't stop there.

This is the thing - as a software developer, you leverage other people's work so much. You use frameworks, libraries, code snippets - you name it. Let's take a closer look.

As an informal, non-scientific experiment, I decided to pick one of BiteSite's biggest projects and I wanted to see how much code was ours and how much wasn't. Remember, this is pretty informal, but it should give you an idea

  • Our code (~4MB)
  • Library & framework code (~527 MB)

(for the technical readers, I took the size of our Ruby on Rails app folder for "Our code" and took the "node_modules" and "gems" folders for "Library and framework code")

That's 0.75% for our code! 99.25% of the code that's being used was written by other developers.

Now this is not super scientific, and granted we're not using every bit of the framework - but it's just a small indication of how much code we're using that we didn't create ourselves. I would also say that this is probably quite typical of most applications.

Aside from the exact percentages, which only represent the code that was written - there's so much research and development that went into creating these libraries and frameworks. Not to mention that a lot of these libraries and frameworks contain the work of some of the best engineers in the world. Think about that.

I can't count the number of times a client has come to me and said "Can you do this?", I say "Probably", Google it and within minutes have an amazing solution because some developer out there coded an amazing library.

And it doesn't stop there.

The benefit goes way beyond making a software developer's life easy or making them look impressive. Because of these libraries and frameworks, the developers using them are able to build incredible apps that are the foundation for amazing businesses and companies that change the world.

And here's the kicker. They do it for free.

That's what really blew my mind as I thought about this more and more. A lot of massive, super successful companies that change the world build their software, their company, their success using free frameworks and libraries.

We have all this amazing technology at our disposal because a huge number of software developers love developing amazing technology, putting it out there, and ask nothing in return.

Don't get me wrong. I know there is sometimes a bigger business motive for some of these libraries and frameworks, but for the most part, I think software developers have developed such an incredible culture of sharing and collaborating for the greater good. I can't think of another industry that does it so well.

I've taken it for granted for so long that so much of what I do and so much of what the tech industry does is based on (and forgive the phrase) the kindness of strangers - the kindness of developers who love their craft and want to share it with the world.

So with that - I think it's time we all thank this incredible group of people who continue to provide answers to our problems, who allow us to build amazing world-changing products and businesses, and who ask for nothing in return.

Thank you to all the incredible software developers out there who have allowed me and so many others to get to where we are.

Caseyli
Casey Li
CEO & Founder, BiteSite
Defaultblog

Ruby on Rails QuickTip: Wrapping simple chunks of code in a method to give it meaning

ruby ruby on rails software

Let's say you have a model of a User. Let's say that if the user's birth year is 1990 or before, then you can't edit that user's first name. So you might have something like this:

# User Class
class User < ApplicationRecord
end

and you might have something like this

# User controller
class UsersController < ApplicationController
  def edit
    if user.birth_year <= 1990
       # don't allow editing of first name
    end
end

However, I would argue, that even though it's a really simply check, that you should put this in its own method:

# User Class
class User < ApplicationRecord
  def first_name_locked?
    birth_year <= 1990
  end
end
# User controller
class UsersController < ApplicationController
  def edit
    if user.first_name_locked?
       # don't allow editing of first name
    end
end

Very simple implementation and achieves the same result, but here are some advantages

  • The condition is now given meaning so that developers who are using it can understand its intent
  • Any developer reading any code that uses that method will understand more easily what's happening
  • If the business logic changes for locking the first name, you'll have to edit only one piece of code

So even the simplest pieces of code can benefit from wrapping them in a method.

Caseyli
Casey Li
CEO & Founder, BiteSite
Defaultblog

Ruby on Rails QuickTip: Adding Parameters to your Methods Safely

ruby ruby on rails software

This is going to be a quick post and applies to a lot of different languages, but it's something we've been doing in our Rails projects a decent amount.

If you're ever working on a larger codebase and you decide you want to add a parameter to a method, but are afraid to do so because it might break code elsewhere, consider simply adding a default value.

Take the following setup for example

class MyModel < ApplicationRecord
  def my_method(user_id)
    user = User.find user_id
    user
  end
end

Now, let's say you want to modify this method so you can add another parameter. Here's a safe way you can do it:

class MyModel < ApplicationRecord
  def my_method(user_id, new_parameter=nil)
    user = User.find user_id
    if new_parameter
      do something
    end
    user
  end
end

Now that new parameter's default value could have been anything, but the key here:

  1. Have a default value so that any code calling this method with the original parameters will still work
  2. When the new parameter is not passed in, have the method behave the exact same way it did before

With these two principles you'll be able to extend your code without breaking any existing code.

Caseyli
Casey Li
CEO & Founder, BiteSite