DevOps at the Devshop

The biggest lessons we have learnt as a startup are in business operations. Some context: our team consists entirely of developers. It has been that way from the beginning. We have always been more comfortable designing algorithms and user interfaces. We have not enjoyed the same flair with the business end of operations. Us evolving into a growing and thriving business meant we had to make ourselves more productive. We had to find ways to optimise our profitability without compromising the value that our clients and partners have grown accustomed to. This meant gap closing between the development and the business operations of the Devshop. This became the starting point  of redesigning our DevOps culture.

What is DevOps

Donovan Brown, Principal Program Manager at Microsoft defines DevOps as

“The union of people, processes, and product to enable continuous delivery of value to the users”

To increase the value that we offered to our partners and clients meant that we had ship code faster. We had to do this while delivering the same kind of work that had made them choose us. Achieving this meant engineering and operation concerns had to work together much more seamless. This is through client on-boarding, planning, development, testing, deployment and maintenance phases of our process.

Using the right tools

An undoubtable aid to our DevOps culture is Visual Studio Team Services. By adopting VSTS we got features like Source Control Management, Private Repositories, Planning and Workflow Management tools like Kanban boards, Tools for Continuous Integration and Continuous Delivery. Visual Studio Team Service gave us an end to end solution for all our technical devops needs. The beauty of Visual Studio Team Services was that is allowed us to automate most of the mundane task of our process and let members across our team do the less mundane tasks. The VSTS platform allows us to use any other framework for any other part of the process if we feel we need to.

We also adopted Microsoft Azure as our platform of choices for web service for a number of reasons. One of these reasons is how seamlessly Azure will integrate with Visual Studio Team Services. This made a lot of the processes we implement available through very easy processes.

Automation- what a beautiful thing

One of the sweet benefits of adopting this new DevOps culture was the number of things that we have automated.

Deployment.

A single “git push” command from our code editors now sets in motion a beautiful process for a number of our projects. A case of a Webapp with a ReactJS frontend and a NodeJS backend – a single push triggers the following process.

  1. Uploads Code to a private team repository
  2. Upload then triggers a Continuous Integration Process.
    1. The CI Process starts a remote hosted machine.
    2. The code in the repository is moved to that machine.
    3. A Powershell Script triggers “npm run build” command on the remote hosted machine.
    4. Process creates React /build deployment-ready folder.
  3. Once the process on the hosted machine is complete is triggers an Azure Web Deployment.
  4. The /build folder is moved to Azure.
  5. After completion an email is sent notifying whoever triggered the build on whether it has been successful.

The beauty of this process is that it is flexible to my technology stack and the DevOps culture we choose to adopt. We can choose to run tests at the end of the process. We could write scripts to have the code pushed to the live site if it passes a set of tests.

Added value for clients

The level of automation in our process has now allowed us to serve our clients better. We now have backups for every project we take on for our clients. As a result we can redeploy their work for them with the push of a button. Also noteworthy, small changes are made and the deployment process triggered by a single “git push” command. Due to the automation, a large cost overhead is avoided. Our development process has improved significantly because clients can see our internal project communication while we work on their project. Clients are even able to see live versions of the work as it progresses. We now provide telemetry for our clients so that they know when to revert to a previous deployment according to response by users.

Added value for Users

For applications like Dialogue and Foodie, we can now address bugs more promptly and ship new features much faster. Because we collect telemetric data with every deployment, we are able to see our user’s response to every deployment. This allows us to continuously and consistently deliver more value to end-users

Added value for developers.

While running a task like “npm run build” is simple, it runs for a few seconds which may take a developer out of the zone. Our new adopted process allows all this to happen on an external machine. Our previous process of deployment process for example, required for a developer to zip a file, login in to our hosting platform, navigate to the correct folder, upload then unzip the folder. This needed to happen whenever we wanted to update clients on changes we have made. This has greatly improved productivity.

DevOps has greatly improved the efficiency of developers

DevOps has greatly improved the efficiency of developers

Conclusion.

This article could never exhaust the benefits we have had at the Devshop after adopting our new DevOps culture. The adoption has increased our productivity on monumental levels and we will be sharing more articles on the technical and non-technical aspects. Overall, we have managed to make developer more productive resulting in greater client satisfaction and consequently healthier profits. We recommend that organisation take their DevOps seriously. While we have achieved much from the time we to the decision to adopt devops, it is is a continuous  process and we are always looking for ways to make ourselves better

Developer Community

Building a Community

The last two months have been a learning process for us. We deployed Dialogue to the public. Dialogue is huge for us because becomes the first complete platform that we have worked on to this extent. The process, subsequent product and adoption had a lot of lessons with regards to our work culture and our operations. Adapting to lessons such as these ones is an essential part of how we keep ourselves relevant as a business. The Devshop has always been about enabling software developers to be able to deliver meaningful software. We will now be building a software developer community with greater intensity. This community will enable us to better share what we are continuously learning and reach even more developers. We have already learnt fundamental lessons and will be sharing then through the community.  Technology is the application of scientific knowledge for practical purposes. Advanced software is not more important than simple software can make a meaningful difference for an ordinary user. We will be focusing more on implementing simple software that can affect lives in a meaningful way. This definition has allowed us to reflect on the software that we will  be building. One of the functions of the community is to facilitate discussion. Discussion such as how we can design software that can make real impact in our community. These lessons require a shift in work culture for us and for many developers we interact with. It is the nature of developers to enjoy a good challenge. They have an affinity for mentally-stimulating projects.  There is a temptation to learn a framework with every project. It is important to find the balance between learning and using what you are already know. Our drive will now instead be about how many lives we impact through our software.  

Putting in Action through Community

We will be reinforcing our efforts to build this community by hosting a series of developer meetups. We will share the challenges and triumphs of building a software based business in Zimbabwe and encouraging as many in our community to do the same. Equipping developers with the skills they need to develop useful and meaningful software is one of the foremost reasons for our formation. A mandate we imposed on ourselves.  With this community we anticipate that the effects of the work we have already been doing will be more widespread and reach an even larger community of developers. We have no doubt about the possibilities that local developers can open for local communities and we are excited to get started. We will be releasing the dates for our first community meetup in the coming weeks. Lastly, we are always excited to receive feedback from the public, it helps us deliver better and better projects. If you have any suggestions do not hesitate to get in touch with us.   Devshop Community Hackathon

Our Story : How the Devshop started

Our story starts in a room in the basement, where a group of young people sought to start businesses that would change the country and eventually with the right determination, the continent. A community of young and vibrant young people who have ideas that they feel will disrupt the way local business conduct their everyday processes.

From the earliest days, the lack of skill in our small community to develop world class software became more and more obvious. Ideas requiring technical knowledge far outweighed the developers who could build them. Technology was an essential part of our delivering some of the small ideas that would impact our communities in a huge way.

The Techfest Hackathon

The Techfest Hackathon

In that small community a developer community formed and using our individual strength we began to upskill each other and continually and consistently became better. We learnt that there was strength in numbers that our combined efforts to better ourselves was greater that the sum of our individual effort. From then we have never looked back and continue in our mission to equip and empower as many developers as possible to contribute to their teams and to start then grow meaningful business.

Over time, one belief has become a fundamental to the way we work: We are only as good as how much we learn and how we implement what we know to solve problem and solve challenges that the people around us encounter everyday. We realise that we only become valuable in our societies if we have the audacity to learn and build.