We’re living difficult times, experiencing once-in-a-lifetime events on a yearly basis and, whether we like it or not, these circumstances heavily impact our industry. However, there’s always a silver lining and as the old saying goes, “tough times create tough… organizations”.
There are multiple ways through which one can strengthen a software development organization – improving key processes, adding valuable tooling, focusing on growing people, to name a few. There is usually no perfect recipe to this, but what we can say for sure is it helps to have a guiding vision to light your way. And for our current journey, this has been establishing Maxcode as a peak DevOps company. And while we’re probably not there yet, we can already draw some conclusions and offer some advice.
In general, DevOps is a software development approach that focuses on collaboration and communication between software developers and IT operations professionals. Its main goal is to reduce the time it takes to develop, test, and release software by streamlining the process and increasing automation levels. In recent years, DevOps has evolved to become more of a cultural philosophy rather than a set of tools and practices, although it still heavily leans on them to achieve fast, reliable, and resilient delivery of software reducing the gap between the code and the infrastructure it runs on.
We’ve been doing DevOps informally for many years, but it was mostly seen as a side dish, rarely as a main course. Armed with a vision, imagination and, most of all, passionate people, we set out to shift this paradigm. And if you’re looking to do something similar, we got some tips to get you started.
Set up a practice baseline
The main approach to getting traction in DevOps adoption is increasing the use of automation and continuous delivery practices – automatically building, testing, and releasing software, allowing teams to deploy new features and updates quickly and safely. This helps organizations reduce the time-to-market for delivering new features but also improves their ability to respond to customer feedback and always-changing customer needs.
For us, in broad strokes, this meant an effort of reassessing the level of automation in our projects – finding “role models”, as well as weak spots, and setting-up plans to improve them. In practice, this was achieved by picking up low-hanging fruit, such as automating manual deployment steps, code quality checks, integrating tests in pipelines, but also more complicated ventures, such as migrating production cloud setups to infrastructure as code.
Foster a culture of experimentation
Following other people’s footsteps, guides and recommendations can only lead you so far and at some point, you need to find your boundaries and step outside them. When looking to strengthen an organization, especially in a technical field such as DevOps, allowing teams to experiment, fail, learn from mistakes, and comfortably start again is key. Besides the obvious advantages of discovering new tools and techniques, such a culture allows people to find their mojo, cultivate it and learn to regain it in unsuccessful real-life scenarios.
This year, we’ve been fortunate enough to experience in-person events once more. With this, we went and organized two internal hackathons, each as a full day of experimenting new concepts, tools, and practices, coupled with fun challenges, hot pizza, and strong coffee. With the first one centered around Blockchain, our teams built functional prototypes showcasing decentralized web3 technologies in domains such as FinTech, Healthcare, Housing and Education. Our second hackathon was more of a meta-challenge, with each team sharing the same starting point – a simple codebase – and applying a variety of DevOps practices to achieve higher levels of performance, stability, reliability, testability, and predictability.
Treat learning as a loop, not as a timeline
The Dunning-Kruger effect is a wonderfully expressive examination of discovery and learning which, simply put, showcases how the more you know, the more you realize you don’t know (or how I like to say it, the more you know, the less you know). Where it falls short though, is how people take to interpret it as a single holistic pathway, from “Know-nothing” to “Guru” level – the moment somebody achieves the final step, they become accomplished and can move on to something else entirely. In my experience, I see that as a potential trap – once you’ve overcome Mt. Stupid, the Valley of Despair and started climbing the Slope of Enlightenment, you may end up finding yourself on just a taller Mt. Stupid. And that moment is key, as it sets individuals up for dedicating energy, time, and other resources to reach higher and higher levels of knowledge.
In Maxcode, we love challenging our people to become better versions of themselves, by offering them the support and resources they need. This year, we’ve been able to take part in several DevOps events – workshops, masterclasses – organized by our local partners and friends. At the same time, our favorite yearly conference, Innovative Tech Talks, celebrated its fifth edition (wow, does time fly by) and with it, we had a tremendous DevOps presence. Viktor Farcic, Henry Been, Chris Behrens – well regarded DevOps trend setters – alongside our very own Alexandra Săvescu and Cristian Mihăiță shared their combined decades of experience with the audience, touching on topics such as Kubernetes, Continuous Integration and Infrastructure as Code.
Overall, by adopting DevOps practices, organizations can improve the speed and quality of their software development, allowing them to better respond to changing customer needs and stay competitive in today’s market.
End goal: perfected DevOps practices
Within Maxcode, our specialists implement and adapt DevOps strategies so that our clients benefit from the positive effect on their business. The key is to bring code changes to the market as fast as possible and we achieve this by creating reusable continuous delivery pipelines, fully automating the build, test, and deployment processes. Afterwards, when changes are running in a production environment, our engineers monitor complex infrastructures using specialized tools to assess system stability, security, and performance, but also act when needed.
When it comes to coding practices, our DevOps engineers setup projects so they go through static code analysis tools, ensuring best practices are followed, but also any security liabilities are avoided. At the same time, our teams are well-versed in setting up complex cloud infrastructures, usually working with infrastructure-as-code tools such as Terraform or CloudFormation, to provision cloud setups in Microsoft Azure, AWS and Google Cloud.
About Adrian Marinică
Adrian has been a Maxcoder for 10 years, a time in which he has embraced many technical lead roles, which have led to where he is today. In his role as technical manager, Adrian is focused on researching the right trends that will bring the upper hand to our clients, as well as help the team grow, with trainings and learning programs that will build on the skills and talents of the people.
9 November 2023
Navigating the Risks and Impact of Web Security in the Fintech Sector
A Comprehensive Developer Guide to Web Security Challenges
Navigating the Complex World of Web Vulnerabilities