We are often approached by business of all sizes, who are looking to improve the flow of information in their organization. Having relevant information at the right time and place is imperative in the decision making process, and thus a key factor towards improved productivity for any business. Even today, in 2018, an incredible number of organizations have outdated systems (or none at all) to manage information and its distribution between departments, people and stakeholders. These lead to missed opportunities, lower productivity and missed revenue potential. To combat this, forward thinking organizations turn towards upgrading their systems by implementing the latest technologies to help gain a competitive advantage in their industry. We work with these organizations and build custom solutions to fit their needs.
Why build custom solutions
Before we look at how we build custom solutions, we must look at why, because the first thing most people wonder about custom solutions is why they should be considered, especially when there are off-the-shelf products available in the MIS, ERP & CRM spaces. While those ready-made products may offer features similar to what the organization needs, they will not be a perfect fit, and will require the company to adjust its processes in order to accommodate the system into its workflows. This is counter-productive in our opinion as the whole point of the technology implementation is to supercharge your existing workflows, not cater to an external entity’s needs.
Furthermore, a vast majority of the existing products (and definitely all of the major ones) are far more expensive than a custom built solution. This fact usually ends up surprising a lot of customers when they discover it, as it seems like a fallacy. Logic would dictate that a product made for mass reproduction would be available at a lower price point than one tailor made just for you. However, in this instance, that is not the case. This is a byproduct of software that was designed and developed decades ago, on technology that can only run on technology stacks that require licenses costing millions of dollars per year. Couple that with the fact that these require trained professionals to deploy and maintain, the bills continue to stack up.
In comparison, custom solutions are built on open source technology and utilizes the latest in available libraries that are constantly evolving on a daily basis. With millions of people around the world using and supporting these technologies, they are covered under the Creative Commons MIT license and available for anyone to use in their software, without any licensing fees. That alone saves millions of dollars right off the bat. The hosting for these products is also far cheaper as they can run on any Linux based server running open source stacks such as nginx, PHP, MySQL, MongoDB, Redis, etc. which in turn makes the design & development price the only major cost you end up incurring.
For every $1 spent on implementing ERP, an average of 45 cents goes toward licensing.
How we build custom solutions
Just as the name would suggest, the experience of building custom solutions is always a different one for each company we work with. However, there is a process which we follow to guide the decisions we make. Here are the steps we take:
1. Requirements gathering
Acquiring the domain knowledge is always the jumping off point. While we do know how to develop a custom enterprise software in and out, we may not always have in-depth knowledge about the company’s processes, its workflows, the industry’s requirements and much more than needs to be taken into account. In order to gather all this knowledge, we begin by interviewing key stakeholders and potential users of the proposed system. These conversations can take place in-person, or on the phone via video conference & screen shares. During this process, we ask people to walk us through their daily routines, what they feel are some bottlenecks they face, what their pain points are, and what they feel would be an ideal world for them that would make them most productive.
Without proper requirements gathering, It’s hard to build the right enterprise software.
2. Analysis
We take all the information gathered about the company’s current process, its teams’ wishlists, workflows, bottlenecks and everything in between, and map them out in several design thinking sessions. During these sessions, unequivocally, trends & patterns will begin to emerge. Drawing from past experiences, current industry trends, taking latest technological advancements into account (and much more), we determine the best way to address the issues at hand. These solutions are prioritized and placed in categories such as urgent, low-hanging fruit, must have, nice to have, etc. and presented to the client accordingly. This information is then used to devise a project plan which breaks down the development into phases, which are determined by the desired timelines, budgetary limitations and stakeholder demands. Once this project plan is approved and everyone is on the same page, we are ready to build.
3. Design
During the design phase, we are laying the foundation upon which the rest of the development will take place. Our design process is highly collaborative and includes our client each step of the way in order to ensure that we get early and timely feedback and have everyone on the same page. This begins with wireframes that outline all the screens, which are then converted into high-fidelity designs based on the feedback received. At the same time, our back-end team works on the database and infrastructure design, creating ERDs, Data Flow Diagrams, Infrastructure Diagrams, API documents and much more. All the efforts during the design phase help make the development phase much smoother and more efficient. Once all parties & stakeholders are happy with the designs, we move into the development phase.
Need to design a product?
Our team of user-experience designers can turn a project brief into a visual prototype, collaborating with you every step of the way.
4. Development & Testing
The development phase is where we write the code for the application. It begins with setting up the code repository for the teams to collaborate on, and the environments (dev, QA & staging) where different levels of testing will occur. The back-end team begins working on creating database migrations and writing the APIs required for interacting with the database. Meanwhile, the front-end development team works on creating HTML, CSS & Javascript based components to bring the designs into the browser. Once both teams are done writing the code for their areas, the team works together to integrate everything.
Our QA process is not a separate one, but in-fact part of the development process. They are continuously working with both front-end and back-end teams to test at each step of the way. Initially they begin with Unit Tests for individual functions, and then expand their efforts to broader scopes with Functional Tests. Once the integration step is reached, Integration Tests and Regression Tests also become part of the QA rotation. Our client is provided access to the Staging environment where we push out builds on a regular basis in order for them to test as well and follow along with our progress. Once the final feature-set has been pushed and tested on the Staging environment, we are ready to deploy to Production.
5. Deployment
When looking to deploy the application, we have several options which we need to consider. Are we deploying to a fresh instance or an existing one? Is there legacy data that needs to be migrated? Do multiple systems need to operate simultaneously for any amount of time? Based on these answers, we will ensure that the production environment is properly configured to run the application, and deploy the code. Upon deployment, we do another round of Regression Testing & Smoke Testing just to ensure everything is operational. If there is data that needs to be uploaded to production, we will analyze, cleanse and migrate the data using custom scripts. Once the deployment is complete, we will provide access to the relevant users and stakeholders.
6. Monitor & iterate
As users begin to populate the system with new data, we gain a plethora of information in the form of user behavior data and analytics. This helps inform us on which features the users are interacting with on a regular basis and which ones are not getting the kind of attention we had expected. We will also receive a lot of feedback from the users themselves, detailing their experience with the new system and whether it has shown signs of improving their daily workflows or not. This kind of feedback in incredibly valuable as it helps us make key decisions on what the next development iteration should be.
We take all this information and go back to the analysis phase to determine whether we should continue along the previously laid roadmap, or address some of the concerns that the users may have brought up with the new system. These are once against judgement calls that are based on a lot of data, the company’s business goals & priorities and much more. We discuss these with the stakeholders and create a project plan for Phase 2, and the cycle begins again.
Need to build an enterprise grade product?
We replace old enterprise implementations with the latest technology, custom built for better scale, security, usability and value.
Conclusion
As you can tell, our process is extremely inclusive, thorough and has been refined over years of experience based on real-world projects built for companies of all sizes. We understand that a one-size-fits-all process is not feasible when building custom solutions because each organization will have different needs & priorities. We truly embrace what it means to be an agile & lean development option for these companies, and operate as such. For this reason, we are able to build systems that rival large scale enterprise level systems, at a fraction of the cost. The savings on not having to deal with inflated licensing fees are substantial, and we pass these savings on to our clients. At the same time, we find them constantly amazed at the fact that despite the substantially lower price tag, they receive a product that is of equal quality, and often times, better than what they could have found when going with an existing market leader’s premium product. This is simply because the product is tailored for them, and their needs.