TL; DR:
Retrospectives drive team improvements
Use retros for personal growth
Goals I achieved AND missed
No livestream! I’m on vacation!
What’s In This Issue
Exclusive Article: How To Reflect – My Mid-Year Retrospective
In Case You Missed It…
Guest Post on Tech World With Milan Newsletter
I was very fortunate to be a guest author on Dr Milan Milanovic’s most recent newsletter. In this issue, I discussed my background going from startup world into Big Tech at Microsoft, how I approach managing software engineering teams, and my experiences within Substrate at Microsoft.
I hope that you get a chance to read through it and find the experiences valuable! Make sure to check it out, and if you’re not already following
on social media — you absolutely should. He’s one of the top tech creators in the world!JetBrains dotUltimate Giveaway
Friendly reminder that if you’re a dotnet developer you can enter to win dotUltimate for one year FREE! No, there’s no tricks here. I’ve given away 5 dotUltimate licences already this year and you could be the very next winner.
Make sure you check out this page to see how you can submit entries to win! These giveaways are 100% sponsored by JetBrains and I’m grateful for the opportunity!
Podcasts are LIVE!
Based on your feedback from LinkedIn, I have made my software engineering interview videos available on Podcast platforms! I’m currently battling with Apple to allow my account creation, but you can check them out on Spotify for now! Listen to them on your drive to work or on your walks!
Exclusive Article: How To Reflect – My Mid-Year Retrospective
What Is Retrospection?
You may have heard of retrospectives before if you do some forms of “Agile” software development, but maybe the concept is new for you. Regardless, I am a huge fan of doing them. And no, not just for software development teams but also as an individual. Let me explain.
Retrospection is the act of thinking back over a period of time and reflecting critically on how things went. It allows us to explore things that were working well, not so well, and everything in between.
Did you hit your goals? Did you fall short? Did you knock them out of the park?
We can use this reflection period to think about how we can drive improvements going forward — and that’s why I love them. I don’t like saying “Agile” software development anymore because it feels like the word has lost all meaning with many audiences. Instead, I like to say:
Continuous Improvement.
And I believe continuous improvement is not only critical for a team’s success, but for our own. So let’s dive into it.
Retrospection on Teams
I worked at startups for years before Microsoft — and most of my time was spent in “Agile” environments. But seriously, truly agile and not just a shiny sticker we’d label ourselves with. This meant that retrospectives were a big part of what we did.
I’d like to provide you some actionable advice without necessarily prescribing how retrospection needs to look. In fact, the entire point is if I give you some ideas then you can try them out, retrospect, and then adjust as needed!
ACTION: Set a cadence for how frequently you should do a retrospective with the team
A cadence is important because it will allow you to timebox your period of reflection. Too frequent might not give you enough time to observe changes. Too infrequent and you might be down a sub-optimal path for too long. If you already do sprints, consider aligning to that as a starting point and see if that feels good on the team. That can be a retro topic on its own!
ACTION: Run experiments on the team
Part of trying to drive improvements within a team means trying things out. And no, not everything you try will work well. Try different things out and treat them as experiments. How will you know if they’ve improved things on the team? Talk about it over the next set of retrospectives and see if you need to make adjustments.
ACTION: Agree on a format to set expectations in the retrospective
On teams, people communicate different ways. You may want to find a way that individuals can submit topics for the retrospective ahead of time so they can get their thoughts down. Consider some starting points like using the classic post-it note system to jot down ideas.
Organize them into themese for discussion. One of my favorites is “Like, Wish, Wonder” which is similar to “Start, Stop, Continue” but with a slightly different framing. Should you start trying something new? Stop something that isn’t working so well? Or maybe continue doing that new thing your team tried our because it’s definitely going well!
Set expectations but keep in mind the process itself should evolve over time if it needs to.
ACTION: Embrace passionate debates — you’re all in this together!
People often avoid conflict and uncomfortable situations, but some of the best growth I’ve experienced within teams occurred when we had difficult discussions together. You could feel the temperature in the room increase (when we were in office). You could hear the passion when people expressed their ideas. These conversations were sometimes very difficult, but we always worked together to drive towards improvements on our teams. Respect each other, actively listen, and embrace different perspectives.
Retrospection for Individual Growth
Retrospection doesn’t just have to happen on teams! Sure, as a software engineering manager retrospection and driving team improvements are one of the things that I really care about — but it applies just as well to individuals.
ACTION: Set a time horizon that you want to reflect back on — maybe multiple!
Just like with a software engineering team, you can set the interval you want to try out. There are benefits to reflecting on things weekly, bi-weekly, monthly, and beyond — but you’ll need to take the time to explore these. And you’re not limited to just one! Maybe you focus on different things at different cadences! Which brings us to our next action…
ACTION: Set clear goals with timelines that you can reflect on
You may have goals that span hours, days, weeks, or even months — so this is why the previous point about your retrospection cadence is important to consider. Set goals that you may want to accomplish, which could include things like:
Graduate from bootcamp / finish a semester of college
Build an application that does X in programming language Y in two weeks
Complete a refactoring / rewrite on project A by the end of the week
Get through 3 hours of video tutorials this weekend
Practice LeetCode for interviews 1 hour every week night over the next month as you’re interviewing
Notice how each of these could have different timelines!
ACTION: Experiment with things you want to try to drive results
Just like with teams, we can do experiments for our own growth. The shorter the time horizon for the experiment the quicker you can tune it, but the longer you run the experiment the better your data collection may be. There’s no right answer, and you can reflect on this process itself each time you retrospect.
My Mid-Year Retrospective
I set goals for myself at the beginning of 2024 based on all of my tech content creation in 2023. This might not be applicable at all to you, but this is one major checkpoint for me in the year that I wanted to reflect on. I figured I’d highlight how and why I set goals and what I’ll be considering for adjustments going forward.
Reach 5,000 YouTube Subscribers: I was able to get to 5747 as of writing this, so I overshot my goal by a little bit. I had projected based on weekly growth where I could get to and early on in the year realized I might need to make even more content every week to drive that number up. So my mini-retros earlier in the year allowed me to consider interviews and live streams.
Next Goal: 10,000 YouTube subscribers by 2025. I won’t achieve this if growth is linear and because I don’t have capacity to create MORE videos — I need to make better videos. I largely attribute this to YouTube thumbnail and title focus (which is harder than most people realize). I have also discussed video interviews with several of the world’s most influential dotnet figures and I am SO excited to see these become reality!Reach 15,000 Newsletter Subscribers: I was VERY short of this goal. In fact, I didn’t even get halfway there. I spent a lot more time networking with other creators so far in 2024 which was EXTREMELY valuable overall, but I figured that might be something that drove more newsletter subscribers. That “experiment” didn’t work well for newsletter subscribers but I have formed much better relationships and had other amazing collaborations as a result. Definitely continuing this, but acknowledging it didin’t play a big role in this specifically.
Next Goal: 12,000 newsletter subscribers by 2025. I’d like to try and roughly double my current subscriber base, but it’s going to take some dramatic rethinking. I’ve tried changing my format to include more actioable advice (hopefully you’ve noticed) but I don’t want to compromise on shrinking my newsletter reads to only a couple minutes. Too many other newsletters are “just a 2 minute read every weekend to make you infinitely better at software engineering” and I’m not that. I’ll be considering more collaborative articles as well as seeing if I can discuss my articles on Reddit — where many people get a mix of flaming but also new subs.Reach 15,000 LinkedIn Followers: I was pretty close on this one! At the time of writing, I am just shy of 14,300 which is pretty cool. I wrote in a previous newsletter that over first half of this year dynamics on LinkedIn seemed to change a lot favoring things like memes, jokes, selfies, and what seems more like traditional Facebook style content. I have nothing against this, but it’s not really what I like to focus on for my own LinkedIn content. Mini-retros up until this point have let me experiment with posts like this since I have personally seen on other platforms it works well using BrandGhost.
Next Goal: 25,000 LinkedIn followers by 2025. I’ll be leaning more into BrandGhost to keep my posting schedule up so that I can invest more time into writing better hooks for my content.Deliver 2 Courses: Objective reached! This was a great goal because I was able to work hard through it and just barely avoid feeling overwhelmed. Any more and I would have burnt out — and it gave me a nice break before starting my next ones!
Next Goal: 3 more courses by 2025. I am currently working on my fourth Dometrain course and have two other courses planned as well. The plan is in place, I just need to keep focused.
What are your goals for the rest of this year?!
Join me and other software engineers in the private Discord community!
All of my weekly vlogs are now on YouTube which are accessible via membership!
Remember to check out my courses, including this awesome discounted bundle for C# developers:
Weekly Recap
Made EASY – WPF Dependency Injection with IServiceCollection
Dependency injection is a core part of any modern C# application — and WPF apps are no different!
In this video, I’ll walk you through how we can transform a simple WPF application to take advantage of dependency injection using IServiceCollection.
And you know that fun MVVM pattern that gets used heavily with WPF?
Rest assured! We can inject our View Models into our Views with IServiceCollection and clean things up nicely!
Actionable Code Review Culture Tips – Principal Software Engineering Manager AMA
This was an AMA live stream where I discussed my previous newsletter article. Make sure to tune in every Monday at 9:30 PM PST to catch the live stream where I share my experiences and perspective on different software engineering topics!
How To Build Modular WPF Applications With a Plugin Architecture
WPF is a powerful user interface framework for CSharp, but I hate some of it.
Is hate too strong of a word? Probably.
But in the many years I spent building desktop applications in WPF, I found that I would be fighting against a lot of the framework to make things happen.
However, two things that I don’t compromise on are:
– Dependency Injection
– Plugins
So we’re going to see how we can build a plugin-based WPF application and set you on course for using a plugin architecture in CSharp!
Live Coding C# & WPF – Principal Eng Manager at Microsoft
This was a live-coding session focused on WPF development! Make sure you’re subscribed on social media so you can be notified when I go live to walk through code.
Your Career Will Mean NOTHING Without This… – Interview With William Ray
I had the pleasure to sit down with William Ray and hear about his career journey so far.
It’s not what you’d expect.
And that’s what makes it so great to hear about — because there are so many different avenues to getting into software engineering.
Will shares with us his struggles before finding success in healthcare and how that was something that eventually wasn’t aligned with his passion. The result is that he needed to pivot and stumbling upon coding is what changed his life once again.
Thanks for the conversation, Will!
In UNDER 10 Minutes – WPF Binding Made Easy!
Data binding is an extremely popular concept that we leverage when building WPF applications. Gone are the days of code-behind and hardcoding stuff in the UI! Well — for now. We can use the MVVM pattern and leverage data-binding to our Data Context on WPF controls in order to map properties to some state. In this tutorial, I’ll show you the very basics to kick things off… and we can build on it from there!
As always, thanks so much for your support! I hope you enjoyed this issue, and I’ll see you next week.
Nick “Dev Leader” Cosentino
social@devleader.ca
Socials:
– Blog
– Dev Leader YouTube
– Follow on LinkedIn
– Dev Leader Instagram