Full Spectrum Assorted Content – Dev Leader Weekly Issue 11

Hey there!

Welcome to ​Dev Leader​ Weekly, your dose of software engineering and C# goodness!

Friendly reminder: Courses *are* coming. By being subscribed here, you’ll know about them early and get a chance to hear more before I publish information about them more widely. Thanks for your support!


Thought-Provoking Quote of the Week:

Every week a little bit of insight from someone! Whether it’s me or something else I’ve come across to share with you, I hope you find it insightful:

“In software, we rarely have meaningful requirements. Even if we do, the only measure of success that matters is whether our solution solves the customer’s shifting idea of what their problem is.”

Jeff Atwood

This one is for all of you who love putting endless amounts of time into planning 😉

The reality is, that in nearly all software projects, requirements are somewhere between ambiguous and not fully complete at the start. There’s not a single reason for this either. Maybe it’s a new problem domain to figure out. Maybe the stakeholders are still trying to figure out the right direction to head in. Maybe users, potential clients, and/or the entire market is still navigating things (think about the absolute wave of AI-related things hitting the market over the past year).

But let’s pretend together for a second. Say we could legitimately manage to take a snapshot right at the start of a project and have perfect requirements based on all the things known to us. And then boom, the next day a customer shifts perspectives on what they actually want. Something takes a turn in the global landscape. Whatever it is, you can’t stop external factors from existing (and you’d be unwise to totally ignore them).

But that’s where this quote comes in. Accept that in the start it ain’t gonna be perfect, and your success is actually measured by delivering value to the customer in the end. It’s most certainly not going to look linear most of the time, so plan to adapt. I hate using the word “agile” because it’s so overused now and carries so much context with it that I might as well just toss it in the garbage.

Be nimble and adapt to changing requirements. There, much better.


Featured Content:

​The Most UNEXPECTED People Can Be The BEST Partners – Software Engineering

YouTube player

In software engineering, we talk about code an awful lot. But this video dives into something extremely important in the workplace if you’re in an organization with multiple teams. Team alignment is critical for a business to move forward and make progress. Here’s how I helped to transform a relationship between my team and another.

Software Engineers – Your Job Isn’t What You Think It Is!

YouTube player

A lot of people have a hard time getting behind this… But I think it’s either because they’re too junior to get it, or they can’t seem to extract the meta point. Engineering work is about problem solving analysis. As software engineers, the software is the domain we’re in, but code itself isn’t what makes a business successful. Code is just one of the tools we use (albeit frequently) to solve problems.

4 BEST Tips For How To Learn Coding For Beginners

YouTube player

I have a lot of beginners who watch my channel and consume my content, so I try to make sure everyone feels like they have support! This video focuses on the 4 tips I guide nearly every single person asking about getting started in programming through.

ASP.NET Core for Beginners – What You Need To Get Started

ASP.NET Core for Beginners - What You Need To Get Started

This article is for beginners that want to get up and running with ASP.NET core! Yes, you! Beginner programmer! You can start making websites and web servers with ASP.NET!

Master One Language or Diversify – A Guide For New Developers

How Many Languages Should I Learn At Once - Beginner's Guide

This is something I see beginners trying to navigate… Nobody wants to pick the “wrong” first language, so they spend a lot of time trying to pick the “right” one. And then, they get nervous they should go learn a bunch at once to be safe. How you approach this may also change as your career evolves.

Blazor RenderFragment – How To Use Plugins To Generate HTML

This article is related to the content I was creating around using plugins in Blazor. If you haven’t read or watched any of that yet, this is a great place to start!

Workplace Based Learning – How To Balance Learning At Work VS Home

Workplace Based Learning - How To Balance Learning At Work VS Home

Trying to figure out the best way to learn about different techs or even the domain you’re currently in? Beginners may approach this differently than more experienced folks later in their careers. This article touches on both sides!

The Facade Pattern: A Simplified Beginner Guide

The Facade Pattern - A Simplified Beginner Guide

Design patterns are helpful for giving you guidance around code that’s got a similar goal or structure. While I don’t think every single design pattern makes sense to follow religiously in every scenario, they can help! The facade pattern is probably one of my favorites.

The Builder Pattern: What It Is And How To Use It Effectively

The Builder Pattern - What It Is And How To Use It Effectively

Another design pattern! The builder pattern isn’t something I code myself a lot, but I love consuming code that exposes APIs with it. This often gives us a “fluent” syntax that makes the code much more understandable.


C# Snippet of the Week:

// Using interpolated strings
// with string handlers in C# 10
double price = 1234.567;
string formatted = $"The price is: {price:N2}";
​
// Outputs: The price is: 1,234.57
Console.WriteLine(formatted);

Now, we’ve had string interpolation (the curly braces to reference a variable and the dollar sign out the front of the string) for a long time now. But… string handlers are totally neat. I didn’t even know about these until recently!

Of course, Microsoft Learn has excellent documentation on this. Essentially, we can write our OWN string interpolation handlers now!

This is one of those things I’ve never had a need for but because it’s so cool, I am trying to think something up. I’ll be sure to make a video if I get a good idea!


Insightful Tip:

Pre-rendering in Blazor: When developing Blazor WebAssembly apps, consider using pre-rendering to boost your application’s initial load time. By pre-rendering, you can serve a rendered HTML of your Blazor components from the server, which means your users can see the page before the WebAssembly and the rest of the app has been fully loaded. This offers a significant improvement in perceived performance, especially for content-rich apps.

How many of you are taking advantage of developing in Blazor? For me, mealcoach.io has an entirely ASP.NET core backend but we created the frontend in React. Admittedly, when I first heard of Blazor I just thought it was another random tech/framework floating around… But the more I have been using Blazor (especially for content creation topics), the more I love it.

I am a C# developer at heart. Any time I use other languages they just don’t seem to click like C# does for me. When I use Blazor, even for some of the front-end web-y kind of stuff, it feels good. I plan to spend a lot more time on it!


Learning Resource of the Week:

Getting Started: Clean Architecture in .NET

Freshly released on Dometrain, you can check out this new course by Amichai Mantinband. Amichai is also a fellow Microsofty! I actually had the pleasure of speaking with Nick Chapsas (the creator of Dometrain and a pretty big C# YouTuber, but you already knew that) and he spoke very highly of Amichai.

If you’re past the stages in your programming journey of learning the basics of how to actually write code, getting a taste for software architecture can be very handy! As soon as you’re going down the path of building projects and figuring out which frameworks to pick, how to organize code, which tech to integrate with… Architecture starts to play a very important role.

Now, in the beginning… you’re probably going to get it wrong. Heck, I’ve been programming for ages now and I still get it wrong. But you know what’s cool about software engineering? We can refactor and adjust and reshape our code as we learn and grow. So investing time into understanding different architectural patterns can help you avoid needing large refactors, but also helps you do those large refactors if you need to!


Community Spotlight:

John Crickett

This week I just wanted to give a shout-out to John Crickett. He’s always posting and commenting on insightful software engineering topics and perspectives. While I only personally interact with John on LinkedIn, I always find what he’s posting and discussing to be refreshing and insightful.

John is known for posting coding challenges that folks can work through. He’s got his own newsletter for this, so you can absolutely go check that out too!


Solution to Last Week’s Coding Challenge:

Did you try out last week’s coding challenge? Yet another LeetCode style problem! As much as I don’t encourage the overuse of practicing LeetCode problems, this one felt like it might be great for beginners to think through! You can find a working solution here that can be run right in the browser.


This Week’s Coding Challenge:

Implement a Basic Calculator in C#: Your challenge this week is to create a simple calculator that supports addition, subtraction, multiplication, and division. The calculator should handle invalid inputs gracefully and allow for continuous operations until the user decides to exit.

public class BasicCalculator
{
// Your implementation here
}

Guidelines:

  1. Consider using a switch statement or a dictionary to map operations.
  2. Ensure the division operation checks for a divisor of zero.

Did you know I did a livestream on something like this much earlier in the year?


Final Thoughts:

That’s it for this week’s edition of Dev Leader Weekly! I hope you found something valuable in our short time together. Remember, consistency is key to success in software engineering, so keep learning, keep coding, and never stop improving.

If you have any questions or topics you’d like me to cover, feel free to reply to this email or reach out to me on social media. I strive for all of my content to be as focused on topics that YOU want to hear. My goal is to help you become a better software engineer, and that means addressing your curiosities and questions.

Until next time, happy coding!

Nick “Dev Leader” Cosentino
[email protected]

Socials:
Blog
Dev Leader YouTube
Follow on LinkedIn
Dev Leader Instagram

P.S. If you enjoyed this newsletter, consider sharing it with your fellow developers. Let’s grow our community together!

author avatar
Nick Cosentino Principal Software Engineering Manager
Principal Software Engineering Manager at Microsoft. Views are my own.