It takes a journey to reach that destination.
Custom-built software requires an investment in time and money, which is not for every company.
But if you have a vision and committed leadership, we can make it a relatively simple and uniquely rewarding process! Below is an overview of what it takes, and how we approach each challenge along the way. Many of the same skills apply when implementing off-the-shelf software systems. If you find that a line-of-business application vendor is not able to give you the attention you need in certain areas, we may be able to fill some of those gaps. |
INITIAL CONSULTATION
Business first, technology second
We actually care about your company's success, more than our revenue opportunity. That's why our initial consultation process includes a broader business perspective. We might ask questions about your business model. We might float suggestions for organizational process improvements or off-the-shelf solutions. We might have a discussion about what balance of features and costs would provide a good return on your investment, or a competitive advantage in your industry. We know that technical success is meaningless if it fails to connect with the bigger picture, so we want to be clear about how the project will benefit you, before we define contract deliverables.
Design & development process
A truly agile approach
Complex or unclear business requirements? No problem, we know what questions to ask. We like to review inputs and outputs, walk through use case scenarios from different stakeholders' perspectives, identify priorities and future growth or change areas, validate ideas with end users through rapid prototyping.
Rapid application development, Agile, Scrum, test-driven development... buzzwords come and go, but the fact remains that any successful software project requires a smart systems analyst, along with a collaborative, iterative, rapid-response design-implementation-validation process. We believe this is best done by making the same person responsible for systems analysis, project planning, implementation, and customer relationship management. No disconnects, no filtering communications through interpreters: just a direct, honest conversation between customer and application developer.
Rapid application development, Agile, Scrum, test-driven development... buzzwords come and go, but the fact remains that any successful software project requires a smart systems analyst, along with a collaborative, iterative, rapid-response design-implementation-validation process. We believe this is best done by making the same person responsible for systems analysis, project planning, implementation, and customer relationship management. No disconnects, no filtering communications through interpreters: just a direct, honest conversation between customer and application developer.
Functionality
Standard enterprise features on top of custom functionality
Unlike web development frameworks, Windows desktop database application technology has been extremely stable. So we have been able to develop many reusable components over time. As a result, our custom solutions can implement many advanced features you'd expect from enterprise software, such as rule-based validations, detailed logging, role-based security, Microsoft Office integration, automatic deployment of upgrades, flexible menu systems, report personalization, and more.
Quality assurance
Testing alone doesn't guarantee quality: a quality mindset does
We stand by our products. Quality is what allows us to provide excellent, cost-effective support for them over the long term. It starts with design principles grounded in user-friendliness, performance, simplicity, reliability, and maintainability. It relies on clean coding habits, such as consistent naming conventions, in-code comments, front-end vs. back-end segregation of duties, systematic error handling, code modularization and reuse, avoiding dogmatic redundantly-layered design patterns, keeping third-party components to a minimum, trimming dead ends, extending troubleshooting into broader code & design reviews when appropriate, etc. And of course, testing all major existing functionality as well as new features before each release.
Data conversion
Preserving a critical asset
Have you worried that launching a new management system could cause disruption due to missing or poorly translated data? It doesn't have to. We know how valuable data can be, so we take data conversion very seriously. We examine existing records carefully, merge several sources if needed, write procedures to clean up and import as much as possible.
deployment & server administration
Don't skip that checklist
Your software works great, on a demonstration computer. Now what? It needs to be deployed and maintained.
We can do one of two things:
1. Work with your IT staff to host the software on your in-house servers and/or desktops. We will provide hardware recommendations, a list of required software components, and documentation of the install and maintenance processes. We will provide directions on how to enforce role-based security if applicable, discuss backup strategies, request remote access for troubleshooting purposes. Many organizations still use this model, as it gives them extra control and internal support options.
2. Configure cloud servers and maintain them ourselves. This model is increasing in popularity, but carries some subscription and support costs.
We can do one of two things:
1. Work with your IT staff to host the software on your in-house servers and/or desktops. We will provide hardware recommendations, a list of required software components, and documentation of the install and maintenance processes. We will provide directions on how to enforce role-based security if applicable, discuss backup strategies, request remote access for troubleshooting purposes. Many organizations still use this model, as it gives them extra control and internal support options.
2. Configure cloud servers and maintain them ourselves. This model is increasing in popularity, but carries some subscription and support costs.
User training and support
It's not over until users love it
User training and support is critical to the success of any software deployment project. It's not so much about people learning new computer skills: after all, new software is supposed to be easier than whatever they are already doing. It is about successfully leading organizational change. People get naturally attached to familiar ways of doing things, even if they are inefficient, and they typically fear change that has any chance of affecting their position of power within the organization. Users often break into different groups - a small number of early adopters, a large group of mainstream followers, a small number of active resisters. They require different forms of engagement at various stages in the process.
We start user training and support for champions and early adopters very early in the design stage, when we learn how people want to be doing their jobs, and start proposing ways in which we can help them. It continues during the idea validation process, when we start walking enthusiasts and mainstream users through some prototypes. It is reinforced during pre-release testing, when they run through actual use case scenarios. Engaging users during the development process is vastly more effective than any amount of classroom training. Pre-launch education sessions, in-person or recorded as webinars, can be very helpful in increasing the mainstream comfort level, along with honest advance communication about how the new software may affect people's job descriptions or performance measurement. However, training key staff to support their peers, and organizing a short period of monitored parallel entry, are the actual keystones of a smooth transition. Bonus points can be collected by addressing resisters' objections directly; quickly answering and compiling FAQs as they appear; anticipating, watching and optimizing any new business processes that will form as people learn to work around the new system.
Finally, supporting users while they learn the system builds essential trust that cements new ways of doing things. And problem-solving users' unexpected problems is how the continuous quality improvement loop keeps going.
We start user training and support for champions and early adopters very early in the design stage, when we learn how people want to be doing their jobs, and start proposing ways in which we can help them. It continues during the idea validation process, when we start walking enthusiasts and mainstream users through some prototypes. It is reinforced during pre-release testing, when they run through actual use case scenarios. Engaging users during the development process is vastly more effective than any amount of classroom training. Pre-launch education sessions, in-person or recorded as webinars, can be very helpful in increasing the mainstream comfort level, along with honest advance communication about how the new software may affect people's job descriptions or performance measurement. However, training key staff to support their peers, and organizing a short period of monitored parallel entry, are the actual keystones of a smooth transition. Bonus points can be collected by addressing resisters' objections directly; quickly answering and compiling FAQs as they appear; anticipating, watching and optimizing any new business processes that will form as people learn to work around the new system.
Finally, supporting users while they learn the system builds essential trust that cements new ways of doing things. And problem-solving users' unexpected problems is how the continuous quality improvement loop keeps going.
Documentation
What does it do exactly?
Documentation often falls last on the priority list. It is true that well-designed software should not require much documentation... Users rarely if ever read the manual... Usually companies would rather spend dollars on new functionality, rather than technical writing that may become outdated fairly quickly. Let's admit it, it is not our favorite thing to do. But we can do it well. And we have discovered that when a developer writes the documentation, sometimes they will uncover potential issues that went untested before. Sometimes they will make quick design improvements here and there, to avoid explaining ambiguous UI elements, or to cut down on the number of steps required in a manual process. So, depending on the project, it may be worth the extra money after all!