Git - the main enabler for technology development.
This article discusses Git, the main technology underpinning all software development which allows software developers to effortlessly employ a 4, 6 or more eyes principle when making changes. Git is a version control and change control system for storing code, enabling technical teams to freely and safely work together. How, why and when should less technical teams use Git and a real programming language for their own competitive benefit?
Many important business decisions are based on flawed spreadsheet documents prepared by domain professionals. We cripple the performance and value of these professionals by expecting their output in the form of spreadsheets. These processes, simulations, business cases & calculations almost always suffer from hidden errors, logical flaws, etc. as the volume and complexity of data exponentially grows.
This gap can be overcome by teaching these professionals a programming language and a collaborative development process based on Git. Giving them the power of effortless change management and peer review will dramatically reduce the rate of errors and improve individual performance. Python is an easy choice as a programming language, it is easy to learn, powerful and by far the most popular programming language in the world today.
Python Skill Sprints are an intense two week program to teach a pair of less-technical people basic Python software development by getting them to immediately deliver something to their team. The participants are led by an external expert who teaches, coaches and supports their journey into new ways of working with Python and Git.
Tech Teams and Git
Today, it feels like “Tech” as an industry, group or concept is somehow losing its way. The technical community is climbing higher and higher into more and more esoteric technologies such as blockchain or artificial intelligence. Tech has raced ahead from the society which it supposedly endeavors to serve.
One problem that tech does not have however, is change management. With all their assets written in code and stored in the version control system “Git” - these organisations are able to rapidly change whilst still maintaining operational efficiency. Software developers are able to make changes to their codebase in a safe way with comprehensive but effortless processes for peer reviewed changes. Git it truly the source of power for technology teams.
Git is a bit of a weird animal - sometimes obscure and difficult to use. The team behind the Linux kernel - the core part of the Android smartphone operating system and the majority of the world internet facing servers - created Git to track changes to this humongous project. It is now ubiquitous in software development.
Similar to Google Drive or Dropbox which synchronise the contents of a folder on our computers to a cloud server, a Git repository allows us to synchronize our files to a cloud server with very precise controls. It can have virtually unlimited people working with the repository - all making their own changes within their branches. One person can check out the work of another with a couple of clicks or simple commands. Git is the ultimate collaboration tool from which the tech industry stems its power.
The Linux Kernel team is very distributed with thousands of members sitting in every country of the world - so Git had to be a distributed system. Every developer has a full copy of the project on their local machines with only the changes they make pushed to one or more central “Git servers”.
Whilst we can store any kind of file in Git such as Microsoft Office documents - the full change control functionality only works with raw text. All programming languages and a lot of interesting data storage formats are raw text.
Within Git - our code is stored as a series of ‘commits’. Each commit is a record of lines added or deleted and a reference to the previous commit. In the diagram below we can see three commits. The green lines are additions and the red lines deletions. The digits indicate line numbers.
So git provides us with line-by-line atomistic change control, access control and versioning. We can access any commit or check out our colleagues´ branches with a single click or command. And we haven’t even started talking about Git Operations (GitOps) yet.
Branches can be somewhat difficult to understand. We can think of them as a kind of linked copy of the live ‘master’ code. Someone can create a branch from the master branch and safely make changes there. When they have something working they can ‘merge’ their code back into the master branch.
Here we can see a concrete example. Amanda is able to finish off the nursery rhyme whilst protecting the integrity of the live version in the master branch. At commit ‘x’ Amanda and Keith are able to see the whole poem with the new lines and are able to make a decision if it should be merged or if further changes should be made.
Why is Git so important to tech
There are around 10 core programming languages and hundreds of thousands of libraries, modules that enhance the capabilities of the programming language. Development teams have incredible choice in the tools they use, apart from one thing. Git.
Git can be very complex, difficult to use and probably impossible to master. Most developers will freely admit the shallowness of their understanding. They have all got themselves into a pickle with it at some point. But all developers are productive with it and learn to appreciate its power. Git provides these teams with incredible flexibility and safety enabling them to develop complex systems extremely quickly. With spreadsheets we scrape in the mud, trapped into the eternal servitude of copy and paste. To rise above - we must steal this fire from the gods and harness its power.
A Skill Sprint is an intense real-world learning experience for teams looking to embrace new technologies. During a Skill Sprint the participants learn new skills by directly delivering something to their organisation.
Further Reading - The Peril of Shadow IT
The liabilities that Excel exposes us to are only getting worse as our jobs become more and more data orientated and the volume and complexity of this data increases exponentially. How can Python and Git deliver us from the copy and paste quagmire?