Software is a Cornerstone of Growth Companies

Business Growth

Business Growth

I had a great conversation with a gentleman last week. It was such a great conversation that feel compelled to quote him, with his permission.

He said, “If you want to grow a business you have to have a good foundation to make it happen. Software is a cornerstone of that foundation.” That was George Farrell, Director of Operations, Perryman Co.

George and I were talking the other day about his company, the value we can add creating custom software applications and business intelligence/reporting solutions for construction and manufacturing companies. He talked about their software applications used in-house, how they changed to adapt better software tools and practices, and implementing them deeply into the company. George gave an example where one person today is able to produce several times more output compared to what she used to create several years ago. She is able to get the work done in less time and with greater accuracy.

That is fantastic! That is truly what is supposed to happen in a business…efficiencies increase and the team works as much or less so they can focus on more important work.

I believe this is a strong sign of a company that is experiencing solid growth and improvement, and likely delivering immense value to their clients and financial stakeholders (i.e., owners, shareholders, partners, etc.).

How did they do this? By realizing the value of getting the software and the business to fit together like a glove. If a company realizes how important software can be to their success, they will then do the work necessary to have a phenomenal implementation. That requires:

  1. Having a vision of how the company will operate
  2. Confirming in honest and open internal conversations that software is appropriate to reach milestones in their growth towards their vision
  3. Defining the optimal outcomes of of implementing a software application
  4. Determining what software fits their needs best (off-the-shelf or custom, or a combination of both) through deep assessments and evaluations
  5. Working together as a whole company team to get the software embedded into their every day operations
  6. All team members using the software the way it was intended

Only then can a company with growth aspirations know they’re on the path to success. Make software a cornerstone of the foundation of a growing company.

Should you customize the Off-the-Shelf software application?

Software applications you can buy Off-the-Shelf (OTS) will often fulfill 80% of the needs of a company. If that is true, then what do you do with the other 20% of functionality you need isn’t in that existing software? You need to evaluate what functionality is required by your clearly defined requirements of the application, compare that need to the OTS software application’s capabilities, and make a decision on how to customize or modify the software to meet your needs.
First step is to be cognizant of exactly what you need the software to do. This should have been documented when your company started evaluating off-the-shelf software applications.
Next, compare that to the OTS software solution. How much of your needs does the application fulfill? Do you need a small tweak or is it missing a major piece of functionality you need? Also look at the innate capabilities the software has to allow you or a trained person to modify the software slightly. Many applications come with the capability to make small modifications to the application without breaking the software such that it can’t be continually updated in the future. For example, Zoho CRM and allow you to add new fields to nearly any screen, wrote simple code to perform a calculation or other logical function. Often you don’t need to be a software developer to make those changes. Knowing the limits of the out-of-the-box customization relative to what you need is critical.
Once you have identified how much the software can or cannot be easily customized to meet your needs, you have  three options:
1) Use existing customization features: Go ahead with making the small change to the application using it’s innate customization capabilities. This is the best route if those customization capabilities exist, and if they meet the needs.
2) Modify the application’s code: Modify the code behind the application (i.e., modify the code written by the software manufacturers software developers). I mention this option because the option exists for some software (not all software). But I would never suggest doing this. It can be expensive in the short term and even more expensive in the long term because often the software can no longer be upgraded under existing maintenance plans. You’re then stuck with that version of the software for a long time with little to know support from the software vendor.
3) Create a separate function or application: Create a function or application outside of the application to accommodate the need for the specific feature. This is appropriate when the need for the feature is very significant for the business, and when the complexity of the feature is also significant. You should consider this option very thoughtfully. It has it’s pros and cons. The pros can outweigh the cons in certain situations.
You will likely find that the first option is the best option. However, if you’re in a situation where it doesn’t appear to be the best option, call us. We’d be happy to have some initial discussions with you free of charge.

Should Your Software Applications Talk to One Another?

Do you know everything you need to know about what’s going on in your manufacturing company? Do you have all of the data you need?
If you do, is it a quick and efficient process for you and your staff to get the reports to you? Or does it take your staff a lot of time to manually assemble reports from various software systems which you use, such as your ERP, CRM, CMMS, and/or MES systems?
If the answers are No, there might be a solution for you. That solution is called a “systems integration”. Systems integration is a setup of custom software tools or off-the-shelf tools that allow various software systems to to share data with one another. They can very often have a major, positive impact on the company.
To integrate multiple systems at a manufacturing plant or other company one must determine whether the integration can be done or not. This can be determined by answering a number of questions such as:
  • Do the systems in question have APIs or other interfaces which allow software developers to securely reach in and push or pull data? Or are the databases open for read-only access, at a minimum? Feel free to be creative, but also be careful.
  • How many systems contain data that is needed elsewhere? Keep it simple, maybe only select two systems to start with a smaller integration.
  • How much data needs to move from one system to another? Be realistic with your expectations and need.
  • What will you do with the data? Simply analyze and report? Or push the data into another application to track various products or processes? Best to keep it simple to start.
  • Are any of the systems behind a firewall of some type, such as a firewall to protect your Industrial Control Systems (ICS) on the plant floor? This can get dicey. You definitely need to talk with real professions to work through this.
Your IT department and/or software developers should be able to answer those questions after they do a bit of digging.
Throughout the sample questions above you saw some comments to keep in mind. I’ll summarize those comments again because they’re important for a systems integration to be successful:
  • Know what you need.
  • Know what you have.
  • Keep it simple for what you need.
  • Start with a small integration project, get it working, get it to add a lot of value, then do more.
  • Only do this work with real, proven professionals.
I can’t stress the last point enough…be sure to work with real, proven professionals, whether it’s your IT department, senior software developers, or product specialists. We have seen more failed projects by others than we care to remember which were caused by inexperienced and/or cheap staff or consultants trying to tackle important, business critical, complex projects.

Another 4 Qualities of Top Software Development Firms

In this post we discussed 4 qualities of great custom software consulting firms. Here is another set of 4 qualities to consider. Use these when evaluating your prospective software development companies for upcoming custom software projects.
5) Seniors and juniors
Do the software consulting companies with which you’re talking have senior developers on projects? Do they have any senior developers on staff at all? If not, run for the hills.
There should be senior developers (7-10+ years and very good at consulting) on projects. They have the experience, among other things, to make the appropriate design decisions, can have the tactical and strategic discussions with client stakeholders, and lead and coach junior developers to ensure they’re learning and growing and doing the right work in the project. They’re the leaders in the projects, along with product owners and project managers.
6) Ethos of improvement
Does your prospective software vendor talk about the company constantly improving itself as it learns and grows? Do they talk about individuals in the company doing that as well? Is it a part of their culture to learn and grow? It should be.
7) Personal responsibility
How many times have you seen this situation?…where people working on any kind of project will point the finger as someone else when something goes wrong, throw bad work over the wall and hope someone else cleans up after them, or they’re like the kids in the old Family Circus comic strip saying, “Not me!” (as in, “It wasn’t me that broke the vase.”).
You obviously don’t want that. You want your software consulting company vendor to have team members that take ownership of their work, take pride in what they do, and want to do a great job and constantly add value.
8) Collaborative
Working on complex projects in a collaborative fashion is very important and valuable. Better work gets done faster when team members have a natural tendency to collaborate within the team and also with their client.
Does your software vendor team have this collaborative tendency? If not, that should throw up a red flag.
Consider these 8 qualities of a potential software consulting firm. Are they present? It’s hard for all of them to be present in a company. If most or all are, you can be better assured they’re going to be a good long term partner to get the right work done.

4 Top Qualities of a Software Development Firm

When selecting a software development firm to work on your custom software project you want to select the best option available, right? They all seem the same from the surface, but they aren’t. It’s not difficult to discern those that will provide a much greater chance of software project success.
Here are some qualities and experience to look for. If you don’t find most if not all of these, then you might want to consider looking elsewhere for a top software development firm.
  1. Listen and understand without selling
    Any project, no matter the type, starts of with the potential vendor listening and understanding…not talking and selling. Does your prospective software development vendor listen and ask questions in the first meetings? Do they truly understand the situation you’re in?
  2. Can say No
    Can the software firm you’re talking with say “No” to a project because it’s not a best fit? Are they so desperate to get the project that they’re willing to do anything to get it, including massive discounts, ruining other client projects to focus on your project, willing to take on the project even though it’s completely out of their capabilities and focus? If it’s not a project they can and should do, they should be able to say, “No, this project isn’t for us. Thank you for talking with us! Maybe you should talk to this other company.”
  3. True focus of the project
    Do they ask you questions like, “What really drives your company?”, “What is the main goal of your company or department at the end of the month or year?”, “What do you really care about?” If they ask those types of questions there’s a good chance they have the right focus. You can tell them what features you want, and they’ll suggest how the project should go. But they should also be thinking about how the project will help you accomplish what matters, what you care about in the company. If the project isn’t helping with that focus, then is the project really worth doing?
  4. Disciplined approach to specifications
    What do the specifications look like for the project your software vendor is about to tackle with you? Or, what do the specs look like for past projects they’ve worked on?
If they say, “We don’t need specs.”, run for the hills. If their specs don’t have a low level of detail for what needs to be created, run for the hills. If they can’t show you a sample of a spec, run for the hills (they really should have at least one spec or part of a spec they can show you with appropriate redacted info for the other client’s confidentiality.
Keep in mind there are different types and styles of requirements specification…even Agile projects have spec docs…they’re simply in a different format (e.g., epics, stories, etc.).
More top qualities of top custom software development firms to come in the future.

How to start up more successful custom software projects

Have you heard the majority of software projects end in failure? It’s an oft quoted fact. One of several ways to prevent that is to start off on the right foot.

A key to starting off well is with a project launch mtg. Get the right people in the virtual or physical room at the same time, talk about why the project is being done and why it’s important, ask questions, and keep the length of the meeting appropriately short.

Right People

Once you have the SOW and the general roadmap of what you are going to build, have a project kickoff with the developers, testers, analysts and UI/UX folks. You may not have people filling all these roles, of course, but you probably have some of these on every project, even if it is one person wearing multiple hats. Sometimes not having the customer in the kickoff meeting is best. During the internal meeting you can discuss all ideas and ask questions openly. After the internal kickoff meeting a couple key staffers from the team can then conduct a launch or kickoff meeting with the client, giving them a conduit for getting on the same page, asking questions and getting answers, etc.

For smaller projects often a single project launch meeting with everyone on the internal and customer team is appropriate…since the whole inclusive team is so small.

Start with Why
Everyone should get a good understanding of why the project is being done, and also what is the end goal. Teams are much more productive when they know what they are doing and the end result they are trying to achieve. It is also REALLY helpful for everyone to have at least a general understanding of the ‘why’; understanding why the customer needs the project often helps guide decisions on how to implement it in the best way to achieve the customers goals.
Ask Questions
Everyone should be encouraged to ask as many questions as they have. You may not have all the answers but getting those things on the table will help the project be successful. If you are lucky, you do have answers for almost everything at the kickoff. Though, more often, you will be following up with the client to fill in some of the blanks that maybe no one thought of before the kickoff meeting.
Not Long
Project kickoff or launch meetings don’t have to be long – usually half an hour (for smaller projects) or an hour for bigger ones is all it takes to get everyone moving in the same direction and having a sense of ownership in what they are producing.
Keeping these points in mind helps start a project on the right foot, and provides a greater chance for project success. Keep in mind though, custom software projects are really complicated…this isn’t the only task to perform to make the project a success.