Software development is not a straight road as any experienced developer would tell you. Along the way you will encounter a lot of speed bumps that leads you to question your own processes. However, as you complete one project after another, you get used to these roadblocks and finally gain maturity in handling difficult situations. In this article, I will present the most common pitfalls to avoid when creating new software in case of an inventory system.
Inventory System Development and Open Source
The open source movement has won as many proponents of this community would say. It is hard to argue this sentiment given that even the mightiest of the mighty companies are now relying on open source while also contributing their own. It is no longer just operating systems that come to mind when we are talking about open source. Every software developed will most likely have an open source version of it somewhere if it had not started out as open source in the first place. For instance, containerization, the hottest shiny new platform right now, started out as open source software. Picking the right framework to build a good software is half the battle.
Be wary however not to cast aside enterprise software simply because you ought to save some money. Paying for software is not inherently a bad decision as long as you weigh its value over the service that it provides. One assurance that you have with enterprise software that you could not get in open source is the support for their systems and having an entity to lean on if the software fails. In an inventory system, the databases should definitely be enterprise so as to ensure the security and integrity of the data. It is far from uncommon for database failures to occur. And in the bigger picture of things, certain software services like enterprise database systems, are still miles ahead compared to its open source counterparts in terms of security, performance, and operability.
Developing an inventory system with bits and pieces from both proprietary software and open source software is completely possible. This method provides us a way to isolate which part of the software are going to be enterprise and which part is open source. The open source part is usually reserved for the software platform to build on that are completely replaceable like the UI and the UX for instance.
Finally, open source software draws flak as being the brainchild of hobbyists and not real programmers. If the industry was anything else other than software development, this may be true. But, in the world of software where software development is treated as both an art and a science, it is often that accomplished developers would share their talents to improve on software and share it with the community. This way they will be able to give back to the community that gave them much and they would allow the software they initiated to grow as well.
Inventory System Goals Must Be Crystal Clear
Not only in software development, efforts to collaborate will always fail if the goals are not clear. Even working alone on anything would fail if you are unclear of the goal yourself. Being in a team further complicates that with issues like ensuring that everyone understands what to do at which time.
In my personal experience as a developer, unclear goals often lead to silos within the team to work on it like superheroes. Failures and bugs would spring up from inopportune times and when this happens, these superheroes would swoop in and save the day with the rest of the team just happy that the system is working again. This was all well and good until the superhero resigns or if the problem becomes too big even for him or her to fix.
To avoid this situation, the team should be adamant in having cascading common objectives divided from a main goal. In case of the inventory system, the main objective could be a certain feature like adding an automatic alert system when the stock levels reach a certain level. This main goal could be subdivided by tasks like having one team work on the messaging system by email and another team working on messaging by sms. Another team could be working on the UI/UX side of things while another team works on creating the automation tests.
Inventory System and Finding the Right Tooling
Earlier, we discussed both open source and proprietary software in choosing the kinds of tools in development. Aside from choosing the platform of development like the programming language to use and the compiler to compile it on, other tool choices should be treated with the same level of importance. For instance, the CI orchestrator tool to use is a big deal and there are a lot of options available both open source and proprietary. It would be best not to underestimate the impact of these auxiliary software.
Another crucial tool for development is the source code repository that you are going to use. As of this writing, there are two main options, source version control or SVN and git repositories. The latter is a recent development and has been the repository of choice for open source development. On the other hand, SVN is still widely used, especially on enterprise, but is slowly being phased out. The reason why git is so popular is because git repositories are inherently capable of working with complex repo schemes.
Agile Development in Inventory Systems
Finally, agile development which has become extremely popular is probably the best way to handle software development in today’s world where software is being versioned at an extremely rapid rate. However, even though this is just a mindset, teams should invest time and even training to ensure that everyone will follow suit. Toppling down an agile development order would be as easy as having one person, or team disregard the rules that have been set. And finally, agile is a mentality and an evolving one at that so there is no reason not to experiment.