Falling in love with Everything as Code and Automation
Only a year ago, I was a CoDe Academy student learning about Git, Docker and Jenkins. This year I’m teaching Docker to 24 students at CoDe Academy 2017 in Aarhus.
I was a computer science student of Aarhus University and I’d worked as a student developer for a couple of years. Our senior developer was only a year older than me, but he seemed to have so much more knowledge. So, when I saw the post on AU Computer Science’s Facebook-page about a one-week crash course in best-practice continuous delivery and automation, I signed up immediately.
5 months later and I’m at the Academy. Lars Kruse (Partner at Praqma) is speaking and we’re 30 minutes deep into “The Bonnie Situation” watching clips from Pulp Fiction, hearing about aspiring to be the go-to-guy when companies want a better way to work. Lars refers to the Wolf as the problem solver, and Praqma’s employees as Wolves. It’s sounds awesome. The moral is professionalism through easing workflows.
Software developers are paid to develop software. We code, we test, we might fail, we iterate, we fail or deliver. Sometimes we fail several times before we can deliver. This is tedious. Humans are inherently bad at repetitive tasks; we get tired and bored. On the other hand computers are inherently good at repeating well defined steps, and fast.
“Imagine working on an issue and delivering it by the press of a button, going for a cup of coffee, and if it works, it’s deployed, and if it doesn’t, you’re notified. Imagine you or your co-developers can’t break the build, even if you try! ” My eyes were glowing. The feedback loop shouldn’t be longer than the time it takes to get a cup of coffee?! We can deliver code at the touch of a button that can’t break the build?! Awesome.
But, what I really wanted from the workshop was to learn about the automation tool, Jenkins. I felt slightly stupid displaying knowledge of Git and Docker to the teachers - why was I attending if I already knew that stuff? - but on the last day we finally got down to talking about automation. They joked that if they ran out of teachers I could always help out when they ran the Git exercises.
Today, one year later, I’m helping out with all the exercises. I’ve lectured the first half of a Docker workshop to students from all sorts of computer related studies, and in only a few hours all 24 were toying around with containers. They were SSH’ing into clouded AWS instances, running containers interactively, attaching, detaching and even hosting their own boilerplate websites from nginx images. During the second half, I watched in awe as they built their own images and were building code automated by Jenkins, raising their hands in victory!
The workshop isn’t about developing the perfect pipeline, it’s more of a crash-course in tools, war stories and best-practices. I come from a basic knowledge of Linux and Docker, but even a student that’s never touched a terminal will be building a basic robust pipeline by the end of the academy - it’s amazing. Obviously, there’s more to the pipeline of a company than what can be taught or built in a single week, but having seen, built and worked through an example encapsulating the steps, it goes a long way to replicating the experience.
War stories is more than just a cool term, some of them actually are “fun” horror stories of what we should have done differently in the real world. Hearing war stories gives us real life examples of how better practices could have rescued nightmare development scenarios. Students that spend their holidays with extracurricular exercises in best practice are interesting to companies that want the best graduates. Sponsors during the week held talks about how they have set up their delivery pipelines, what they’ve learned, and what they’re doing to develop code better. It’s advertising, but it’s also genuinely reassuring to find that the things we’re learning and teaching are being used, very much, in industry right now.
I met Praqma for the first time one year ago. I’d signed up for CoDe Academy 2016, simply curious about Jenkins and automating deployment, but what I ultimately ended up with was a deeper understanding of delivering code. I discovered the concept of the happy developer by spending time on the fun parts of development and not the tedious ones. We joked, next year I should be there, with a job at Praqma, teaching. I don’t take a challenge lightly, and plan on teaching for years to come.
After attending the academy as a student I wrote a very concrete blogpost about implementing Praqma’s abstract “praqmatic workflow.” They viewed it as a job application. I went on to apply my acquired knowledge as a consultant and taught a couple of senior developers how to work with Git. I even managed a small project before I finished my Masters’ degree and finally applied properly at Praqma.
The blogpost I wrote can be found here.
What testing steps should you include in your Continuous Delivery pipeline? Don’t just string together existing manual processes - use simple, collaborative tools to design something better!
Pipeline - The Game that Delivers!
A new card game to design Continuous Delivery pipelines
Continuous Delivery at Kamstrup
Kamstrup partnered with Praqma on their journey to Continuous Delivery
Jenkins is one of the best adverts for open source and at Praqma we have been using it since the very beginning. We enjoy giving something back to the community by hosting Day of Jenkins, and this year’s event was packed with exciting developments. Read on!
Celebrating Jenkins and open source collaboration
Day of Jenkins [as code] - A summary
Continuous Delivery and DevOps are here to stay and not because they’re being practiced by trendsetting unicorn companies. The fact is science tells us that these approaches work and this year’s conference gave us lots of examples.
Continuous Delivery and DevOps - Not Just For Unicorns
DevOpsDays Copenhagen 2018 was a great success. Inspiring talks and a pleasant community. I had the pleasure of being the host of this event. I decided to kick off the event with a song about DevOps. See the video and lyrics here.
The DevOpsDays Copenhagen 2018 Song
A whole new (DevOps) world
Once again the contributors and major players in the Git ecosystem are gathered. Read along for news, announcements and stories from Git Merge 2018.
Report from Git Merge 2018
Blogging from the Git Merge Conference at MACBA in Barcelona
A developer that pushes their changes and goes on a celebratory walk to the water cooler is done. But, they’re not done done, their changes have yet to be thoroughly tested, added to future release notes, properly peer reviewed and more. These are pains we want to rid the software industry of, and here’s how we do it.
A Continuous Delivery storyline
How we tell the Continuous Delivery story
We strive to continuously improve, so the 8th gathering in our Continuous Delivery Alliance will feature all the good things from the 7th meeting in a slightly evolved format.
CoDe Alliance goes code camp
Continuously improving our format
We had our 7th gathering in the CoDe Alliance a few months ago and have worked to distill and evolve many of the good ideas that came out of our sessions. Our aim is to turn our interesting discussions into tangible projects and running code.
The 7th gathering
What’s next for the CoDe Alliance?
Immutable infrastructure as code reduces inconsistency and makes deployments faster and easier. We can provision immutable infrastructure with Packer & Terraform. Let’s use them to provision Jenkins Windows build slaves.
How to provision Jenkins Windows build slaves using Packer and Terraform
An immutable infrastructure approach
Albert Rigo shares his thoughts on the Atlassian Accelerator Day in Copenhagen, and how he learned to quickly and comfortably scale Atlassian Data Center, upgrade with zero downtime and stop spending his weekends upgrading JIRA.
Atlassian Accelerator Day in CPH
A day to learn how to scale fast and upgrade without downtime
Hear about upcoming events in Scandinavia, latest tech blogs, and training in the field of Continuous Delivery and DevOps