I’ve started a little series of some (by far not all) of the people that have shaped me during my career as a consultant. The more I think back of the things they said, did, and taught me - the more I can see how I’m using their advice just about every week.
Today the turn has come to a colleague that I had at Cap Gemini - the first senior consultant that I worked with and someone that made a huge impact on me and my ways; Lars LittorinRead on ...
I’ve just started a series about a few a the people that have shaped, influenced, and affected me throughout my career. The reason I’m writing about this now is that I lately have had the opportunity to be a role model for other young developers - I notice that much of what I say and do comes from others; things I’m saying, manners I’ve picked up, approaches to code, development, and life in general.
I am, as the saying goes, standing on the shoulders of giants. For what they have done for me I’m very grateful and I wanted to show that gratitude here.Read on ...
I have a great job! I get to work with a lot of young people and get to train developers in the early stages of their careers. It’s absolutely amazing to see people develop in these early steps of their career.
But it also creates a weird feeling for me - since I, to them, comes out like an old sage telling stories that are long-forgotten about how the web was when the world was forged. Back in 1996 and stuff. I feel both a bit like Gandalf - both in age, length, and how I’m addressed.
It’s scary. Because, if we’re going to be a bit more serious, I realize that I become a role model for some of them. How to behave, act, say, and think about our work. This is especially real when we talk about agile practices and techniques, that has a lot of principles and thinking patterns in them.
This made me think about my own early influencers in this industry. And I realized that I never said thank you to them. And that many of them probably have no idea what working with them meant to me.
So, this is the first post in a series of “thank you”-notes to my early role models. Today it’s Staffan Rolfsson - one of the first.Read on ...
At least you’d want to check out the code, do an installation of dependencies and then run the test and see that you get the expected behavior. Preferably you’d also wanna see that we don’t have deprecated dependencies or broken stuff. And probably check this, at least once before each course.
This is what scripts are made for, right? Automate the boring stuff.
The only problem is that since we are teaching a lot of different technologies and tools, not two repositories are the same; this one uses Docker and this is actually just text, and over here we have one that is purely for CSS-stuff. In one repository we should have 4 failing tests but no linting errors. In the other, we need 42 liting errors but no failing tests. Etc, etc, etc. It’s nigh on impossible to write a script that checks this for me. It’s pretty much custom code and checks in every repository.
This problem pushed me to investigate how we could automate this process with bash scripts. I learned a lot and wanted to share a bit.Read on ...
At School of Applied Technology, our accelerated career program is running in small teams, using Mob Programming. We have found that this gives us the most and best learning in a short amount of time. In this setup the tight group that you are in becomes both your best teachers but also, from time to time, you will be the teacher others in the group.Read on ...
In these very strange times, we see a lot of change; some are really sad, devastating, and depressing. While others are encouraging and celebrate humankind’s will and capacity to survive and overcome.
Others still, are just interesting to observe and learn from. These last weeks I’ve noticed two new realizations about two of my favorite topics; feedback and transparency. They too, it turns out, are affected by the changes in our ways of life due to the corona pandemic we are living under now.
This post reflects a few thoughts and ramblings that I’ve had in my head for some time. I’m not hoping to solve world problems here, but just get some reasoning down.Read on ...
I’ve just experienced something fantastic and a real testament to what amazing people can do when given the room to be amazing (and have an apparent and real reason to do so)
A week back, our accelerated career program; School of Applied Technology - the world’s toughest coding bootcamp were running five mob programming teams (that we call mobs) in two locations. This is how we teach and it has given us amazing results so far.
But it’s not cool being the “let’s sit as close together as possible for 8 h per day”-teacher in times of Covid-19 infection spreading across the world.
So in the middle of last week we started to make plans. Last Friday we had a “just in case”-lecture on tooling for our 5 Amsterdam mobs. Then during the weekend, things escalated in Sweden and we decided to move over the 5 Stockholm mobs as well (yes, without training them). Monday, 6 days ago as I write this, we had moved everyone into our remote-only platform.
And you know what? Just about everyone found it not only useable but actually very useful and, in some reports, even better than before.
In this blog post, I wanted to share our suggested platform setup and some findings that our mobs shared in our weekly retrospective/demo session last Friday.
And before I write a word more: this was not my doing. It was the amazing instructor team of Salt (Mies, Zach, Daniel, Levy, and Adam) setting the stage and then the brilliant developers of Salt building their own applied practices on top of that. Yes - just about every mob did it differently and I loved it.Read on ...
My current role is awesome - I get do do some agile coaching, quite a lot of teaching, reading up on new tech and from time to time some programming.
Yesterday evening someone just blurted out: what if all of us died at once?! All the code and documentation would be hidden in a cloud somewhere and we will not be able to get it.
That cloud is GitHub and I’m sure it would be safe and that the risk that we all die at the same time is relatively low. Then again - I have booked a raw chicken tasting for our next offsite …
Just kidding - but when that was said my programmer-self sprung to life and I deviced, in my head, a simple script to make an offline copy.
This post describes that script. Oh - I only had 30 minutes spare time to do it in. That was my timebox and I actually managed to pull it off. The finished script is about 5 lines of code… but I’m still proud.Read on ...
I got a question, on twitter, the other week about how to handle a long list of backlog items on a kanban board. Here’s the original tweet:
Hej @marcusoftnet. Vi sitter med en backlog med 300+ oorganiserade och oprioriterade stories som ska passera vår #Kanban board närmaste 10 månaderna.— Tvivlarn (@MeChristensson) February 9, 2020
Hur kan vi "gruppera" stories för att förenkla refinement och beroenden mellan stories?
- under epics?
- funktionella områden?
And my adequate translation. The tweet by “The Doubter”
Hey @marcusoftnet. We got a backlog of 300+ un-organised and unprioritized stories that will pass through our #kanban board the coming 10 months. How can we “group” stories to simplify refinement and dependencies between stories?
– by epics?
– funktional areas?
I got his permission to repond here on the blog. It’s a response and not an (and even less the) answer.Read on ...
The other day we started a new course here at </salt> And the first day we are used to seeing some confusion from the developers and the odd strange, wrongly configured computer (by us). But the error in the title of this blog post:
getcwd: cannot access parent directories: No such file or directory
had me scratching my head for quite some time. Until I realized that the error message states what was wrong.Read on ...
In the </salt> accelerated learning program we emphasizes learning in groups throughout the entire boot camp. We do this through the use of mob programming that is not only a great way to solve problems together but also puts learning front and center. I’ve yet to sit down with any mob and not learn a new thing (I’ve tried 40+ so far.)
But there’s a thing that needs to be in place in order for the learning to be allowed to flow freely; psychological safety. We try to create a psychological safe space through two tools:
Let me, very breifly, expand on how we use this in our training.Read on ...
I work for a developer accelerated career program. I have (together with Jakob Leczinsky) created a training material that takes people with no professional development experience into professional developers in 3 months. We have now run 4 courses and found jobs for about 100 people. All of them have got rave reviews from our clients, top-line software companies in Stockholm.
But how?! This is quite provocative, even for me. I spent 4 years in university (Go DSV!) - surely you can’t learn as much in 3 months.
How can this work? Because it quite obviously does. I have 100 devs telling me so.
I was pondering this as I picked up the book Antifragile by Nicholas Nassim Taleb for a reread. And things clicked. Our method is antifragility applied to training. And we create antifragile developers.Read on ...
How do you get so much done? Where do you find the time?
This is a question that I often get asked and it always catch me off guard. I don’t have a recipe (or do I?) and I don’t think I get more done than others.
But last time when I was asked this question I stopped for awhile and thought to myself - what do I do, and is that something others don’t?
In this particular case I referred to a blog post I’ve written and the question back was:
How do you find the time to write blog posts?
In this blog post I share a couple of my … tricks.Read on ...
Yes, yes … I know. I do way too much Google Sheets for my good. But that tool is SO amazing. It’s becoming my first go-to-tool when it comes to small simple tasks at the office. And it allows us to be more data-driven and visual.
And it’s very easy to build aggregation tools for people around the office. For example; the other day we were wondering what kind of technologies that was hot in different cities in Sweden.
From that question, until I’ve created a simple but powerful tool to scrape data from Indeed.com, presented it with a simple filtering function and got it in the hands of the sales team was 45 minutes.
Let me show you what we did.Read on ...
In my current job, as Head of Quality and Curriculum at </salt>, my thirst for being data-driven is frequently useful. In particular when it comes to test results for the developers in our courses. We test the developers every weekend (for 10/13 weeks) and we have now run 4 courses using the same tests… A gold mine of knowledge if you can mine it.
To help each developer and us, understand how they are doing we produce a diagram that compares their results to the result of their class (ca 30 people) but also compared to all classes (to date 4 x 30 people).
In the end we want to produce charts that looks like these:
But getting there has been quite tricky but oh so rewarding. At the end of this blog post, the whole thing is fully automated and kept updated. I only need to add new scores… and one extra configuration row for a new class.
Let’s go!Read on ...
I’ve just finished a huge project here at work. I have recorded reference recordings of all the lectures in the </salt> bootcamp. It was quite fun, quite exhausting but also quite rewarding as it basically drained me of every system development knowledge I have in me. And some that I didn’t have in me (there’s CSS in there, my friends…)
Obviously, I cannot share the result - but what I can share is what I learned.
I am a fan of embracing uncertainty since I first heard Dan North all those years ago. Most of the work I do is development hence naturally uncertain, as learning is the main constraint. This has led me to ditch the idea of being able to estimate how long a task or project will take before we start.
But still I and teams I’ve coached are often asked this. Before the project starts?! When I know absolutely the least about what we are going to do. What a crazy time to ask for estimates.
Ok - this has led me to seek other ways of making predictions and prognosis, without me having to estimate (aka guess).
This particular project was a bit different and hence perfect to make a point about uncertainty with:
But still, the uncertainty bit me and it was bigger than I (we) thought, took longer in some regards and shorter in others and in general revealed a lot about things we didn’t really think about.
In this post, I wanted to share how I tracked the data and lessons I learned from it.Read on ...
I’m about to run a few retrospectives with a group of people with little to no experience of agile previously. In doing my preparations I went back to the core and start of retrospectives, why we do them, their purpose and meaning, etc.
Before long I stumble onto something that I have had some issues with; the Retrospective Prime Directive. But as I read it and was thinking about how to introduce the whole concept to retrospectives to my friends I realize that without the Retrospective Prime directive being agreed on - retrospectives are not worth the time. Or at least not interesting in the long run.
Let me explain what I mean.Read on ...
No - this post will not be about Christianity per se. You don’t have to worry.
That said I am a Christian and proud member of the Salvation Army and I wanted to share something I observed during two (actually) spiritual days. Something that I think is sorely missing in business today. Something crucial.
I’m not talking about God now - although he’s often out of the picture too :)Read on ...
Having an (any) work in process (WIP) limit to your workload is the best way I know to improve speed, quality and focus on value in what we do. This goes for individuals, teams and whole organizations alike.
As you apply a limit of how many things you will work on at the same time, you very soon will start to prioritize among your work. (Psst - I’ll let you in on a secret: if you don’t have limit you still prioritise, because at any one given time you are only working on a thing … but that is a topic for another post)
Being nudged to do this prioritization is a Good Thing (TM) if you let it. It starts moving you towards knowing WHY you are doing something NOW and away from ensuring that you are kept busy (or keeping people busy)
Ok but inevitable very soon we enter into the land of prioritization, and before long you will hear the laments;
Prioritizing is hard
Who does the prioritization here?
We need to get better in prioritizing, that is the only problem we have really?
I think there’s a misconception at the core of what prioritizing means (or at least how it is used). In this post, I wanted to clarify one distinction
Read on ...
Prioritization and sequencing are not the same thing
In my current job (School of Applied Technology) we give out weekend tests each weekend of the 10 first week of each course. With 30 developers in each class, it means that on Monday after each weekend we have a lot of work to do to correct the developer’s tests.
We have basic validation through a suite of tests that we run against the developers’ code. And we run linting. The real value, however, comes from comments and suggestions for improvements that we could give to the developer.
To speed the tedious part of the work up we have created a script that helps us:
test.jsfile and quite often different scripts and dependencies to be installed for it to run well. We just want to replace the developers’ code when running the tests against the test suite.
It took some time but now we have a nice script that makes this a one-command exercise. And in the process, we learned a lot. I wanted to share this with you.Read on ...