How to speed up your Software Delivery Process (SDP)
Are you a developer, IT Manager or a small business owner that deals with software feature deliveries? Are you struggling delivering requested software features on time? Do you have to work late or during the weekends to handle unexpected errors while deploying new software releases? Ok, if any of these situations applies to you, then keep reading this post and learn ways to stop working extra time, speed up your SDP without compromising quality, stay competitive and achieve customer happiness.
Understanding what we are trying to solve:
1. Not able to deliver on time
2. Working extra time handling unexpected errors in production
3. System users not happy with your IT Organization
4. Not able to stay competitive because slow SDP.
Well, all issues listed above are only symptoms of a problems that are not easy to see or to understand, sometimes people see the problems but nobody is doing anything because they don’t really understand how to solve the issue or probably they just don’t care about it.
So, why you need to speed up your SDP?
The fact is that our environment is constantly changing, things like customer preferences, customer needs, new ways to do business, so often technology disrupts the way business operates and you want to be prepare to be at the top of your game.
Let’s take a well-known example so you can see the importance of speeding up your current SDP:
Imagine for a moment that you are in the business of selling toys, you have around 10 stores and you are doing well in sales, so you go home and have nice evening with your family and everything seems to fine and as you planned. Next day you wake up and saw in the news that there is other company that is selling toys also but online so people doesn’t need to go to the stores, pay and carry the toys all the way back home, your first thought is that the new idea may not work, you become an observer and you think your business will be fine. The moment you see that your business reports a sales amount decrease, you realize that people really liked the idea of buying online, so what you will do? At that point, more than likely you either adapt or prepare your business for closure.
Next thing that happens is an urgent meeting with your business leadership to review a plan of attack and you see that actually they come up with a good plan, what they asked for is to either buy or develop a system that allows to sell toys and collect payments online, also a system that is able to process purchase orders and shipments, even more, thinking in future, your leadership also asks for a system that looks for your competitor prices and adjusts yours below so customer can be retained.
Having a good plan unfortunately is not enough, if your IT Organization is not able to quickly deliver new software features then your business is in a big trouble, and this is where you may end up with unhappy business users with your IT Organization, your work environment become tense you need to work so hard and extra time to try to deliver something at least while time is running and your competitor is taking customers from you every day, this is where you want to have a SDP agile enough to be able to quickly react and adapt your business so you can stay in business and even grow until you are at the top.
Ok, speed up SDP is important now what?
There is no magic formula or an “ABC” kind of simple way to speed up your SDP it is actually a challenge depending on how big and complex is your current IT Organization but since this post was developed for small business perspective, it should not be that hard, in fact it is way easy when the IT organization is small.
In order to speed up your SDP two main changes needs to happen in your IT Organization:
1) Procedure changes
2) Cultural change
Now the second one is the hardest to understand, cultural changes means that barriers needs to be removed between developers, IT operations and database administrators, the idea is to enable collaboration between these groups so that information is being shared and properly managed to avoid issues like environmental differences across your system environments, databases or software versions, which are more than likely caused because of miss communications between IT Teams. Achieving a good communication means that your organization is able to communicate things in a way that everybody understands the message that wants to be transmitted and that is a real challenge across industries.
So here you have various recommendations you can put in practice in your own business to speed up your SDP and be able to quickly adapt your business to stay competitive, get customer happiness and increase the chances of grow and success:
– Add your environment variables, scripts and other environment parameters to your source code version control system. Lot of times, things works fine in development environment but when deploying new releases in other test environment or production, your software application starts throwing errors because some parameter is missing in the test environment, if there is a new environment variable that developer added because of a new release, make sure your IT Operations personnel is aware so that is being deployed as part of the release, also, you want to keep new environment changes to your main source code version control system, so you don’t miss it in future deployments. This will help you reduce the chance of errors because of system environment discrepancies.
– Automate system environment generation. This will help you save lot of time while developing software features since will allow your IT Organization to run multiple projects in parallel without having to wait for certain system environment to become available, you should be able to quickly generate a complete new system environment ready to use on demand.
– Automate application deployments. Depending on your IT Organization needs, you can either quickly build new process to auto deploy your software applications or you integrate a third party tool that can do that for you, Jenkins for example is a good one that is being used by lot of companies in US and in the world, automating your software deployments will considerable reduce human error and will decrease the time that takes to deploy an application in target environments. This process should at the minimum be able to check-out last updated version from your source code version control system, then prepared to be deployed (this means compile the application if needed and generate deployable pieces) and the deploy it to target server.
– Run test cases as part of your application compilation process. When possible add test cases that will run every time your application is being compiled, do not remove any test cases unless is being deprecated, when you remove a test case from your application you are removing quality, this will help to detect defects or errors way ahead of time, so you are also helping your quality assurance personnel delivering an application that will more than likely pass basic test cases when delivering new releases. This is also an effective way of detecting environment discrepancies.
– Modify your production configuration in a way that you can deploy new releases without the need to interrupt service. This will help you avoid working extra time in nights and weekends since you can deploy with no need to interrupt application service, you can now run your deployments during normal business hours which is actually better since all IT members and business members will be available at your office in case of any issue happens and you all can quickly verify and fix any unexpected issues.
– Avoid converting database tables. If you face a situation where you are tempted to modify a column data type in the database that will lead to develop onetime conversion job or something like that, please don’t do it, this will force you to interrupt the application service while you convert field data types and run a onetime process to convert data, instead going through all this trouble, add new fields and keep the current ones as is, start using new fields when the new application is being deployed and keep the old ones for reference, this will allow you to deploy your changes without stopping application service and will be way simple to execute a rollback process in case you have to without the need to convert back or restore backed-up tables. This will reduce the chances to work extra time during production deployments.
– Avoid deploying large releases with lot of features or requirements. The more business requirements or features you deploy the more test and verifications needs to be done, which means more time, and also more complexity and more changes of potential errors, more probability of a fiasco, avoid that, instead, deploy small releases, few features that can be verified quickly, instead of having a big deployment once a month or once every 3 months, deliver multiple small releases multiple times a week, keep it simple not complex. Talk to your business owners about this and ask them to run small releases, do not allow scope increase all the time. Even if you receive a lot of features requests from your business owners, split them apart into small releases and coordinate with them which ones will go first and when.
– Add security during development not after deployment. The best time you can add security is when you are designing your application, it is less expensive at that point than being in a hurry once the application is being deployed to production and you discover a vulnerability.
– Automate solutions for recurring issues when possible. This will also save you lot of time that your IT Operations spends analyzing logs or manually executing tasks in production, will also minimize the chance of human errors. Learn what your IT Operations personnel do while monitoring your applications and put those activities into a script or process that executes manually or automatically.
– Manage collaboration the smart way. Add a tool that allows case creation to manage every request that your business owners or other stakeholders requests, we recommend you to use a cloud based collaboration tool instead of one you can setup locally, the reason is because you don’t want to maintain this application or buy extra servers for this tool, take advantage of the cloud and don’t worry about maintaining this application. Once you add this tool, do the following:
– Create a case for each feature you need to manage. Make sure each case is created with a brief description of what the feature or request is about, also include the due date there, so all team members accessing this data will know when the request needs to be completed. Make sure the tool you choose allows access to all your IT team members 24/7 from any device that has access to Internet.
– Properly update each case. Make sure the IT Team member that is working on the case adds relevant notes to let the team know when he/she completed assigned task, this is where your procedures come in to play, make sure team members like developers adds documents or simple standard forms with test results, high level description of the changes, impacted modules, etcetera. This will help you get status right away with no need to contact the assignee by phone or email which also consumes time mainly when working remotely.
– Add technical errors, limitations, issues or other problems in each case. Ask your team members to add relevant information when having a problem or technical error that help understand why it happened and also how it was solved or addressed, keep this information for future references or researches.
– Create Business reasons and identify each case to a proper business reason. Business reason are helpful to indicate the reason of the case that was created, also it is a helpful way to identify responsible team that attends specific reasons within your organization, decent collaboration tools allows you to create these business reasons and also will help you route the case to the appropriate team member in charge to attend specific reason.
– Build a knowledge database. The reason why is important to keep cases well documented is for future reference, so, have you been in a situation where you know you fixed something you just don’t remember how? Well, knowledge databases are designed to address that kind of issues and let you find information you can re-use in future. You can also use this knowledge database for training purposes or to re-use solutions or procedures to fix recurrent issues.
– Make sure cases are close or resolved. Ask your team members to close the cases when the request is completed and also add relevant notes about the solution or the reason why the case is being close. In case of incidents, always document the fix or solution.
Speeding up your SDP is very important to stay competitive and increase the chances of success, we hope these recommendations help you make your small business more efficient, start acting today on things that you can do right away, for example you can easily enable collaboration using M@vDesk, a cloud based collaboration tool that will allow you properly manage collaboration the smart way, Use M@vDesk in your organization by doing following steps:
1) Sign Up for free trial
2) Configure your virtual office
3) Create cases and use M@Desk.
All recommendation in this post are coming from around 15 years of IT Experience of our IT Personnel and also from DevOps best practices.
If you want to learn more about DevOps, please click links below:
Mavware LLC Copyright 2019. All Rights Reserved