Software development and programming are creative social activities which are supported by technology. GitHub is a social coding platform - It supports modern and contemporary ways of working including principles and concepts adopted from Agile, DevOps, Continuous Integration, Continuous Delivery, Developer Experience, Containerization, Automation, Documentation

image

Context

This module is developed in the context of AP programme for Computer Science at Copenhagen School of Technology and Design (KEA). It’s part of the fulfillment of the curriculum of the topic technology.

The Tech Stack

We will be exploring the following technologies:

Learning goals

  • Understand and master tools and techniques to support asynchronous, text-based collaboration in a distributed VCS.
  • Utilize principles of Social Coding in GitHub through web features, CodeSpace and CLI.

Resources

Flipped Classroom

The concept of a flipped classroom is putting the focus on the learner’s learning - rather than the instructor’s teaching. Familiarize yourself with the resources below - (“suck ‘em up!”) - before we meet in class. It’s likely and even expected that the material will raise questions. Should that be the case, you are encouraged join the KEA.dev discussions 💬 on GitHub. Feel free to mention or assign me - @lakruzz - if you post a question.

GitHub Projects and Issues

📚 Project Planning for Developers
⏱️ [20:00]

This is a link to GitHub’s official introduction to projects - it’s very high-level and may not actually bring you much learning. But use it as a strating point for your exploration of GitHub Projects. Dive into the frequently asked questions (at the bottom of the page) or try to explore the topic in another way (try using the link in The Tech Stack list above - it points to the manual). Time box this to at least 20 mins - familiarize yourself with GitHub Projects - what at they trying to help you with? Try it out in one of your own repositories.

Git Branching strategies

📚 1: Branching strategies
⏱️ [30:00]

📚 2 Trunk based development …
⏱️ [30:00]

1st link is a short piece on branching strategies - it introduces three different flows: “Git Flow”, “GitHub Flow” and “GitLab Flow” see if you can grasp them - and how they differ.

In the old days (ten-fifteen years ago) branching strategies were really a hot topic - and it wasn’t easy. Today there seem to be a convention among most teams that some variant of keeping the master (a.k.a trunk or main) pristine and ready for deploy is the way to go. This concept too has many names; trunk-based development (derives from an old - now obsolete version control system called Subversion), or Release Train which comes from SAFe - a framework that claims tha Agile can scale. Read about Trunk-based developement it in the 2nd link. And the ask yourself? Is GitHub Flow compliant with the concept of “trunk based development”? Is Git Flow?

The graph above is just for fun - git is disruptive - literally. It killed Subversion! And GitHub is now more popular and used - than git itself. The tail wagging the dog?

KanBan - Signalling board

📺 1: Atlassian’s take on KanBan
⏱️ [06:00]

📚 2: Scrum/KanBan difference
⏱️ [15:00] (read time), 📺 [11:00] (three embedded videos)

We touched briefly on KanBan earlier. The method is old (1980’ies) - it derives from “TPS - Toyota Production System” - Lean Manufacturing. To many it’s seen as an alternative method to Scrum. Luckily KanBan is merely a technique and Scrum is (sometimes) a methodology - not (always) a religion - so you are free to combine them if you got the stomach for it.

Watch Atlassian’s take on KanBan - and Miro’s explanations of the difference between KanBan and Scrum.

What are your thoughts? any preferences?

Additional resources

This section gives you more - but on a strictly volunteer basis. Continue to explore if you like. But in order to tag along in class, the resources above are sufficient.

Git Aliases - taken to extreme

🔍 “Git Aliases - taken to extreme”
⏱️ [20:00]

This is a blog I wrote to demonstrate some nifty git tricks - and it also explains the concept of SemVer - Semantic Versioning. As the title says it’s a bit extreme - so I put it under additional resources.

GitHub CoPilot

🔍 CoPilot - OpenAI Codex and GitHub Copilot Docs
⏱️ [30:00]

You know ChatGPT right? You’ve head all the stories about how it can write you code for you. But did you also know that the same AI engine - codex which is an integrated part of OpenAI is also available as an extension to VS Code? Check it out. Install it, play with it - and then ask yourself is this cheating? Is it helpful? If this is how code is written in the future - where does that leave us - as programmers? Time box this to at least 30 mins