This site uses cookies to improve your user experience. Read our privacy notice.
Continuous Delivery Assessment
Continuous Delivery
DevOps
IT Operations Assessment
Consulting
Git Migrations
Technical Agile Coaching
Testing
Atlassian Consulting
Docker
Kubernetes Consulting
We want to automate everything. Therefore, we are constantly working on new solutions and projects to make DevOps and Continuous Delivery easier.
Eficode Praqma Academy offers public training courses and custom on-site courses. All courses are hands-on, and run by professionals with real world experience.
Engaging with the community is essential for Eficode Praqma. We regularly host conferences and meet-ups, and proactively contribute to open source projects.
We specialize in Continuous Delivery and aim to change the world of software development by sharing our knowledge and building strong communities
The tale of sharpening your knife skills
We are all a bunch of tech and tool nerds. We enjoy hacking out a clever solution. Finding exactly the right commands and switches to solve the challenge at hand. Sometimes we go a bit overboard. Many developers don’t think Git is something that we should tinker with. But it is!
I have taught Git many times to a wide variety of people. Usually I’m on top of my game and got answers at the ready. But one day a question stumped me: “Why should I learn Git? I’m just a software developer”. To the developer in question, I was some kind of special breed, those that enjoy tooling. And while that is true, I still believe that being proficient in Git ( or whatever inferior SCM you are currently using ) is an essential part of being a skilled developer.
I had taken it for granted that, of course, everyone should learn Git, but now I was challenged on my assumptions. What a delightful and helpful exercise for me to answer that question.
We all have expectations of software developers, be it ourselves or others. Proficiencies, understandings and competences a skilled developer should possess. Here’s a few common ones.
I think this is the least controversial of the “pillars of skill”. I expect a skilled developer to know something about the things that they are making. If you are an embedded developer this could be the trouble with interacting with hardware, working on a real Real Time system, or working with restricted resources. When developing Windows applications, it wouldn’t be unreasonable to expect the ability to interact with Windows core features These are things you might not know when you start in a new position, they are skills you hone. They separate the rookies from the skilled developers.
Your IDE is likely the place you spend most of your time when developing software. (My condolences if that’s actually PowerPoint or SharePoint.) So to be efficient, you need to work gracefully within that setting. Do with a simple keystroke what novices do with multiple messy menus and deceptive dropdowns. Know how to tweak the configuration so that it suits your workflow and domain.
A skilled developer should be proficient with the language they work in. They understand the idioms, features and limitations of their language and know their way around the standard libraries. If I’m coding Java everywhere I’m doing it wrong.
There are a lot of items that can go in a ‘miscellaneous’ category. We, at Eficode Praqma, tend to shed light on a lot of dark corners in this area. I expect a skilled developer knows how to build and release his own software. But many places “It’s Steven who can make the release, it works on his machine”, so I might be very naive in that aspect. But If you are not able to release your piece of software, how can you bring value to the business?
Many developers are handed a toolstack, and get complacent. “The tools team has got it”. However, you need to work efficiently, and an external dependency on a separate team is not facilitating that.
So after all of these points, why do we not expect our software developers to
master Git?
When I started using Git I could commit, pull and push. Merge conflicts gave me sweaty palms and I often found myself deleting a repository and cloning it again.
I also tended to have multiple versions of The Software lying around. The_Software_02-05-17
, The_Software_02-05-17-going-home
. It is clear that while I was using Git, I did not know Git.
There are many benefits to knowing Git. Here’s a few:
Being comfortable with Git’s lightweight branching model makes it trivial to go on tangents, while keeping the experiments isolated yet easily integrated.
Software Development is most fun when you are collaborating. But the ability to use the full force of Git while not being connected is very strong. You can still make many checkpoints in your history and check out previous versions. This, for many people, is reason enough to use Git.
Git branches are made for Continuous Integration and automation, so they will enable all your automation efforts. A branch can be used as a flag, a branch can make sure all automation work is isolated, and doesn’t even duplicate any data.
Git does not impose any workflow on your organization. You can choose for yourself. While this is a double-edged sword, and requires some up-front investment, it will empower you. Rather than compromising your flow to fit the tool stack, you dictate the flow and easily customize Git to suit your needs.
We do a lot of training in Git at Eficode Praqma. We’ve even done free Git Training Course and Continuous Delivery Academies for students. We also train professionals, check out our Mastering Git course. If you want to do some self study, look into our excellent Git Katas.
In this post, I’ll take a closer look at the version of Jenkins X using Tekton, to give you an idea of how the general development, build, test, deploy flow looks like with Jenkins X. How does it feel to ship your code to production using a product coming from the Jenkins community that has very little Jenkins in it?
Get started with Serverless Jenkins X
A crash course in Jenkins X and how to test it out on a local Kubernetes cluster
In this blog I will show you how to create snapshots of Persistent volumes in Kubernetes clusters and restore them again by only talking to the api server. This can be useful for either backups or when scaling stateful applications that need “startup data”.
Tutorial: Snapshotting Persistent Volume Claims in Kubernetes
Sneak peak at CSI Volume snapshotting Alpha feature
When I read Fowler’s new ‘Refactoring’ book I felt sure the example from the first chapter would make a good Code Kata. However, he didn’t include the code for the test cases. I can fix that!
Turning an example by Martin Fowler into a Refactoring Kata
Writing tests for ‘Theatrical Players’
Nicole Forsgren and the Accelerate DORA team has just released the newest iteration of the State of DevOps report. The report investigates what practices make us better at delivering valuable software to our users as measured by business outcomes. Read on for our analysis of the report, and how it can be best put to use.
Accelerate State of DevOps Report 2019
The latest drivers of software delivery performance
A major challenge of software development is that our work is by and large invisible. This makes our folklore essential in business matters. Some of our commonly used arguments and visualizations are digital urban legends rather than solid foundations for informed decisions. Here, we’ll go through a few examples and some measures to address our misconceptions.
Misused Figures of DevOps
How the stories we tell influence our decisions
When you embark on your cloud native journey there will be important choices to make about cloud providers, continuous deployment, environments’ setup and separation. This guide will help you make the right choices by sharing lessons learnt from running cloud native apps in production.
Kubernetes has become the de facto container orchestration platform. When we help clients of different sizes and domains start their cloud native journeys in Kubernetes, we assist them in making sound decisions and technology choices. There is no one-size-fits-all solution when it comes to choosing cloud providers, CI tools, continuous deployment pipelines etc., so it is important to make the right decisions at the start. Failing to do so can be very costly in terms of lost time and money.
Start well with Kubernetes
How to make the right technical choices on your cloud native journey
Learn how Docker and Kubernetes work and the key benefits they bring. Using real demos, I show how Docker is a great packaging and distribution technology, and how Kubernetes provides a powerful runtime for containerized applications.
Video - Docker and Kubernetes in 40 minutes
Watch this introduction to Docker and Kubernetes at the Trondheim Developer Conference (TDC)
In the world of Agile and DevOps we use many figures, charts and diagrams to argue and reason about our world and how we prioritize and make choices. However, at all levels of the organization, we misuse and misinterpret figures. It’s time to be explicit, measure the right things and act on them. Watch this talk from DevOpsDays Zurich in May 2019.
Misused Figures of DevOps - Video
Watch this talk from DevOpsDays Zurich
Summer is a great time to catch up on reading, whether you’re at the beach, in a summer house, or cozy at home. If your book backlog is on the short side, don’t worry! We compiled a list of great books for summer reading.
Six books you should read when working with DevOps
Inspiration for your summer reading list
Hear about upcoming events in Scandinavia, latest tech blogs, and training in the field of Continuous Delivery and DevOps
All the latest from the world of DevOps and Continuous Delivery.
- Events & Tech Blogs
- Training Courses & New Services
- No Spam (we hate that too)
Get started with Serverless Jenkins X
A crash course in Jenkins X and how to test it out on a local Kubernetes cluster