The Modern .NET Show

Episode 97 - Developer Productivity with Dan Clarke

Sponsors

Support for this episode of The Modern .NET Show comes from the following sponsors. Please take a moment to learn more about their products and services:

Please also see the full sponsor message(s) in the episode transcription for more details of their products and services, and offers exclusive to listeners of The Modern .NET Show.

Thank you to the sponsors for supporting the show.

Embedded Player

Episode 97 - Developer Productivity with Dan Clarke
The .NET Core Podcast

Episode 97 - Developer Productivity with Dan Clarke

Supporting The Show

If this episode was interesting or useful to you, please consider supporting the show with one of the above options.

Episode Transcription

Hello everyone and welcome to THE .NET Core Podcast. An award-winning podcast where we reach into the core of the .NET technology stack and, with the help of the .NET community, present you with the information that you need in order to grok the many moving parts of one of the biggest cross-platform, multi-application frameworks on the planet.

I am your host, Jamie “GaProgMan” Taylor. In this episode, I talked with Dan Clarke about developer productivity. As with the previous episode of the show - episode 96 with Felienne Hermans - this episode is a slight departure from the usual subject. Productivity, knowledge sharing, and learning are just some of the topics that Dan is very passionate about, and he wanted to share some of his knowledge and experience with us all.

So let’s sit back, open up a terminal, type in dotnet new podcast and let the show begin.

The following is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Jamie

So, Dan, thank you ever so much for joining me on the show today. It’s great to be connected with you.

Dan

Hey, Jamie, thanks for having me on the show. It’s kind of weird being on the other side of the fence. My first time on someone else’s podcast, which is quite exciting.

Yeah, it is. It was exciting for me. I can’t say how exciting is for you. But it’s definitely exciting for me. I actually started this in your position. So I was actually interviewed by a bunch of people, I was like, “this is easy! Just buy a microphone and get someone else to do it all!” Yeah, that that’s not how it works.

I find it kind of scary losing the power of editing, but then also kind of liberating at the same time. You know, we’re talking a lot about editing before we hit the record button. But yeah, it’s kind of it’s quite time consuming, too.

Jamie

Yeah, it struck me the other day that my editor has something like 400 500 hours of my voice. So if he wants to use something like descript, he can just throw all of that in there, and just have it produce a whole bunch of sentences. And for those who don’t know, descript is an app, I believe, by Adobe, you can give it some audio, and it gives you a visual transcription and you can chop and change it, you can move the words around, and it will use - here come the bunny quotes - “artificial intelligence” to figure out what you would have sounded like if you would have actually said that, because you’ve given all the training day, right. And so it then figures out what he would have sounded like, and so he’s got this scary to me that my editor has 400 hours plus of me saying all sorts of things.

Dan

So he’s gonna start his own podcast, of you?

Jamie

Yes. Oh, what an idea for a sho! Like a meta podcast. Like a podcast about podcasting by podcasters?

Dan

Well, that can be your hundredth episode you were just talking about before.

Jamie

Yeah, right.

But the key thing being that they’re saying things they never said it’s like a deep fake, but not. It’s very scary.

Dan

I was actually listening to a podcast episode by the person that created [descript]. And he was saying that you can’t fake someone else’s voice. I don’t know. Maybe your editor could I don’t know, because he has the keys to the kingdom to your account. I’m not sure.

Jamie

That’s it. I think it’s all to do with the training data. So because it’s got 400 plus hours of my voice, then their model will know what I sound like. So that’s really scary. Anyway, let’s not worry about that, because we’re not here to talk about scary stuff.

This is going to be another episode where we don’t talk specifically about .NET - bit of a departure. But I think it’s something that is an important topic. I mean, youll have all seen it when you hit download, you know what we’re going to talk about. But yeah, I thought it would be a good idea to have a chat about productivity and stuff like that, because I feel like it fits well with - as long as these go out in the right order - it fits well with the previous episode, which is like learning how we learn, and sort of studying, and retaining information. But also producing code in a way that other people can read and deeply sort of understand it really well without having to put too much of a mental effort into it.

But I guess before we get to any of that, Dan, I was wondering would you mind introducing yourself to everyone?

Dan

Yeah, of course. So I’m a independent software developer working through my own company, Everstack. And I’ve been developing commercially for about 25 years. The first half was in the games industry doing C and C++. And that was mainly working on games engine stuff. So like graphics, audio, tooling, and that kind of thing. And then the second half has been more focused on .NET. So both desktop and web development. And these past few years, quite a bit of Azure stuff too. And I also do quite a bit of mentoring and consulting. So I know we were talking about the whole consulting thing earlier. And but fortunately, I still get to code every day, which is nice. And then out of work. I’m married with two amazing, but way too energetic boys. And that’s me pretty much.

Jamie

Awesome. Awesome. Yeah. If I had to stop coding for the rest of my life, I’d be rather upset at this point. There’s a weird, I try to explain it to people and they don’t quite get it. The only thing I can really come up with is is similar to like an artist: if you give a painter a blank canvas and every single paint that they could ever use, they’ll find a joy in painting something, right. They’ve gone from a blank canvas to something maybe it’s some scenery, maybe it’s a portrait of someone, maybe it’s something more abstract. Whatever it is, they find a joy in creating that thing. And I find a joy from going from, “I have literally, there is no file, there is no folder. There is nothing. It doesn’t exist,” to “I’ve been sitting here for several hours. And guess what, I’ve got a whole system running and they’re like, there’s bits flying everywhere. And you know, this could bring someone either some entertainment, some joy; could make some money for someone, or I could just talk about how I’ve built it and it can teach other people how to build the stuff right.”

And I feel like it’s a little different from - because some people talk about it similar to like woodworking or metallurgy. But I feel like with those, you already have something and you’re reducing from one set of things and adding to another. So if you’re woodworking, you’re going to be cutting, and lathing, and sawing, and planing, and taking stuff away, and then doing that other bits, and then putting those results in bits together. So you’ve reduced something, then combined something. Whereas with coding, you’re literally starting with, it’s a bunch of electrons, you’re starting from the barest possible collection of something and glueing them together, right. You creating something completely new that at the same time doesn’t really exist, either. It’s all crazy.

Dan

Yeah, I guess. And also, on the flip side of that, you’re also building on top of other people’s abstractions, which so I guess you probably not started, you’re not starting at nothingness. But, and this is something we can talk about actually leveraging stuff other people have done, like tooling libraries, and not reinventing everything in the wheel. But one thing I could tell when you were talking then, is the passion you have for software development. And that is so important, I think mindset is something which should definitely cover. Because when you’re learning something, if you’re not interested in it, then you’re not going to remember it. But if you’re passionate about it, you want to learn it, you need to add emotion to learning. And that’s how you remember stuff. It’s so important. And surprisingly, it’s something that you can actually choose to be passionate about something, it’s not you’re not - it’s weird how you can change your mindset quite easily.

Jamie

Yeah, it is. The mindset and passion are so important, like you said, because if you’re not, like actively involved in it, if you aren’t feeling the emotions of maybe the joy, the wonder the whatever, then you aren’t going to remember, and it’s also going to be difficult for you to learn. Because when you learn something, like, think back to when you had some of the best news of your life, right? You felt a certain way, when you remember that situation. And when you remember that news that you were given, you feel those emotions. And so if you also - and I don’t wish to stress upon this for anyone listening, or for yourself or whatever - think back to a time when you were told something, and it was really upsetting news, you still feel those emotions. And it works with news with knowledge with any kind of experience. And so if you’re attacking something, let’s say, I don’t know, let’s say you’re working on a legacy code base that uses jQuery, you’ve never touched jQuery before. And you don’t understand why it exists. And you’re like, “can’t we just use, you know, Angular, or React or Vue or some other more modern thing?”

You’re coming at it with a bit of anger, or a bit of resentment, a bit of fear a little bit of like the unknown. And unless you can deal with those emotions and put those to one side, you’re going to feel that every time you’re looking at the code base, you can feel that when you’re trying to work on it. And so I feel like you’re absolutely right, you need to have that joy. Because when it gets hard to do, you’ll fall straight into those emotional - I don’t want to say pits because I’m worried that you know, I’m not trying to compare feeling anger and fear for a moment to any kind of long term thing. But you will feel that anger that hurt that potentially embarrassment, you’ll feel those negative emotions. And that may stop you from wanting to continue, right.

Dan

Yeah, I think also some of these negative emotions are very similar to positive emotions. So for example, if you’ve got a big meeting, or you’re doing a talk or whatever it is something you’re nervous about that nervousness and excitement are very similar emotions. So if you, and it’s not actually that hard to say, “this energy I’ve got from my nerves, I’m going to turn into excitement.”

And it’s kind of it just changes the way if it’s a talk that’s presented, but it’s still using that same emotional energy.

Jamie

Oh, absolutely. Yeah, I’ve, I’ve done that myself. And I know that Scott Hanselman has mentioned a few times because he’s very open about the fact that he’s rather diabetic. And he said a few times that he’s tempted to wear a little camera so that you can see what he sees when he gives this talk, or indeed to take his blood sugar levels whilst he’s doing his talk. Because obviously, the whatever energies and whatever emotions you’re feeling will be having a physical effect on you as well. So if you’re feeling nervous, you turn them into nervous energy and you then make it part of your, I guess performance might be the right word. I’m not sure.

That’s gonna take its toll on your energy levels. And he said in the past, “I’ve been tempted 10 minutes, in 20 minutes in, an hour in, just to take my blood sugar just so I could see what it is. Or to tell everyone ‘Hey, look, I’m gonna need to sit down for a moment, maybe have a drink or something?’” I’m not sure what you would do in that situation, because I feel like my blood sugar levels are coming down, or maybe, you know, I’m feeling a little tired, because I’ve been up and excited and jumping around, you know?

So yeah, it’s interesting that I hadn’t even thought about that. Because like, that also fits into your developer productivity, because like, if you’re having to teach someone, even if you’re just sitting next to them, you’re using that same energy, you may be feeling as nervous or angry or upset or resentful. Or, hopefully, you’re not feeling negative things about sitting next to someone, but you know what I mean? Like, you could also be feeling those things do.

Dan

I think also, with the whole negative thing, I think it’s important while we’re on the topic of development, productivity, a lot of the stuff that we’re talking about today might sound like it’s going to introduce extra stress. And we can certainly talk about why you might want to be more productive. But I think it’s important that this increasing your productivity is more about reducing stress, it takes less time to do something, you don’t need to work ridiculous days, like working into the evening, because you can do more in a day and it’s an more relaxed manner.

So for example, if you’ve been, and I think we’ve talked a lot about learning, although I think you said to you, that would be a topic of your previous episode. But as you learn stuff over time, and you know, more stuff, then you get less imposter syndrome. So then that reduces stress. If you get to the end of the day and feel like you’ve accomplished a lot, then you feel you’re less stressed, and you feel less likely that you want to, or you have to work into the evening.

So all of this is about reducing stress, not increasing it. But if you need to produce more by working longer hours, then there’s a limit on like, there’s only so many hours in the day. So it’s kind of like you can’t get that much more productive by working like doing more in a day. But by working smarter, you can do way more.

So I think it’s more about working smarter, being lazy by like doing things like automating what you can. And the more you know, the more you’re going to go in the right direction, in a short amount of time. And it’s just, it’s a combination of lots and lots of different things, which hopefully, we can go through today. And all put together. It’s just less stress. Everything’s calm and relaxed. I think that’s the idea.

Jamie

Yeah, totally. I like something that you’ve mentioned a couple of things there. And there’s one that I’m inferring. But that’s the first one I’m going to bring up. And that’s be kind to yourself, right? It’s so important to be kind to yourself to allow yourself to go, “right okay, I don’t quite get this now. But I will understand it later.” Or indeed, “hey, look at what I’ve achieved, right? This morning. I didn’t know a thing about this. And look what I’ve just built, right?” That sort of reflection, being able to say, “hey, you know, let’s take react, for example, right? This morning, I knew nothing about React. All right, I went through create-react-app. But guess what, that’s how you start to build a React app. And now I’ve got not only a couple of components, but they’re styled. I’ve got a search function. I’m talking to the real API, I’ve got a bunch of tests in place.”

I mean, sometimes it’s enough to just get to, “okay, so I’ve used create-react-app,” because maybe you don’t know how to get started. So you’ve gone to the React tutorials, you’ve ran through create-react-app, right? I get it, I understand the component model. That’s my day, don’t whatever it is that you’ve achieved, accept that you’ve achieved it. It may not match up to what your expectations are, or what your expectations were when you started. But hey, look at what you’ve done, look at what you’ve achieved. And allow that feeling in, allow that positivity and kind to yourself.

Dan

Exactly, I think it’s important that everyone realises there’s no rush. So it’s kind of it’s not like you need to learn all these technologies tomorrow and be super productive tomorrow and everything. It’s just the whole concept of incrementally doing things. So just knowing that if I do a little bit of say, active learning every day, doesn’t have to be a lot. Just that consistency, that cadence doing that little bit every day. How much, if I do that versus if I don’t do that, how much more am I going to know in a year’s time in five years time is just that - what’s the word? Compound learning, that’s the word I was thinking of. So it’s almost like compound interest. Where with compound interest, you’re earning interest on your interest. So you’ve got the snowball effect, with learning by just doing a bit every day. You’re constantly building foundations, and you’ll find that over time, you’ll learn more faster. And you’ll find more complicated things easier because you’ve built that foundation. So it’s just doing this incrementally. There’s no rush. But it’s just having that consistency.

Jamie

Totally. There’s, there’s a phrase that a very smart person once said to me, and that is you can’t build a house on the stand, you need the foundations there. And she was talking specifically about exams and learning. I feel like it fits right.

You will find it harder to leap straight into asynchronous programming in JavaScript, if you haven’t done any programming whatsoever. Like if you if your goal is : “I want to learn asynchronous programming in JavaScript in a specific language in a specific framework.” Going directly to that very specific thing without going, “right, what is JavaScript? How do I make JavaScript? What is a function? What is a variable?” All the way up to building on that prior knowledge. And it might be that you can go to another language and learn what a function is. The the knowledge still applies, right?

Dan

Yeah, definitely. And with this whole learning thing, and this is a topic that I think will probably speak a lot about in this episode is the concept of note taking. And I’m just, I think one takeaway from all of this would be if you’re not an avid note taker, become one because it makes such a big difference. And I think this applies to learning. And it applies to like code snippets, if you - say you’ve done some thing, say you’ve done some OAuth stuff, and you’ve done some login, or whatever it is with the current system, then you need to do it again two years later. Looking back at your sink notes that you wrote in a way that you would understand which you can just quickly remind yourself, or are you having to revisit Google StackOverflow trying to work out all the different bits and bobs, which weren’t obvious. So it’s a lot about like nicking notes, so you can revisit your notes as you’re learning. But also, when you do stuff, not repeating yourself, the next time you have to do it, because you’ve taken notes. So I think note taking is quite an important thing

So everyone learns completely differently. And some people prefer PluralSight courses, some people prefer books. But fundamentally, memory works the same way in that by recalling something you’ve learned, that deepens your memory and helps your brain transfer it to long term memory. And so regardless of how you learn - whether it’s books, videos, podcasts, or anything - by actively recalling, and a good one is doing that, knowing that you’re gonna teach someone else. So when you teach someone else you’re learning it twice. But also note taking. So if you’ve written the notes by writing the notes you’re recalling again, and because you tend to write those notes a lot more succinctly, you’re not duplicating the original content, it’s just things you that you don’t know already that you want to remember, when you revisit that, that’s an act of recalling it again. So just I think note taking has so many different benefits, I found that, for me going into clients and picking up their business, their code base, by just actually taking lots of notes and being quite intentional about it. That just makes such a big difference.

Jamie

Absolutely. And it allows you to, like, slow down your thought process. If you think of the brain as being similar to a computer, everyone has a different operating speed, right? You can only take so much information in. If I’m reading something, and someone’s talking to me, I can’t do both, because - I’m sure my friend Paul Seal’s gonna hate this, but I’m an auditory learner. So my brain switches from, it’s almost like I can’t see, right. My attention goes directly to the sound that’s happening. So if I’m reading and I want to take something in, I know that I have to sit in either silence or sit with, I have a playlist of music that I put on, that just drowns out, it just provides some like background noise. And I’m happy to sort of share the playlist if people are interested, do get in touch. But that helps me to do that.

But I know that because we all have our own operating speed, taking some time to stop and go, “right what did I just learn? What have I just taken in? I’ve taken in loads of information, what is the core nugget that I need?” Like let’s say I’m learning OAuth, right. What’s the core nugget that I need? Right? Well, there are a bunch of well known end points that I need to write. So I need to write well known endpoints. Underline that right because that’s a core concept. I don’t need to write, “OAuth is a security practice for authorising and authenticating users,” because it’s not going to help me to implement it later, right? But I need to write down “well known” because that’s required.

Dan

Yeah, I really like with note taking using indented bullet points, I find that’s just a great way of doing it. So it kind of forces you to be succinct, but then you can nest them to just group things together. And I just find that works really, really well. And then the bullet points I would write are things that I know I want to remember that I need to, I don’t know, intrinsically, anyway, so I need to come back and revisit. And, yeah, just having that in my, I think this is the problem with some, maybe this is a bit of a controversial thing. But if you’re writing notes, within a team, you kind of want to put those notes in some shared wiki or something. And so you should definitely do that. Because like sharing knowledge and everything, but I think should also have your own personal notes, because there’s lots of friction to writing shared notes where multiple people collaborate, because you’re not writing it for yourself. I would, my notes for myself would be written completely differently than when I’m writing documentation on the wiki for the people. Those I can imply lots of knowledge and stuff. So I would say like, obviously, share knowledge, help the team put things on the wiki, but also have your own notes as well, which is your second brain.

Jamie

Yeah, yeah, there’s, there’s, there’s lots to be said about that. And I think that’s, you’re right, it is important to have a separation, because then, you know, you can use your own metaphors, your own knowledge, your own background, and you can say, right, I don’t need to write React is a JavaScript library. And it uses Node in the NPM. system, because I know that, but if I’m writing it for, like you, and I also feel like you should have like a target reader in mind, if you’re making notes that are to be shared, you need to say, right, okay, what can I assume that the person knows, I can assume that they’re a developer, I can assume that they have a computer. And I can assume that they have access to the internet. So if I just say react and put a link to the React website, that might be enough to make them go, Oh, right. Yeah, React is JavaScript, it uses Node and NPM. And it just this on the other end, it just components and all that kind of stuff. Now I go back to the notes and say, right, you know, do I need to do I need to handhold and say, This is how you built, probably. But even if I did, it wouldn’t it wouldn’t reduce from that factory, I could put right to build, do NPM, run build or similar, right, or yarn, run, build or whatever it is. But like in your notes, because you know how to build it, you don’t have to put that, right, because like you say, you’ve already, you’ve already exercised all of that knowledge. And you’ve already gotten that you’ve already gotten that experience. And I find now this is everybody’s going to be different, I find that the stopping and physically writing with a pen and paper is how I do best with with note taking, because I’m having to stop having to convert that knowledge into a mechanical movement of my wrist, or my fingers or whatever, to actually manipulate the pen and leave those notes. But I also I found that I was leaving loads of bits of paper everywhere. good for the environment, not good for my environment. And so I went and bought myself a tablet that I could write on. And it’s one of these ones that it’s like E Ink tablet you write on it stores it in the memory and stuff. So I’ve got one of those. But that may not work for you get get a pen and paper, right? I remember my mom. Just as a side note, right? We’re talking about memory, we’re talking about learning, we’re talking about taking notes. My mom has a terrible time remembering any of our passwords. And so I said, right, I left Australia with like, let’s solve this with technology. Let’s go with a password manager, let’s get you signed up for LastPass. She forgot to use it. So I was like, Okay, let’s take a step back. I will buy you and it might sound funny, but I will buy you a password book. And you can go get them. You can get them on Amazon, you get them wherever you buy your stuff. And it is just literally in a five notebook with the word password on the front. And you write down all usernames and passwords doesn’t sound that secure. But at least then she knows what they are. Right? And she won’t lose her accounts.

Dan

But then you say that doesn’t sound too secure. As if you’re doing that in an office. Lots of people are leaving sticky notes with passwords. That’s not, but my mom does exactly the same. And a hacker in another part of the planet can’t hack their way into that piece of paper.

Yeah, yeah. They need physical access to the piece of paper, right? Yeah, exactly. So

you’ve kind of got MFA a bit kind of ish there.

You need to know where the book is. That’s two factors.

Oh, brilliant. I need to transfer my LastPass over to some paper.

Jamie

All the security experts are screaming at us right

Dan

up in front. But I think it’s difficult because like I think we default to using technology. But it’s like my wife, for example, have been pestering. Every time she forgets a password. She comes over to me and I look in my own past LastPass because I put her password wasn’t because she can’t remember them. And I’ve tried to get to his last pass, but because she’s a non technical person, she just won’t. So I think it’s easy for us to judge when we forget what we know. Because we’ve been doing it for so long. But I think that the average user is going to like, this stuff isn’t easy.

Jamie

Yeah, I think the barrier to entry, right? You and I, as technologists, as developers, as people who feel the joy about being surrounded by these things and making stuff, we don’t mind that in the browser, there’s that we talk about LastPass, right. But it can apply to any other password manager that lives in the browser, LastPass, one password, whatever, we don’t mind that there’s a little like icon in the corner of our window that that has a number on it, that tells us you know, there’s there’s a password for this website that I have access to. So if you need it, I can get to it. Or we know that all you need to do is hover, click Type in your master key password. And it does all for you. You don’t have to worry about but to someone else, that’s a huge leap, compared to I’ll go get my password book, I’ll tell swap to page six. And there it is, that barrier to entry is is ridiculously low. But it also like, it’s so easy to fall into that. And that’s, that’s why I love it. That’s why I suggested it to my mom, because I was like I just write them down. I don’t care that they’re all the you know that a bunch of them are all the same. I don’t care, right? They’re your passwords, that’s your job to look after them. Put them in a book, but the minute drawer, keep the door closed, only go to that drawer when you need it. This is listeners don’t break into my mom’s house. But you know what I mean, like that, that barrier to entry of remembering where it is, is like, it will likely go in a drawer with all of the other notebooks that she’s got for all the things she needs to remember. So then she just thinks, oh, what’s my password? You know, I can’t remember, open the drawer there it is, like that barrier to entry is, is so low that she can’t not do it.

Dan

Yeah, I think with the barrier to entry thing as well. It’s not just non developers, it’s important to remember that developers have a wide range of knowledge. And we kind of probably forget, we’ve both been developing for a very long time. So just naturally a different experience. But then I think we actively learn quite a lot. So in teams, you’ve got you’ve got Junior programmers, people less experienced, I think it’s also important to remember the same concepts that not everyone has the same experience. And just be kind to each other is like just don’t don’t, if someone doesn’t have the same background as you, that doesn’t mean that you can like get stressed at them and start telling them off or anything, and help them help them get better. And and just be kind to people. I think that’s so important.

Jamie

Yeah, I always like, if I if I’ve assumed a certain amount of knowledge, and I’m trying to help someone, I don’t end it. For those who know about who know about the topic that we’re talking about, they will probably find it offensive. But I say, Hey, are you aware of this thing? Right? Let’s say I’m trying to help someone with some C#, right? We’re talking to the database. We’ve pulled some data out, we’re iterating over that list. Or maybe we’re building a career, but I be like, Okay, do you know much about Entity Framework? No. Okay, that’s fine. Well, let’s try and plug those holes whilst we’re here. Do you know much about how to query something you know, with IQueryable? Okay, that’s fine. Do you know why we use IQueryable rather than innumerable when we pulling things out of the database? Okay, that’s fine. No, that’s not a problem. Let’s let’s talk about this fill those gaps, rather than saying, but you should know this your bla bla bla bla bla, don’t you know this, I know this. So you should know this. No, they don’t. When I went to university, the first six months, or the first semester or whatever, was all and it’s gonna sound stupid. But this is a computer. Right? And this is how you plug one in. And this is how you but it wasn’t for the whole semester. But like, the first couple of days were okay, this is what this is what the computer currently looks like, you may have a laptop, you may have a tablet, you may have this than the other. And this is how you sort of plug it all together. This is what an operating system is. This is Windows icons, menus, appointments. And they were saying that, because to get onto the course, you could you could you just have to have a certain amount of knowledge, right? You just have to have maybe the A levels, maybe the GCSE levels, maybe the international equivalent of them. But you don’t have to have access to computers to be able to do your A levels or your GCSE s or your B techs or whatever, right? You don’t have to have access to computers to do that. So they were saying we’re assuming no knowledge, or building your from there rather than saying, right, okay, you all know what a compiler is, you all know what a function is. We’re gonna jump straight into mon ads, because I also this is day one, right? Because then that barrier to entry is like staring at a mountain. Right?

Dan

Exactly. And everyone has different backgrounds. It’s like when you first started getting into the education when you’re younger. It’s kind of some people that I’ve been fortunate that my dad used to bring home like BB C’s and Vic 20s and things so I could think from a young age, but not everyone. Like house About and like just everyone has completely different backgrounds, different households, some households might be able to have lots of computers, some house might not be to afford any computers. So when. And when you’re teaching people, it’s important to remember that not everyone has the same background.

Jamie

So, absolutely. So we talked about teaching and learning so far. And that is a part of productivity because like he says, it’s related, right? You got to be able to take notes, you got to be able to feed back to yourself. I think I would say that maybe one of the things that I do, and this, not everyone has to do this is because I’m taking notes, I’m taking them electronically or taking them with bits of paper. What I do is on a Friday afternoon, after I finish work, I’ll look back at my notes and go right. What did I actually do today? You know, we joked before we hit record about what you can remember that I got to remember yesterday, right? And I can’t remember yesterday, but if I look at my notes, I know what I did yesterday, right?

Dan

I’m just laughing now at so for the listeners, the context of that conversation was I made a red dwarf reference. And Jamie started like quoting out lots word for word perfect. Lots of red dwarf quotes. So I’m interested you were taking notes on red dwarf.

Because I’m an auditory learner, right? Going straight in.

I’m terrible with quotes.

Jamie

But also this the this we talked about earlier, this the emotion involved, right? We will, when we hear those those lines that pay it affects us in some way, right. And I could do the same with with lies, though, read in a book. For instance, one of my favourite books is Nightwatch by Terry Pratchett as part of the Discworld series of books, the 41 bucks, I think it was book number 3031 32. So the weather, in my opinion, best book in the series, I can sit with my brother, because he’s read the same book, we feel exactly the same way about the word, there’s a couple of years between us, I can just say a line. And we’re on page 37, we’re on page 42, or on whatever, because it’s, it’s the I think the bracket was a really good writer, everybody has opinions on that. But it’s because of the the emotions that are involved in that section of the book, you just jump straight back into because you’re tapping into those emotions. And so if you’re teaching or you’re learning using emotions is like we said earlier, a fantastic way to actually get that information across I’ve been in lectures, or in training sessions, where someone does the teacher from Ferris Bueller, you know, and they’re, we’re going to do this, and then we’re going to do that. And then, and you don’t take anything in. But maybe you take something because you start laughing at Oh, this is this is hilarious and monotonous. This is, you have also been in talks and speeches and stuff that start with a magic trick. There’s got nothing to do with what you’re doing. But you remember the magic trick or straight out of uni, I was a teacher training. And I, I gave a I gave a couple of lessons. And then I said to the kids, right? I want you all to take 20 minutes out of this lesson and draw a poster, you can sit in teams if you want. Use the knowledge you’ve just learned over the last two or three lessons. You know, over the last week or so, come up with a poster and talk to me in the class about what you’ve done. A lot of people because they weren’t used to it, they got up and they did the math. And I think they read the posters, that’s fine, whatever, whatever works for you. And there’s one kid Holly, I will always remember you got up and put it stuck his poster on the wall. And they walked out the room and like, where you going? What’s going on? And then he came running back in the room and did a forward flip and landed and went right. Okay, so now we’re going to talk about Pythagoras. And I’m like, that’s amazing. You’ve got it, you have got it. Because then everyone in the room remembers the day that Holly came running into the class and did a forward flip and then started talking about Pythagoras. Right, they will just remember that forever.

Dan

It reminds me a few years ago, there was a talk I saw when I saw it was online. But I think Donovan Brown, he was talking about DevOps. And at the start of it, he showed he set a scenario where there was he basically had a counter on the screen, which was how much money you’re losing. And basically, it was describing a book that you need that got introduced into a system that needed to be fixed. And at the very start of the talk, he said the scenario, the timer started, and the amount of money on this. This digital display was just shooting up into the millions within seconds. And so he really, as part of his talk, he really added a lot of emotion and fear. And people could picture there. They were in that scenario. And that was years ago. No, just remember that talk. So just adding that just makes such a big difference. Absolutely. I’ve tried to get up so for the show notes.

Jamie

Thank you very much. That’d be that’d be awesome. But yeah, adding having any kind of emotion, positive, negative, whatever. It really, really does help. But we so we’ve talked about, like, sort of the learning and the teaching aspect, because it is important to be learning, right? Like you said, you know, as part of your productivity thing, you need to be always learning something new, but not not a huge amount just like, Oh, right. At the time of recording, they’ve just, excuse me at the time of recording, they’ve just ratified the C# 11, double exclamation mark null check stuff, right? I know that that is a thing. I don’t know everything there is to know about it, but I know that it exists, I know that in the next version of C#, you’re going to be able to put two exclamation marks or some people might see a double bang, and it will do a no check for you without having to do object equals no or whatever. You know, that’s, that’s kind of useful it syntactic sugar, you don’t have to do it, but I know that it exists. That’s my learning for the day done. Right? That’s it, that’s all I need to let just that one thing I’ve done

Dan

it just something every day. And even if you dedicate half an hour, each day, half an hour is not a long amount of time you spend not just chatting or going to a coffee or something or whatever. But if you work it out over a year, that’s like the equivalent to spending over a month of study time, seven half hours a day. Now, just half an hour a day. So it kind of adds up so much in like this time next year, how much more you would know if you’re committed half an hour versus not that not committing that half an hour. And I think that this is actually one of my current clients just came up in conversation recently, where the T, and the team actively wants to do more learning because we’re starting to use new technology. And the dev manager is really, really good. He’s really proactive, He wants everyone to spend time learning. But then off the team are finding that because so much business as usual, workers coming in, they’re finding that, okay, all this stuff came in. So I don’t have time to learn it, I want, I wanted a budget, don’t have time for it. And I’m going to try to stress that rather than you’ve got a business as usual stuff and trying to fit your learning around it, do it the other way around. So pay yourself first have block out half an hour, and then fit everything else around that. Otherwise, you’re just not going to do it. It’s just not going to happen.

Jamie

Absolutely. I’m a big proponent of lunch and learns. You know, that’s everyone brings their lunch into a room, somebody sits down and goes, right. Okay, there’s this thing you could do, you could do the Elvis operator, right? Exclamation mark, question mark, question mark, exclamation, whichever way around is exclamation question mark, don’t know, whatever it I’m going to tell you about that, and C# and C so that you will understand what it is. And that way, you know, you don’t have to come to me and say, you know, this, what is this, and then I’m going to say where we should use it, not just that it exists. Here’s an example of a real code base or a real piece of code that I’ve written. And I think it fits really well here. Let’s discuss that. Right? Because then not only are you you’re in a relaxed atmosphere, because you’re all eating and you’re all having a great time, you’re learning about this new thing. And you’re also discussing as a team, should we even use this? Right? And if we should, do we use it everywhere? Like do I make it a pull request rule now that you use the Elvis operator everywhere? Or do I make it a thing where it fits, use it as a sort of amorphous thing. But we’ll have a discussion as a as a culture of developers not as the wider company culture, but as the culture of developers, maybe the culture of developers on this team? I have a discussion about do we use it? Why do we use it? When do we not use it? That kind of thing? Yeah, I

Dan

guess to play a bit of devil’s advocate to that Lunch Learn thing. I think it’s important that companies appreciate that learning should be part of included in working hours and account for that. So I guess I was feel a bit funny about lunch and learns, because it’s kind of expecting stuff to spend, break, doing this thing that you might not want to do just and if the rest of the team are doing it, you kind of feel compelled to do it, when actually, you might just want to go out for a walk or have a break and stuff. So I would certainly say like if there’s any development managers listening, or people that are in a position to make this call, allow time for your staff to do learning, within working hours. It shouldn’t be expected that people spend their lunch or even learn in their own time. It’s part of the job. And it’s so important that it’s not just going to help them it’s going to help the business.

This episode of The .NET Core Podcast is brought to you in part by mailtrap.io

Tired of creating dummy Gmail accounts to test your messages? With Mailtrap you can see what the message looks like for the recipients without sending it. Set up Mailtrap in less than 5 minutes to test your emails and share results with team members. See all crucial email reports right in your inbox. Get the list of errors with a reference to the line of code that requires fixes with the HTML and CSS validation. As well as this, Mailtrap also makes Bcc testing easier.

Plus, Mailtrap recently released Transactional Email Sending . So, you can send emails and monitor their performance. It’s easy to check all the necessary statistics, including spam complaints, open and bounce rates, and Mailbox provider data. And you get a user-friendly interface with color-coded data and no extra buttons to help use the app even more efficiently.

Get started for free at mailtrap.io by following the link in the description, and complete the email development cycle – test and send your emails within one solution.

That’s mailtrap.io: m-a-i-l-t-r-a-p dot i-o.

Jamie

Yeah, I agree. And maybe setting aside half an hour every week, half an hour every two weeks to allow someone to go, I’d like to Can I just shut up and if anyone’s interested. I’m going to be talking about this thing for the next half. An hour, you know, let’s go into the boardroom, let’s go into this room, let’s book a room and have time, or maybe just everyone crowd round my machine, I’m assuming that we’re all back into the office or whatever. Or maybe I’ll throw together a room in Slack or zoom or teams or whatever it is a using. If folks are interested, I’m going to be talking about this thing. And then we can have an open discussion about what is this? How do we use it? Do we use it? Is it pointless? Is there a point to it, and sharing that knowledge, or indeed, I’m going to go learn about React about this, this library for React. And then when I’m done, I’m happy to share, do like a screen share and show you what I’ve learned and show you what I felt. And then just leave it at that, right? Because that that like half an hour of just sharing that information might be enough to spark the inspiration of someone else? Oh, that’s really cool control. I was hard coding all of this for ages. But now that I know that there is a library that does it for me, right.

Dan

Exactly. And that’s that’s part of like, as you learn more stuff, and you get to know what’s out there, you do less reinventing the wheel. And that’s one thing with the whole learning thing that I really like about podcasts for learning is, it’s important to even if you don’t know all this stuff deeply, to have a broad range of knowledge over when you come to solve a problem, what tools can I reach for, and I found being an avid listen listener of podcasts, that’s given me a really wide broad range of shallow knowledge. And then I know what I want to then focus deeply on, read a book watch a Pluralsight course on. And it just means that I’ve kind of heard about all these different things and kind of know what they do, even if I don’t know how to implement them. And I think that makes a big difference. But with the whole learning thing, that’s kind of I suppose the next big question here is like, what do you learn, as in this, there is so much to learn. And I guess my, my suggestion here will be start with what you actually use. So it’s kind of I think, knowing your own tech stack is so important. So like, if you’re a React developer, make sure you really grok react, or if you’re an sp .NET. Developer, make sure you really grok that, because then when you’re building stuff, from a productivity point of view, you can focus on the business requirement, rather than how do I do X on what why am I chosen tech stack. And I, if, if you know, for example, react back to front, then you can knock out a React app way quicker than someone that’s mediocre and hasn’t spent time really understanding how everything fits together. And that applies to any technology, not just react. So I would start like I know, there’s lots of new shiny stuff to learn. But I would start making sure that first you know, your own tech stack your own tooling, and you can be super productive in that, and then start branching off to other stuff. And as you learn more stuff, you’ll start to learn more stuff that you want to learn, because you start hearing about different things. And yeah, I’m kind of aware that if you said that your last episode, the last episode that you will have published a bit of a time shift going on and you’re not published it yet is about learning. Is it worth not moving on from learning because I don’t want to repeat too much of

Jamie

totally, I just want to sort of echo what you’ve said and say that, I think it also if you have that deep knowledge of a of a thing, you can then be making informed decisions as you’re working through, you can say, right, okay, we’re not going to use this particular thing. Or, also, let’s say that you have deep knowledge of React, and you know, a bunch of different ways to do the same thing. You could say, well, I vote we go with X, rather than y. Because, you know, I can see maybe in the future, we may be needing to use x, or indeed, you can say I say that we don’t use x, because we’re not in the future yet. But you’re able to make that informed decision, rather than just going NPM instal some library and hoping for the best, you can actually make that decision and say, right, okay, this isn’t going to work, because maybe the libraries are a date. Maybe the developer has moved on to other things. Maybe it’s just not good. But yeah, I agree. So in that in that aspect, then, I guess, not just the technology that you’re using, but I guess the technology around the technology that you’re using the technology that supports it, right, like IDs, tool chains, build tools, things like that, that must be quite important to right.

Dan

Oh, absolutely. And even taking a step back before we talk about IDs and divulging the IDs, which is like quite a big important one, it makes quite a big difference. And if we just look at raw typing speed, like Are you a fast typer Are you a slow typer if, if you’re a slow typer it’s going to take you longer to write code. And it’s not just coding. It’s things like communications like emails, Team slack, especially now a lot of us are remote. Being a slow typer can really slow you down. Now obviously can be typing fast in the wrong direction and build Then the wrong thing. But that’s kind of we can talk about that separately. But I would just say if you’re slow typer, it’s probably worth spending a bit of time learning to touch type, just basically a bit of practice time to get a bit faster. Because it’s all about how fast you can interact with a computer as well. So as you mentioned about leverage in your ID. And knowing that quite often when coding, I’m a big, massive keyboard chocolate fan, like basically, I want to get the ID to do as much as possible. So refactoring, all this kind of stuff, inserting snippets inserting code stuff, because I want to type unloads it on its type as little as possible. And, but quite often, I will see other developers and this is if I think about how I used to be, where I would do lots of things manually, even like taking a simple example, like renaming stuff in Resharper, or poly Visual Studio or either Ctrl R, you can just rename, and it’ll intelligently do that or chain signatures. If you do that manually, that’s going to take you 10 times as long, probably more, as in the ID can do a lot for you. And that’s a simple example. There’s lots of really advanced use cases that the IDE can just do for you out of the box. So it’s learning your tooling. And it’s quite interesting. I’m quite curious, can I ask you a quick question? What? When you hear the term 10x developer? What do you think of?

Jamie

I? If I’m honest, right hand on heart, I hate the phrase, I hate the phrase, because 10x When compared to what? Right? You can’t say TEDx, when you haven’t described what a 1x is, right? Exactly, exactly. Yeah, I think that is used by people to sort of say I’m better than you. And here’s why. Right? And in a team, you don’t want a superstar, you want a bunch of people who are all you’re all sort of working together, right? And so if I was working in a team with someone who was a self proclaimed 10x, developer, I would try to avoid them as much as possible.

Dan

Right, exactly. But I think my thoughts here is that, that suggests a linear sliding scale of and it’s like, you’re somewhere on that scale, where as we’ve kind of already covered, and we can cover much more stuff. We’re talking about types of speed, leveraging the ID was spoken about what we can speak about, whether you’re writing and that you’re building the right thing, and you’re writing untenable, testable code, automated, whether you’re automating stuff, whether you’re like, if I’m, I’m probably quite productive in .NET. But if I was thrown in front of a go, or rust application, I’ll be very unproductive. So it is just, there isn’t this linear sliding scale, there’s all these different facets to productivity that we’re talking about. And they all come together. And as a whole, that makes, that is what I define productivity as not a single sliding thing.

Jamie

Yeah, absolutely. And the Yeah, it doesn’t end it doesn’t it doesn’t work like that, right, you can’t become a 9x developer then become an 8x. Developer, right. Or maybe you can, ignoring the the fact that it isn’t a sliding scale, you could become really productive in one section of your your practice, your engineering, whatever you want to call it. But then that could have a detrimental effect on your ability to do something else, right, they don’t all grow at the same time as what I’m saying the skills stuff is kind of like working out, right? If you go and you lift lots of heavy things, do loads of bicep curls, it’s not necessarily going to make your leg stronger, right. And so if you spend forever learning all of the myriad different shortcuts inside of you, like all of the shortcuts inside of the ad, not like the core 10 that you use every day, every single possible one, I didn’t you know that if you do Ctrl, Shift p x, Zed and push the power button on your computer, it will do this for you. Well, I’m not I’m not a contortionist. So I’m not going to do that. Right. But the learning all of that is like there’s an XKCD comic about the Balmer curve, where like, you start being really productive, and then it just drops off straightaway. Right because I’m not gonna go into why. Right. Well, we’ll not talk about Steve Vollmer and why that exists, but like you get to that point, and then all drops off. Like if you push yourself further, you’ll stop being productive. And I think this idea of constantly pushing for any to be the best, everything needs to be going in that linear scale. You then get to a point where something else is is like you getting detrimental in something else because of it, right. But that’s that’s that’s my thought, right?

Dan

I completely agree. It’s kind of the it’s not, it’s not linear. But what I would say towards that, though, is the whole one. When I have heard in podcasts and blog posts mentioned about the tenants developer, I’ve heard lots of things saying, Does this even exist? And I would argue the fact that even just if we look at what we’ve two of those facets we had, were typing speed and leverage in the IDE. So you’re, you’re automating the stuff the ID house, you could all that if you, you could already see a factor of 10, between the speeds there. And that doesn’t take into account of an your knowledge. Are you building the right thing? Are you writing, maintainable testing testable code? Are you writing using the right tools? Are you writing like, tests and things, all these kinds of extra stuff, stuff that comes along with it. So I would say that if you did want to put it on a scale, then I’ve never understood the doubt that there is that connects way, way higher difference, if you end to be more productive, you can be. And I think this goes to the whole point of at the very start, we said that if you’re producing more value, and output by working longer days, there’s a ceiling. But by working smarter, then it’s kind of the ceiling goes away. There’s just so many ways that you can produce more value in less time. And it’s just that comes just over time with learning and stuff. But also be intentional about it. And have I spent and this is another topic we can talk about focus. Have I spent a lot of today, procrastinating have I been on Twitter too much, or Reddit or whatever it is. Or have I just been in meetings that I don’t need to be in, and lots of things. And a lot of the time, it’s kind of like just spend, like realising that time, you don’t get time back that you spend and making good value of it, making good use of it.

Jamie

Like he says, tirely possible to just sit and spend your wheels, right? You’re going nowhere fast. And like, our bring this example, let’s say let’s say you’re integrating with some kind of third party system, right? A lot of us do that. We take some code, we talked to a third party system, we take the response, we do something with it and push it back, right? Let’s say you you’re integrating with a third party system, and they have an API that you can use. But then you decide this API is no good. I’m gonna write my own. Why? Yeah, what do you what could you possibly achieve? That the team, the team, at the other company, has already achieved? And if you’re wasting unless, of course, you have a very, very specific reason for I need to write my own version of this. Because it solves some business process, right? The I’ve said it multiple times that I’ve said it on tabs and spaces as well, the boss doesn’t care how you did it, just that you did it, the boss cares that when you push the button, it gives them money. That is all they care about. That is it, it doesn’t matter. Oh, you know, I used a mon ad we hacked into the system, and we did this that they don’t get, that’s okay, you’re talking, they’re hearing static until they hear. And when you push the button that gives you money. That’s when they are paying attention. Because they don’t care about the technical details. And so if all and here comes the bungee cords, if all you do is hook a bunch of libraries together, well guess what? You are still the cement that holds those libraries together, you have achieved something by by connecting all of those Lego bricks, those blocks, bricks, or whatever you want to call it. And so if you can do that, and still produce the thing that the boss wants, that the project manager wants that the client, the customer, the user, whatever wants, guess what, you’ve you’ve become 1,000,000% more productive than someone who’s gone. Okay, so first thing I’m going to do hash include stdio. And then I’m going to create a namespace, that would be good because they’re still they’re still typing, and you’ve already handed the work in, you’re going home, who’s more productive?

Dan

Exactly. Less is more and all that. But it seems like you hit on a good point. And about building your own versus using something that’s already bullet proofed and tried and tested by lots of people have seen lots of companies try, oh, we must write our own CMS because our use case is different than anyone else’s. Or we must build our own CI CD system because or customise it so much that we can’t upgrade the CI CD system and whatever, because we’re special snowflakes that do that we build software differently than anyone else when in reality, most software teams do this exactly the same things. So use the tool in this audio out there. And now what We’re really lucky, because a lot of this stuff is pretty much free, which it’s amazing how much you can get for free. And it does all the stuff for you, which how much time would you spend, building a maintaining, if you tried to do it yourself, and it’s not been battle tested.

Jamie

It is literally someone else’s job to build the thing that you are using, right? You wouldn’t go to a an engineering firm, or a car mentors firm and they go Yeah, well, we’ve got these jacks to lift the cars up. And they’re great because they’re from whichever company but they’re really expensive. So we’ve built our own, and we’re going to test it with your car. Right? We wouldn’t do that. Because you know that as soon as your car goes on, and it starts going up, get to the top and then come crashing down, or flying out of the roof. Right? Your car is then at risk of being destroyed. Because they’ve decided they wanted to build their own tools. So I don’t understand why most of the time, we don’t trust the people who, who, because it’s a matter of trust isn’t is nothing else you you can look as deep as you want and come up with as many excuses as you want as trust the the developers who decide to write their own, don’t trust that the people on the other side have done as good a job as they think they can do. And I say think they can do. I’m not trying to be offensive or related. So when it comes to things like CI, CD, or build tools or things like that, now I’ll write my own make file, because I know better than, you know, the other members of the team who’ve done their on their own might make files or I’ll make my own belief system, because you know, I know better and you may know better. But does knowing better. Does proving that, you know better make the software ship faster? Does no no proving that you know better. Get the money into the company’s coffers faster? No, do the thing that makes the money first, then if you have the time, show me how clever you are. But all I care about is that you can get me the money, go go do the thing built the thing. And then when it starts making money, I’ll be happy.

Dan

Yeah, exactly. I think it’s not just that they think they can do better. I think it’s more developers enjoy coding. So developers think about, oh, I want to play around with this thing and do this. And it’s important. The developers actually also think about the business and what the business actually wants and value, rather than I’m going to re invent the wheel. Yeah. Well, yeah, it’s kind of, it’s just what, it’s one of those things, isn’t it? It’s kind of this. Again, it comes back to learning and knowing what’s out there. So it might be that you just didn’t know that thing existed in the first place. It’s like, for example, if I think about many, many years, there was a company, before I was consulting, this was a permanent job, where we quite heavily use SQL Server. So I was spent a lot of time in SQL Server Management Studio writing SQL queries. And so I’d be writing lots of joint statements to query the database. And we’re doing that all the time. And at the time, I wasn’t I, I’d had a link pod, but I didn’t really use it that much. Now, I’m a huge fan of Link pod. And this is just an example of by tooling can help in link paddock, if it was an order database or something, I could type orders, press f5 in the dump window and linqpad, you get the table output. But for foreign key references, you get a hyperlink, which opens a nested table with that related table. And the base is all Linton and you can click click, click drill down, down the foreign key references. And you can just view the data within an all you did is type one word and press f5. And there’s little things like that, where as you get to learn different tools and faster ways of doing things, that touch makes a big difference to productivity, but you don’t know what you don’t know until you know it.

Jamie

Exactly. Right. Exactly. And that’s where that’s where knowledge sharing comes in. Right? Because if you’re not sharing that knowledge, there is absolutely no way that the the other developers around you are going to be able to benefit from your, from your experience, they’re not going to know, Dan has this software that he runs on his computer. I don’t even know what it’s called. I’ve looked over and I’ve seen him type in orders, then here five, and there’s tables and tables and tables of data. And he just clicks. I don’t know, do you know what? I’m going to go ask him? Right? Because I think that would be a great tool. Or, you know, you come over and you go, Oh my goodness, right. I can see your writing is really long statement in SQL Server. Did you know about linqpad? Because this is all Come on. Come on. And then you show them and you’re like, look, look, it’s a click and click Done. Oh, wow. How much is that? It’s free. Really? Yeah. Oh, my goodness. And you know, you’ve just changed someone’s life there by sharing that knowledge.

Dan

Yeah, absolutely. I think also with I think it’s quite easy for some developers especially, maybe not for us being consultants because part of our job is to mentor and help the team learn because we don’t want clients to be dependent on us, because then we’ll need to be there for years upon years. But for a permanent member of staff, I think some people might find comfort in not sharing knowledge and hoarding it so that they become the go to person, and no one else can, I’ve got ownership of this, no one’s allowed to touch it. The problem with that is, is it’s kind of the team can’t grow. And you end up with this. This silo which people are scared to touch that code, that person’s got information. And while they might think it’s giving them security, actually, a member have stuff that really helps the team grow is way more valuable to the company, you’re not going to lose your job because more people know your stuff. But you’re going to keep the job because the team see the value the seen see that the stuff you’re doing is helping the entire team grow, helping the entire team learn. And also when you’re explaining something to someone else, they might say, oh, yeah, you know, you can do this as well. And then you might learn something as well. So it’s kind of it’s a two way thing. And the more you do I find that the more I do go into a company, and do I help help mentoring and teaching, the more other people start doing the same, because it becomes more, the whole team have a bit of a mindset shift. And everyone starts talking more being more open. And it’s amazing to see a team grow like that, but also is a two way learning thing.

Jamie

Yeah, there’s a there’s a there’s a team, I’m cautious about bringing the story up. Just because I have to talk about something called the bus factor. And if you haven’t heard of the bus factor, it’s a rather sterile engineering term. For how many developers how many engineers, how many people within your team know about something, the lower the bus factor, the worse you are, if I worked on a project very recently, with let’s say, within the last two years, where they had a bus factor of one, that meant one member of staff knew everything, they had all of the keys to the castle. That member of staff then was involved in an accident, and all development stopped. All development stopped. Thankfully, that person is fine. Person recovered, and is doing very well. But everything stopped for three months. Because they had the keys to the castle. They had all of the knowledge. Anytime anyone needed to work on something, they had to go to them and say, Where where is the code? Which function Am I overwriting? How do I build it? How do I deploy it? Oh, you do it this way. But don’t tell anyone don’t don’t document it is fine. Well, I mean, you know, you’ve got a you’ve got a team of 200 plus developers around you, and you’re surrounding that person, and that person holds all the keys to the castle, something happens, everything stops, the company could have then shut down. Because but what they ended up having to do was bringing the person in whilst they were recovering and saying, right, where do we go? How do we do this? And it was it was, it was ridiculous. Because like, I see myself as a bit of a humanist, I’d like to let the person heal, let the person rest, let them, let them come back when they’re ready. Don’t force them back. Because that’s just going to, like you were saying, right? If you’re working 15 hour days, guess what? you’re eventually going to crash, right? I hate to use that term. But you know, you get you’re going to get to a point where you’re too tired. You too, it’s too difficult for you to work, you’re eventually something’s got to give right? And with this person, if they’re healing, you’re going to make the healing process last longer. Thankfully, that person’s okay. But yeah, when when you have that one person that that sort of linchpin for the whole, the whole company, the whole team, and they know everything, and then they disappear for whatever reason, he then have to have the whole conversation of right, what do we actually do? Can we can we deliver this product? Because I don’t think we can. And we actually had to have that conversation. Because and that is a scary prospect. Because then people who were on the team who are maybe full time employees go, is my job safe. If this person isn’t around? Definitely when you are indispensable, you are literally indispensable.

Dan

I think that the term you use boss factor, and also your example suggests an accident or something negative. But it applies to so many different things. So I’m going on holiday much but people have to have holidays, people so might want to leave the company that is in not not for negative reason. But as in people don’t stay at companies anymore for the rest of their lives. And also as an individual, if you as I mentioned before, if you’re holding information because you want to feel more stable, and you do You become that that single point, point of all the knowledge, then you might want to move on there might be like a, you might get an amazing opportunity. But then you might feel oh, actually, I can’t move on, because I’ll be screwing this company.

Jamie

So some companies won’t let you move on, because you have all of the keys to the castle. Yeah. Like I said, when you are indispensable, you are indispensable. Maybe a life event happens could be a joyous life event could be a sad life event, a life event happens, you need to step away from work. You can’t because they need you because you are now the source of truth, the silo of knowledge.

Dan

Yeah, absolutely. So I guess another section for this productivity. Another facet is we’ve spoken a bit about focus and being distracted, then it’s kind of how do you become more focused, if you are someone that gets easily distracted. And I think we spoke a bit we hinted a bit about this, before we started recording is the fact that you’re an auditory learner. So you like had like have your headphones, I think we had started recording because you said you’d share your playlist. And I find that it’s just a silly thing. And this is obviously everyone’s different. But you can see I’ve got quite big headphones on by having headphones that cover my ear, I find nice and day difference between my productivity level, I’m so much more focused, when I’m wearing headphones, it doesn’t, I don’t have a specific music genre, which I’m more productive with, it really depends on my mood, but it’s more knowing the mood. But just I don’t know, there’s something all encompassing, which kind of like just blocks out everything else and helps me focus, then there’s other things like that. And it’s quite well known with the product and the Pomodoro Technique. Well, for those that don’t know, this is kind of setting a timer for 25 minutes, you can only focus on that one thing that you’re working on, nothing else, you can’t check emails, you can’t do anything. And then when the timer goes off, you set it for five minutes, and you can have a break. And this kind of like ties into the learning thing as well. If you’re setting up for learning, then you need a break so your brain can start to make sense of what you’ve learned. Otherwise, if you just cram, cram, cram cram, then you’re not going to take all of that in. So that’s you need those breaks anyway. But on the one thing is I’ve tried Pomodoro Technique quite a few times. And the thing that always puts me off about it that I don’t like is quite often that I am in the zone, when that timer goes off 25 minutes, and I don’t didn’t at the time, I didn’t want to be pulled out of it. I know, I know all the good things about that you need a break and everything. But sometimes that’s quite a harsh you’ve been pulled out to the zone when you’re not ready. And also like if you’re if you’re unmotivated, which is the reason I would want to use the Pomodoro Technique, then 25 minutes, it’s not a long time, it feels like a long time. And quite often, a lot of it is just getting started. And it’s like if you’re working on something that’s maybe you don’t really want to start, it’s just that getting started. So what I found works with for me now is setting a 10 minute timer. So it’s much shorter, it’s just enough to get started and get into the zone, do not have an alert going off, do not have the timer in front of you put it somewhere else. But if you feel yourself being pulled over to an email, you can look at the time and I’m I still not 10 minutes. But quite often when it gets to the 10 minutes, then I’m in the zone at that point, and I don’t stop. And next time I know it like half an hour an hour, whatever has come by, and I produce loads of work. But I really don’t like like the idea of the Pomodoro Technique. But I don’t like that hard alarm going off. Pull you out of the zone thing. I don’t know. Have you tried the Pomodoro Technique before?

Jamie

Yeah, like you’re saying can be quite jarring. But what I do is I have 25 minute, half an hour stints where everything other than what I’m using is closed. I don’t have teams, Slack discord, whatever. Browsers nothing. Nothing’s open. It’s a bit draconian, but it’s like, I’m using this ID. I’m looking at this code. I’m doing this. If I need the browser to debug what I’m doing, the browser gets opened. But I stay in that tab. Right. It’s really strict. But it’s like, it’s almost like I’ve got you know, the blinkers they put on a horse? Yes. Yeah. only see in front of them. That’s that’s what I’m looking at. That’s what I’m doing. Because otherwise, you know, I’ve got a multi monitor setup. If I’m working looking at monitor one, and a monitor to someone sending me a message. Hey, Jamie, can you check this Hey, Jamie, here’s a silly cat picture. Hey, Jamie, look, I’m gonna go Oh, my head’s gonna slowly turn. So I just I get rid of all distractions, which is really draconian, really sort of. It is hard to do because like, the very first time we did I’m walking away and I’m get started to get fatigued My hand went straight to the mouse. I know what I’m doing, because it’s me who’s doing it right. But it must have been subconscious. And my mouse pointer hovered over slack. And it’s like, double click, I may have a message from the client, I may just need to check. And it was like, I’m looking at the screen, I’m like, no, because whatever it is that they want me for is not as important as what I’m doing for them right now. Exactly anything customer use, or whatever,

Dan

it’s not going away, it’s still there as well, then with the whole, like, I don’t, I don’t know about you. But I’ve got a multi monitor setup. And if you like you say, if you’re just focusing on Visual Studio, or IDE, or whatever your ideas, you can even turn off your monitors to plot them out. One thing I use quite a lot is virtual desktops. So I generally have what I’m working on on one virtual desktop, which covers all three screens, because quite often I do have, as you say, the browser using things like hot reload and stuff. So I’m coding and I can see it changing. But so and then I’ve got things related to what I’m doing in that virtual desktop. But then everything else is in other virtual desktops. So it’s the whole out of sight, out of sight out of mind. I think that the apps are gonna make a big difference.

Jamie

No, it does, it does. Because if you can’t see it, then you can’t interact with it. Right. And that’s the biggest thing, right? All modern operating systems do this, when an app wants your attention, it flashes, or bounces, or it does something, it’s like, hey, check me out, check me out, check me out, check me out. And it keeps doing it into the into the go check it up. As you go. So naturally, you go look, oh, it’s just a mess as a message from from Jamie’s just saying how I, okay, whatever. But the problem is that, just like a computer, right, I’ve used this example, let’s pretend that your brain is a computer, you’ve got, the task you’re running on is running on one of your CPU cores. And in order to switch tasks, you literally context switch, you take all of that working memory, dump it out to long term memory. And then because you know, for folks who don’t really know how multi threading, multi threading multitasking works in a computer, when it when an application is running, it’s only ever running for a specific very small slice of time. After that slice of time, everything in the CPU in the cache in your memory gets dumped to disk, another task jumps in sets itself up, starts running, and then that time slices over, it then swaps back. And swapping back to and from takes a number of cycles. And taking all of that working memory, you’ve got the database, you’ve got the user interface, you’ve got which line of code you’re in which which file, you’re in the entire stack of how I got there, the tests, perhaps all of this extra information and like the bug report, and all this, all this information is then in your working memory. Or maybe it’s in your short term memory or somewhere to move to slack to see that Dan has sent me a picture of a silly cat. Whilst it is nice, I have to ditch all of that memory somewhere. And then when I come back after put all of that memory back, and for me, that is an act that is physically painful, it gives me a headache doing that. And so I make a point of going up, it’s not even running, it’s not on the screen, I can’t see it, I got it. If I can’t see it, I can’t interact with it. And that’s how I that’s how I deal with it.

Dan

Exactly. And even if you’ve got the willpower to see that notification and ignore it, if you don’t go to it, the fact that something has distracted you, and you’ve had to pull on that willpower to not go and look at it. That’s a distraction itself. So as you say, just closing the thing down, or having it somewhere away, you just won’t see it, put your phone on silent, then it just makes a big difference.

Jamie

Absolutely, I found that, since I started working my current workspace, what I do is I put my phone on silent and put it in another room. My headphones are paired to it. So if a phone call comes through, I can answer the phone call if I want to. But it’s in another room, all of my messages and stuff come through on a separate screen. So I’ve got WhatsApp, I’ve got text messages got all that going on on the screen if I want it. So if I need to send a message if I need to see if I’ve got a message, I could do that. But my phones in another room because otherwise, I found that I was going. And for the listeners I’m holding my hands up as if I’ve got a phone in my hand, pushing my thumbs into my fingers as if I’m tapping the screen. I just I’m done with this act now doing with this, this piece of code. Just going to do this for that down. You know what, this is too hard. I’ll just get my phone and do it again. And it’s literally removed for I can’t see it. I can’t interact with it. The only things I have around me are my computers. And the drinks that I’m drinking and the microphone and the headphones are the only things right, but it’s the stuff that I need to do the job or anything that’s rather important.

Dan

Yeah, definitely. So I guess looking at another area, which I find makes a big difference is just the act of breaking things down. And even before starting coding or anything if you’re working on a user story or feature or something, just again, going back to these bullet pointed lists, I tend to open up a new note. And I will create bullet point lists high level of the areas I need to work on on the front end, the API, the database changes whatever. Then I would break each of those down Just in the same way as with notes, I will break them down into nesters, or indented bullet points. And then I’ve got a checklist of things to work on. There was a book I read many years ago. I’m blanking on the other number in a sec. But basically, he productivity ninja, I think it was, it’s got a bit of a funny name. But one of the concepts he talks about is separating out your brain into manager mode, and worker mode. And so if you separate out those two different roles, so when you’re starting work, you’re you’re planning you’re watching this list or filling in a backlog or whatever it is, but I tend to like have, again, going back to this, whether you do it in a shared area, like Azure boards, or something, or Jira, or whether you do it in your personal notes, I tend to do a bit of both. So I like to be more verbose in my own breakdowns. And so when you’re in management mode, or planning mode, then you can go and quit these lists and separate out those responsibilities to actually working. So then again, this goes back to focus, if you’ve got a list of things you need to do, which are quite like almost like a checklist, when you’re in work mode, and you’re doing those, then it’s easiest to stay focused, because your your planning mode, which you’ve already done, has created this list, and you can go tick, tick, tick tick on these small granular things. And I just find that makes me really productive, not miss not miss things, when I’m working on something because it’s the whole, you know, when you coding and you like to do is everywhere, it’s kind of that but in the most rather than writer to do in the code, I would basically add it to this, my notes for that for that thing. And it becomes a checkout in which I’m going through checking them all off. So it adds to my definition of done almost. And I just think that makes a big difference. Again, it ties into just this whole note taking umbrella, which just covers so many things, from learning to planning to breaking things down to quitting snippets, code snippets, which you can copy and paste out of, instead of rewriting the wheel every time, I just think. Yeah, Note taking is a big thing. And there’s some different tools to do it as well. There’s like, it doesn’t really matter. It’s kind of got that one note, Evernote notion, I’ve started becoming a big fan of obsidian. I don’t know if you’ve heard of that. That’s absolutely amazing. And but whatever, literally markdown files in Dropbox, or whatever, as long as you’ve got some form of backup, but the point is that you’re mentally getting stuff out of your head. And you’re getting everything written down. So you don’t forget things. And it just means that your brains more relaxed too. Do the stuff and be creative, rather than having to hold all this stuff in memory.

Jamie

I agree. And it makes it immediately measurable too, because you could say I had these 15 things to do. And I broke them down properly instead of like, instead of saying, I’ve got to write the system that does ERP, right? You’ve actually broken it down to every single possible step is that ever be one checkboxes now, it may be 400, checkboxes, but there may be 400, teeny tiny steps, you could say, right, I’ve achieved 398, or achieve 200 of them, you can see how far through that task you have gotten.

Dan

I’m aware that we’re, we’ve been talking for quite a while and we’re probably running short of time. But there’s one topic I did want to fit in before we do finish. And that is the importance of health and fitness. Because it’s kind of as an industry we sit down for like eight plus hours a day. We it’s just we’re not of while software development kind of promotes mental exercise. Like as recoding, we’re thinking it does the absolute opposite for physical exercise. And there’s plenty of evidence showing a very strong correlation between physical fitness and mental well being. And I’m not necessarily saying go out and run a marathon. But I would just say, have a break, go for a walk, try and get some form of exercise. And it’s not just exercises Well, it’s what you eat. So like the brain, it’s it’s like that is quite an important organ in our line of work or any line of work. And there’s tonnes of info online, just showing how much how important and good nutrition plays in the functioning of the brain. As an affiliate, if you think about if you take a plant, and you feed it rubbish, it’s going to be all drawn up and weathered. If you feed it superfood, then it’s going to be like it’s going to flourish. And your body and brain is the same kind of thing. And so kind of unsleep as well sleeps another important one and there’s a book called Why We sleep by Matthew Walker, which I would strongly recommend everyone read and it’s kind of I used to think I’ll sleep such a waste of time I could be doing so This, read this book in like completely changes. And this ties into all learning and remembering going to all this kind of stuff. Yes, so just, I suppose as a good final message, don’t neglect your body. And sleep good nutrition and exercise because it’s so important.

Jamie

Absolutely a, I would second that recommendation of the book, why we sleep is so important. So important. And yeah, it just it. I don’t say this about a lot of books. But that book changed my life, I have to say, I now have an eight hour block that is uninterruptible throughout every day. And it’s like, this is my sleeping space. Anything can happen outside of that, but only one or two in a family things can happen inside of that, like if somebody needs me for something that can happen in that block. But work things don’t come anywhere near it, I’ve got a two hour buffer either side, right, so I’ve got this 12 hours that work cannot enter into, because it’s part of that sleep block. And it’s so important, I agree with you completely. And it is so difficult to to, it’s easy, because our our jobs are very sedentary. Like you said it’s a mental exercise most of the time. Whereas there isn’t really a physicality to it. And the easiest way to get about this as if if you if you have the physical ability to do it, maybe do two or three pomodoros or go stand outside, just just just stand outside going to the door, stepping outside of the door, if you have the physical abilities to do it, and tickets of fresh air and look at some some plant life. If there is plant life around you there are a cycle. There are psychological studies that show that if you have greenery around you, which is listeners, I have a number of plants throughout this room. It boosts your creativity boosts your mood it boosts the oxygenation levels, and can really help. So I agree completely. Excellent. So with all that being said, they’re done. And since you’ve dropped that wonderful, wonderful piece of knowledge towards the end, how’s the best way? What are some of the best ways for people to get in contact with you if they want to, like learn a bit more? I know you do a podcast called The unhandled exception is Can people just sort of find that by googling it? What’s the what’s the what’s the plan?

Dan

Yeah, so I suppose the best way to get in touch with me is on Twitter. So I’m tracking on Twitter, which is d r a c, a n and my DMs are open. So feel free to reach out to me. And the podcast you mentioned that’s unhandled exception podcast.com. But it’s available on all major platforms. And that’s kind of a software development bias towards .NET in Azure. But it’s just general, it’s kind of wild, you won’t find something on PHP, for example. So because I’m a .NET developer, but it’s stuff of interest or .NET developer really, but the stuff like we’ve got hashtags on get Kubernetes is like other stuff as well, not just .NET. But yeah, Twitter’s the best place to reach out to me. I’ve also my blog downclock.com has got lots of info there as well.

Jamie

Excellent. Well, I’ll put links to all of those things, and if you’re able to find the talk that you mentioned earlier on, where they brought up how much is your company losing right now, with this bug, that would be quite interesting as well, if you can find it. If you can’t, then you know, we’ll figure out another way of bringing it in. But yeah, so don’t worry about taking notes of I’ve got I’ve got to go to this website and that website, don’t worry a little bit linked, you can just press the button, it’ll take you straight to it. I think I may be able to press the button from inside of the show notes and go straight to subscribe on your podcast app. I’m pretty sure that’s doable. So don’t worry about that, folks. That’s that’s easily done. So yeah.

But I guess all that’s left to say Dan is thank you ever so much for being on the show. I’ve had an absolute blast. I’ve got to say.

Dan

Me too, thank you so much for having me. It’s been a pleasure being on and it’s just been great to have like the two way conversation. So it’s not just me doing a talk on something like you’ve obviously got quite involved. And it’s been a two way conversation. And I’ve really, really enjoyed it. So thank you.

Jamie

No worries. Thank you very much.

The above is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Wrapping Up

That was my interview with Dan Clarke. Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at dotnetcore.show, and there will be a link directly to them in your podcatcher.

And don’t forget to spread the word, leave a rating or review on your podcatcher of choice - head over to dotnetcore.show/subscribe for ways to do that - reach out via out contact page, and to come back next time for more .NET goodness.

I will see you again real soon. See you later folks.

Follow the show

You can find the show on any of these places