Surprise, surprise! 🎉 Here I am, popping into your inbox just a week after our last rendezvous. Remember how this newsletter is advertised as a monthly edition, and then you didn’t hear from me for almost 6 months? Well, plot twist: I'm back with a weekly special!
Why the sudden change, you ask? I've taken a leap and joined The Newsletter Launchpad. I’m taking the course to hold myself more accountable for writing newsletters and become better at writing them since I enjoy the conversations they have sparked before. The catch? My homework is to send you weekly updates. So, brace yourselves for some regular doses of our newsletter adventures.
I was a bit worried about what I would write about since I don’t go on an adventure every week. But when I looked back over my notes for this year (it is December after all). I noticed I had written around 222 notes in Obsidian, read 12 books and listened to 1,620 hours of podcasts this year. So I’ll take this opportunity to share some of my favourite knowledge nuggets over the coming editions. My very own “Robin Wrapped” as you will.
Designing Your Factory as a Freelance IT Consultant
I’m currently reading “Elon Musk” by Walter Isaacson. I haven’t yet finished it but it’s an interesting read. Even if you’ve read the previous book by Ashlee Vance. I recommend reading this one, it’s almost double the size and goes a bit more in-depth into the different companies he started. And it’s also a bit more updated since the latter was written in 2015 and this one was released in September 2023.
One of my favourite snippets so far is the following snippet which talks about the unfair advantage Antonio J. Gracias had because he was able to speak Spanish, the same language as the factory workers, so he could listen to the ideas of the workers in making the factory more efficient.
"It's not the product that leads to success, It's the ability to make the product efficiently. It's about building the machine that builds the machine. In other words, how do you design the factory."
This got me thinking about my work as an IT consultant. How can I make my “factory” more efficient?
As a software agency, I think it’s a bit easier to define. If you specialise in for example Shopify Webshops, you can document and streamline your processes. You can define common building blocks that you can reuse in future projects. But how do you do this as an IT consultant where you keep working on the same project?
If we keep with the factory analogy, you have raw materials entering the factory, your manufacturing process and the finished products leaving the factory.
Raw Materials
As a knowledge worker, your raw materials are... well your knowledge. This could come from domain knowledge in a certain field, past projects and experience, to your ability to fill in the gaps.
For me, this comes in managing your own knowledge and being able to retrieve this at the right time. I like to take a lot of notes, previously I did this in Notion but I had a problem with retrieving buried notes.
After reading "Building a Second Brain" by Tiago Forte, I moved to ObsidianMD and implemented the Second Brain methodology to structure my notes. Linking my notes to each other and having the graph view to see clusters of notes helps me personally to keep an overview and make even more links between ideas and concepts.
I also think that Generative AI will play a big role in the retrieval. Training a model on your knowledge base might help you to be more efficient in information retrieval. My only problem here is that some notes are more polished than others, so from a data quality perspective it might not be the best idea to dump all your notes in a model. But from another perspective, it could be a way of identifying knowledge gaps.
The Manufacturing Process
As a software engineer, my main means of production is writing code, and a lot of tooling has already been built around making this process more efficient.
We have boilerplates and best practices to define our code and make it easier to collaborate.
We have CI/CD (continuous integration and continuous delivery) pipelines to streamline testing our code for bugs and deploying it. Ensuring better code quality and reliability since code that isn't up to standard won't be deployed.
With the recent improvements on the AI front, we even have tools like Github Co-Pilot that help us write and understand code.
But I still feel there is room for improvement. As I mentioned earlier, our work isn't very repetitive, which makes automation challenging. There's also a need for better tools for client communication. Generative AI could help with refining requirements for clients generating clear to-do’s for the developer. In the opposite direction, it could look over the work that was done between now and the latest status update and report back to clients or users, it could even inform you that it has been X days since your last report. Last but not least, a tool that can understand and write documentation could be very beneficial, especially if it can understand changes that were made to the application and automatically mark or update outdated documentation.
There is also a lot of context switching. If a bug suddenly pops up, you'll probably spend quite some time indicating what is going wrong (most of the time by combing through the logs or trying to replicate it). Afterwards, you dive into the code to see what is causing it, maybe coming through the documentation to see what the original requirements were. And then you fix it.
A cool AI tool I played around with over the weekend that tackles this above issue is GeniA. When an issue pops up the tool can already gather information from different sources like your application logs and your AWS infrastructure. It then uses generative AI on that information to propose fixes or give more context when something goes wrong. This limits context switching and saves you investigation time.
The Finished Product
Software engineering is an iterative process. We keep iterating over our finished product as part of our manufacturing process so this section breaks the factory analogy a bit.
Still, I think as a developer we have 2 forms of finished products:
The software itself, that still needs to be maintained. There are already some tools here like dependabot that informs us when we need to update dependencies.
Documentation for the client. Some kind of user manual that needs to be written. I'd personally would like to play with a little AI chatbot that clients could use as a first-line support for the software, instead of having to help them yourself.
Wrapping up
As you can see, my factory doesn't run at peak efficiency yet. And it's probably a topic I will have to keep iterating on as new tools come out and my own requirements change.
What factories are you trying to streamline? What are your favourite efficiency hacks? I'd love to hear about it!
Until next week!