314. Measuring Developer Performance and ROI is Hard But Possible
Read full transcript 18 segments
-
Using lines of code produced to measure Using lines of code produced to measure a developer's performance is a terrible a developer's performance is a terrible a developer's performance is a terrible metric. So is features added. So is bugs metric. So is features added. So is bugs metric. So is features added. So is bugs fixed or tickets closed. Let's talk fixed or tickets closed. Let's talk fixed or tickets closed. Let's talk about why these are terrible metrics as about why these are terrible metrics as about why these are terrible metrics as well as what we can use to evaluate well as what we can use to evaluate well as what we can use to evaluate developer performance in today's episode developer performance in today's episode developer performance in today's episode of Dev Questions. Software development is more than just Software development is more than just writing code. So let's talk about the writing code. So let's talk about the writing code. So let's talk about the rest of it. Specifically, let's talk rest of it. Specifically, let's talk rest of it. Specifically, let's talk about measuring developer performance. about measuring developer performance. about measuring developer performance. Now, there are a lot of bad ways to Now, there are a lot of bad ways to Now, there are a lot of bad ways to measure developer performance. Let's go measure developer performance. Let's go measure developer performance. Let's go through a few and see why each is a bad through a few and see why each is a bad through a few and see why each is a bad metric. Number one, lines of code. This metric. Number one, lines of code. This metric. Number one, lines of code. This is a common one that has been around is a common one that has been around is a common one that has been around forever and also been uh kind of talked forever and also been uh kind of talked forever and also been uh kind of talked down about for a long time. But let's down about for a long time. But let's down about for a long time. But let's talk about why. And first of all, why do talk about why. And first of all, why do talk about why. And first of all, why do we even measure lines of code and say, we even measure lines of code and say, we even measure lines of code and say, well, that would be a thing we, you well, that would be a thing we, you well, that would be a thing we, you know, measure against or that's why we know, measure against or that's why we know, measure against or that's why we um want to see. Well, because there's um want to see. Well, because there's um want to see. Well, because there's got to be some measure, right? As when got to be some measure, right? As when got to be some measure, right? As when you're evaluating a person, it's hard to you're evaluating a person, it's hard to you're evaluating a person, it's hard to say this nebulous you're doing good or say this nebulous you're doing good or say this nebulous you're doing good or you're doing bad. Um because what is you're doing bad. Um because what is you're doing bad. Um because what is that based upon? If if it's a sliding that based upon? If if it's a sliding that based upon? If if it's a sliding scale based upon vibes, that's not scale based upon vibes, that's not scale based upon vibes, that's not great. And so companies love to have great. And so companies love to have great. And so companies love to have metrics. They love to have something metrics. They love to have something metrics. They love to have something that's a number where they can say
-
that's a number where they can say that's a number where they can say number go up, number good, number go number go up, number good, number go number go up, number good, number go down, number bad. down, number bad. down, number bad. But it's it's hard to quantify But it's it's hard to quantify But it's it's hard to quantify especially the the thought work that especially the the thought work that especially the the thought work that goes into software development with goes into software development with goes into software development with these numbers. But you know specifically these numbers. But you know specifically these numbers. But you know specifically lines of code well what does that do? It lines of code well what does that do? It lines of code well what does that do? It rewards verbosity. rewards verbosity. rewards verbosity. So think through whatever metric that So think through whatever metric that So think through whatever metric that you're using to evaluate a person. you're using to evaluate a person. you're using to evaluate a person. That's what you are going to reward. That's what you are going to reward. That's what you are going to reward. So you're saying I want to see lines of So you're saying I want to see lines of So you're saying I want to see lines of code. So what are you going to get from code. So what are you going to get from code. So what are you going to get from your employees? Lines of code. your employees? Lines of code. your employees? Lines of code. Does that mean that lines of code is the Does that mean that lines of code is the Does that mean that lines of code is the a good thing? No, it doesn't. In fact, a good thing? No, it doesn't. In fact, a good thing? No, it doesn't. In fact, when have you ever evaluated an when have you ever evaluated an when have you ever evaluated an application and said, you know what, application and said, you know what, application and said, you know what, this is this feels like a great this is this feels like a great this is this feels like a great application. I love how it works, but I application. I love how it works, but I application. I love how it works, but I just don't feel like it has enough lines just don't feel like it has enough lines just don't feel like it has enough lines of code in it. That's a silly thing. No of code in it. That's a silly thing. No of code in it. That's a silly thing. No one ever opens up an app and goes, I bet one ever opens up an app and goes, I bet one ever opens up an app and goes, I bet there's not enough lines of code in there's not enough lines of code in there's not enough lines of code in there. That's not how that works. They there. That's not how that works. They there. That's not how that works. They might they don't even say you know what might they don't even say you know what might they don't even say you know what that's got a lot of lines of code. I bet that's got a lot of lines of code. I bet that's got a lot of lines of code. I bet that's probably a great application. No that's probably a great application. No that's probably a great application. No one thinks that because lines of code one thinks that because lines of code one thinks that because lines of code don't matter. What matters is did you don't matter. What matters is did you don't matter. What matters is did you get the job done? Does it do what it's get the job done? Does it do what it's get the job done? Does it do what it's supposed to do effectively? So measuring supposed to do effectively? So measuring supposed to do effectively? So measuring lines of code rewards verbass or lines of code rewards verbass or lines of code rewards verbass or verbosity not maintainability.
-
verbosity not maintainability. verbosity not maintainability. So if I look at a method and it it's you So if I look at a method and it it's you So if I look at a method and it it's you know a good one to see this is AI right? know a good one to see this is AI right? know a good one to see this is AI right? So if I want to write a a little method So if I want to write a a little method So if I want to write a a little method that calls Dapper to call SQL, I just that calls Dapper to call SQL, I just that calls Dapper to call SQL, I just want a little method. I can do that in want a little method. I can do that in want a little method. I can do that in about four lines of code, maybe five for about four lines of code, maybe five for about four lines of code, maybe five for everything, right? So connecting the everything, right? So connecting the everything, right? So connecting the database, open the connection, um, and database, open the connection, um, and database, open the connection, um, and then actually getting the data, mapping then actually getting the data, mapping then actually getting the data, mapping it back to a a list of T, and then it back to a a list of T, and then it back to a a list of T, and then returning it. That's about four or five returning it. That's about four or five returning it. That's about four or five lines of code. If I ask AI for that, it lines of code. If I ask AI for that, it lines of code. If I ask AI for that, it might give me 30 or 50. And you know might give me 30 or 50. And you know might give me 30 or 50. And you know what? It's not adding value. What it's what? It's not adding value. What it's what? It's not adding value. What it's adding is a line of code, lots of lines adding is a line of code, lots of lines adding is a line of code, lots of lines of code. Now, if we were to compare of code. Now, if we were to compare of code. Now, if we were to compare those two and say, well, the AI wrote 30 those two and say, well, the AI wrote 30 those two and say, well, the AI wrote 30 lines of code. That must mean it's lines of code. That must mean it's lines of code. That must mean it's better. Well, that's not true. What it better. Well, that's not true. What it better. Well, that's not true. What it is is is more verbose and it's harder to is is is more verbose and it's harder to is is is more verbose and it's harder to maintain because there's more to maintain because there's more to maintain because there's more to maintain and some of that stuff is just maintain and some of that stuff is just maintain and some of that stuff is just not necessary. So if you look at you not necessary. So if you look at you not necessary. So if you look at you know if you look at people who are know if you look at people who are know if you look at people who are writing code if you see a person who writing code if you see a person who writing code if you see a person who writes lots and lots of lines of code writes lots and lots of lines of code writes lots and lots of lines of code and some of it's not necessary well it's and some of it's not necessary well it's and some of it's not necessary well it's actually more likely to cause bugs down actually more likely to cause bugs down actually more likely to cause bugs down the road and it's even harder to the road and it's even harder to the road and it's even harder to maintain. So that's not a good thing.
-
maintain. So that's not a good thing. maintain. So that's not a good thing. Which is typically why I say that junior Which is typically why I say that junior Which is typically why I say that junior developers solve simple problems with developers solve simple problems with developers solve simple problems with simple code bits and then mid-level simple code bits and then mid-level simple code bits and then mid-level developers tend to solve complex developers tend to solve complex developers tend to solve complex amounts co amounts of or problems with a amounts co amounts of or problems with a amounts co amounts of or problems with a significant number of lines of code and significant number of lines of code and significant number of lines of code and then senior developers solve complex then senior developers solve complex then senior developers solve complex problems with a few lines of code. problems with a few lines of code. problems with a few lines of code. Right? So that's where you see the Right? So that's where you see the Right? So that's where you see the progression is as you start getting progression is as you start getting progression is as you start getting better in software development, you better in software development, you better in software development, you write more code, but then at some point write more code, but then at some point write more code, but then at some point you tip over into writing better code you tip over into writing better code you tip over into writing better code that has less lines of code. Typically that has less lines of code. Typically that has less lines of code. Typically when you see a software developer come when you see a software developer come when you see a software developer come in who's a senior developer to work on a in who's a senior developer to work on a in who's a senior developer to work on a project, they'll start doing commits project, they'll start doing commits project, they'll start doing commits where maybe the the commit is removed where maybe the the commit is removed where maybe the the commit is removed 200 lines of code, added 15, right? 200 lines of code, added 15, right? 200 lines of code, added 15, right? You'll see commits like that where if You'll see commits like that where if You'll see commits like that where if you are measuring based upon lines of you are measuring based upon lines of you are measuring based upon lines of code, they're going the opposite code, they're going the opposite code, they're going the opposite direction. And yet what they're doing is direction. And yet what they're doing is direction. And yet what they're doing is making the code better by being more making the code better by being more making the code better by being more efficient. So lines of code is not a efficient. So lines of code is not a efficient. So lines of code is not a good metric. You're rewarding verbosity, good metric. You're rewarding verbosity, good metric. You're rewarding verbosity, not maintainability. Number two, not maintainability. Number two, not maintainability. Number two, features added. So what this does is it features added. So what this does is it features added. So what this does is it rewards you adding new features into the rewards you adding new features into the rewards you adding new features into the product. Well, what are the downsides of product. Well, what are the downsides of product. Well, what are the downsides of that? because it sounds good, right?
-
that? because it sounds good, right? that? because it sounds good, right? More features is good, right? Well, More features is good, right? Well, More features is good, right? Well, first of all, not necessarily. Don't first of all, not necessarily. Don't first of all, not necessarily. Don't just chase more features because more just chase more features because more just chase more features because more features equals harder to maintain features equals harder to maintain features equals harder to maintain because you have more things going on because you have more things going on because you have more things going on and it's also more confusing of a and it's also more confusing of a and it's also more confusing of a product which means the customers kind product which means the customers kind product which means the customers kind of get overwhelmed a bit. If you've um of get overwhelmed a bit. If you've um of get overwhelmed a bit. If you've um never worked with Photoshop and then you never worked with Photoshop and then you never worked with Photoshop and then you open it up for the first time, you go, open it up for the first time, you go, open it up for the first time, you go, there's a lot of stuff here. Same with there's a lot of stuff here. Same with there's a lot of stuff here. Same with Visual Studio, right? you open up Visual Visual Studio, right? you open up Visual Visual Studio, right? you open up Visual Studio and it's got all these menus and Studio and it's got all these menus and Studio and it's got all these menus and things and you're like, "Wow, there's a things and you're like, "Wow, there's a things and you're like, "Wow, there's a lot going on here." Um, so the first lot going on here." Um, so the first lot going on here." Um, so the first time you open up very uh intimidating. time you open up very uh intimidating. time you open up very uh intimidating. Well, that's what you know, feature Well, that's what you know, feature Well, that's what you know, feature bloat over time. That's what happens. bloat over time. That's what happens. bloat over time. That's what happens. And you know what? There's a place for And you know what? There's a place for And you know what? There's a place for that, but not in every app. And we can that, but not in every app. And we can that, but not in every app. And we can get more into that another episode. But get more into that another episode. But get more into that another episode. But when you reward features added, what when you reward features added, what when you reward features added, what you're rewarding is whenever your you're rewarding is whenever your you're rewarding is whenever your developers add something new. So what developers add something new. So what developers add something new. So what are they going to do? Add something new are they going to do? Add something new are they going to do? Add something new all the time. That means you'll get all the time. That means you'll get all the time. That means you'll get shoddy work because they're not focused shoddy work because they're not focused shoddy work because they're not focused on crafting the perfect feature is going on crafting the perfect feature is going on crafting the perfect feature is going to be, you know, spending two weeks to be, you know, spending two weeks to be, you know, spending two weeks working one feature that is going to be working one feature that is going to be working one feature that is going to be just right and making sure it's, you just right and making sure it's, you just right and making sure it's, you know, performant, making sure that it's know, performant, making sure that it's know, performant, making sure that it's going to be the right feature and all going to be the right feature and all going to be the right feature and all the rest. They don't care about that the rest. They don't care about that the rest. They don't care about that because they then get dinged for not because they then get dinged for not because they then get dinged for not putting out enough features. But if they putting out enough features. But if they putting out enough features. But if they can crank through that feature in two can crank through that feature in two can crank through that feature in two hours, they can move on to two more, hours, they can move on to two more, hours, they can move on to two more, three more in one day.
-
three more in one day. three more in one day. So, you're rewarding shoddy work, not So, you're rewarding shoddy work, not So, you're rewarding shoddy work, not long-term sustainability. Plus, you're long-term sustainability. Plus, you're long-term sustainability. Plus, you're rewarding them doing new things, which rewarding them doing new things, which rewarding them doing new things, which means they're going to ignore bug fixes means they're going to ignore bug fixes means they're going to ignore bug fixes because that's not a feature ad. So, because that's not a feature ad. So, because that's not a feature ad. So, then number three, we can kind of flip then number three, we can kind of flip then number three, we can kind of flip that around, rewarding bug fixes and that around, rewarding bug fixes and that around, rewarding bug fixes and saying, "Hey, I want you to fix bugs. saying, "Hey, I want you to fix bugs. saying, "Hey, I want you to fix bugs. The more bugs you fix, the more I'm The more bugs you fix, the more I'm The more bugs you fix, the more I'm going to reward you." Well, you're going to reward you." Well, you're going to reward you." Well, you're rewarding shoddy work because what rewarding shoddy work because what rewarding shoddy work because what you're rewarding is them fixing you're rewarding is them fixing you're rewarding is them fixing problems. And if they do the things the problems. And if they do the things the problems. And if they do the things the right way the first time, well then they right way the first time, well then they right way the first time, well then they don't get a reward. Even if you combine don't get a reward. Even if you combine don't get a reward. Even if you combine those two and say features and bugs those two and say features and bugs those two and say features and bugs fixed. Well, fixed. Well, fixed. Well, if they spend a long time creating a if they spend a long time creating a if they spend a long time creating a feature, then they're only doing one feature, then they're only doing one feature, then they're only doing one thing. And if they spend a short time thing. And if they spend a short time thing. And if they spend a short time doing that feature and then fix 10 bugs doing that feature and then fix 10 bugs doing that feature and then fix 10 bugs later on, you actually give them more later on, you actually give them more later on, you actually give them more rewards because they did 11 things where rewards because they did 11 things where rewards because they did 11 things where the reality is if they just didn't write the reality is if they just didn't write the reality is if they just didn't write the first time, they would have got only the first time, they would have got only the first time, they would have got only one thing done. So you reward them for one thing done. So you reward them for one thing done. So you reward them for basically messing up and so they're basically messing up and so they're basically messing up and so they're going to mess up. So you're actually going to mess up. So you're actually going to mess up. So you're actually rewarding them for creating bugs.
-
rewarding them for creating bugs. rewarding them for creating bugs. Now number four is kind of that that Now number four is kind of that that Now number four is kind of that that same concept of combining all of these same concept of combining all of these same concept of combining all of these and that's tickets closed. So maybe a and that's tickets closed. So maybe a and that's tickets closed. So maybe a ticket is a feature, maybe a ticket is a ticket is a feature, maybe a ticket is a ticket is a feature, maybe a ticket is a a bug, maybe a ticket is, you know, a a bug, maybe a ticket is, you know, a a bug, maybe a ticket is, you know, a tweak to a system. The problem is that tweak to a system. The problem is that tweak to a system. The problem is that you're rewarding speed over quality. So you're rewarding speed over quality. So you're rewarding speed over quality. So what's going to happen? Well, you're what's going to happen? Well, you're what's going to happen? Well, you're going to have a lot of work done in going to have a lot of work done in going to have a lot of work done in areas that aren't priorities because if areas that aren't priorities because if areas that aren't priorities because if I can see that, well, this ticket is I can see that, well, this ticket is I can see that, well, this ticket is going to be, I don't know, 10 minutes to going to be, I don't know, 10 minutes to going to be, I don't know, 10 minutes to do, but it's on something that no one's do, but it's on something that no one's do, but it's on something that no one's ever going to have a, you know, see or ever going to have a, you know, see or ever going to have a, you know, see or have an issue with, but it is submitted have an issue with, but it is submitted have an issue with, but it is submitted as a bug. you know, um, one person if as a bug. you know, um, one person if as a bug. you know, um, one person if they you on a leap year they have this they you on a leap year they have this they you on a leap year they have this bug on this one computer because it's, bug on this one computer because it's, bug on this one computer because it's, you know, based upon the name and and you know, based upon the name and and you know, based upon the name and and you go, I can fix that in 10 minutes. you go, I can fix that in 10 minutes. you go, I can fix that in 10 minutes. Well, but does it need to be fixed? Well, but does it need to be fixed? Well, but does it need to be fixed? That's a that's a super low priority. That's a that's a super low priority. That's a that's a super low priority. But yet, if I fix that, then I get But yet, if I fix that, then I get But yet, if I fix that, then I get credit for that and it's a quick fix.
-
credit for that and it's a quick fix. credit for that and it's a quick fix. So, I'll do that rather than working on So, I'll do that rather than working on So, I'll do that rather than working on the important thing where hundreds of the important thing where hundreds of the important thing where hundreds of customers being affected, but it's a customers being affected, but it's a customers being affected, but it's a more complicated fix. So, if you worked more complicated fix. So, if you worked more complicated fix. So, if you worked on that complicated fix, it might take on that complicated fix, it might take on that complicated fix, it might take you a week or two to get done and you you a week or two to get done and you you a week or two to get done and you might have to involve multiple people might have to involve multiple people might have to involve multiple people and that's one ticket for multiple weeks and that's one ticket for multiple weeks and that's one ticket for multiple weeks and that's going to not be good either. and that's going to not be good either. and that's going to not be good either. So, you're rewarding speed over quality. So, you're rewarding speed over quality. So, you're rewarding speed over quality. You're rewarding speed over priority of You're rewarding speed over priority of You're rewarding speed over priority of tickets. And so, what happens is you get tickets. And so, what happens is you get tickets. And so, what happens is you get what you look for. So, you're looking what you look for. So, you're looking what you look for. So, you're looking for tickets close. That's what you're for tickets close. That's what you're for tickets close. That's what you're gonna get. But is that what the end user gonna get. But is that what the end user gonna get. But is that what the end user wants? Again, going back to that example wants? Again, going back to that example wants? Again, going back to that example of always think about what's the end of always think about what's the end of always think about what's the end user looking for? The end user for the user looking for? The end user for the user looking for? The end user for the most part doesn't care about lines of most part doesn't care about lines of most part doesn't care about lines of code. Well, they definitely don't care code. Well, they definitely don't care code. Well, they definitely don't care about lines of code. They don't care about lines of code. They don't care about lines of code. They don't care about the number of tickets you closed. about the number of tickets you closed. about the number of tickets you closed. They don't care about the features added They don't care about the features added They don't care about the features added as much as you think they do because as much as you think they do because as much as you think they do because they want good features added. And if they want good features added. And if they want good features added. And if you put out halfbaked features, that's you put out halfbaked features, that's you put out halfbaked features, that's frustrating. If you put out too many frustrating. If you put out too many frustrating. If you put out too many features, that's frustrating. If you put features, that's frustrating. If you put features, that's frustrating. If you put out confusing features, that's out confusing features, that's out confusing features, that's frustrating. And bug fixes, yeah, they frustrating. And bug fixes, yeah, they frustrating. And bug fixes, yeah, they want their bugs fixed immediately. But want their bugs fixed immediately. But want their bugs fixed immediately. But if you're rewarding shoddy work, well if you're rewarding shoddy work, well if you're rewarding shoddy work, well then their bug is going to be fixed then their bug is going to be fixed then their bug is going to be fixed supposedly, but then it happens again a supposedly, but then it happens again a supposedly, but then it happens again a different way. Say another issue. And different way. Say another issue. And different way. Say another issue. And what you have is this everchanging list
-
what you have is this everchanging list what you have is this everchanging list of where the bug is. And that's of where the bug is. And that's of where the bug is. And that's frustrating too. So what the end user frustrating too. So what the end user frustrating too. So what the end user really wants is an application that really wants is an application that really wants is an application that works where when there is a problem, it works where when there is a problem, it works where when there is a problem, it gets addressed and addressed right. gets addressed and addressed right. gets addressed and addressed right. That's what they want. And if they want That's what they want. And if they want That's what they want. And if they want new features, they're going to want to new features, they're going to want to new features, they're going to want to see those fully executed on in a way see those fully executed on in a way see those fully executed on in a way where they're not buggy, where they make where they're not buggy, where they make where they're not buggy, where they make sense, where it fits in well the current sense, where it fits in well the current sense, where it fits in well the current product, etc. So you want to make sure product, etc. So you want to make sure product, etc. So you want to make sure that you're rewarding what you actually that you're rewarding what you actually that you're rewarding what you actually want to see. And what you actually want want to see. And what you actually want want to see. And what you actually want to see isn't lines of code, features to see isn't lines of code, features to see isn't lines of code, features added, bugs fixed, or tickets closed. added, bugs fixed, or tickets closed. added, bugs fixed, or tickets closed. That's not the right thing. So in all That's not the right thing. So in all That's not the right thing. So in all these metrics, you get what you measure. these metrics, you get what you measure. these metrics, you get what you measure. If you want more lines of code, that's If you want more lines of code, that's If you want more lines of code, that's what you get. If you want more features, what you get. If you want more features, what you get. If you want more features, that's what you get. So if you actually that's what you get. So if you actually that's what you get. So if you actually want to evaluate the results, what you want to evaluate the results, what you want to evaluate the results, what you get is a subpar solution and short-term get is a subpar solution and short-term get is a subpar solution and short-term gain at the expense of long-term gain at the expense of long-term gain at the expense of long-term problems. So if you're looking at just problems. So if you're looking at just problems. So if you're looking at just at just the results of these things, you at just the results of these things, you at just the results of these things, you know, you're not going to get the right know, you're not going to get the right know, you're not going to get the right the right things. So what is the right the right things. So what is the right the right things. So what is the right metric? To answer that, I think you need metric? To answer that, I think you need metric? To answer that, I think you need to look at what your actual goal is.
-
to look at what your actual goal is. to look at what your actual goal is. Like I said, your application you're Like I said, your application you're Like I said, your application you're building isn't really the end result building isn't really the end result building isn't really the end result you're looking for. Um the action your you're looking for. Um the action your you're looking for. Um the action your applications take are. You want to meet applications take are. You want to meet applications take are. You want to meet the need of the customer. So even the the need of the customer. So even the the need of the customer. So even the idea that your application has a cool idea that your application has a cool idea that your application has a cool form or cool look, that's not really the form or cool look, that's not really the form or cool look, that's not really the the goal you're looking for. What your the goal you're looking for. What your the goal you're looking for. What your actual goal is, can your user use the actual goal is, can your user use the actual goal is, can your user use the application? Well, yes, do they enjoy application? Well, yes, do they enjoy application? Well, yes, do they enjoy using it? Does it look nice? But, you using it? Does it look nice? But, you using it? Does it look nice? But, you know, sometimes we spend too much time know, sometimes we spend too much time know, sometimes we spend too much time tweaking font size. We need to think tweaking font size. We need to think tweaking font size. We need to think about the fact that the the login flow about the fact that the the login flow about the fact that the the login flow is just horrible. So, let's look at look is just horrible. So, let's look at look is just horrible. So, let's look at look at a couple examples. at a couple examples. at a couple examples. So these are all fictional. Um no, you So these are all fictional. Um no, you So these are all fictional. Um no, you know, no one issue um is from one know, no one issue um is from one know, no one issue um is from one situation, my my previous life, but a situation, my my previous life, but a situation, my my previous life, but a mobile app for a pizza shop. So we're mobile app for a pizza shop. So we're mobile app for a pizza shop. So we're going to build a mobile app for a pizza going to build a mobile app for a pizza going to build a mobile app for a pizza shop. The goal is to facilitate the shop. The goal is to facilitate the shop. The goal is to facilitate the customers buying pizzas. customers buying pizzas. customers buying pizzas. That's your goal. Okay? So your goal That's your goal. Okay? So your goal That's your goal. Okay? So your goal isn't to have tons of features. Your isn't to have tons of features. Your isn't to have tons of features. Your goal isn't to, you know, even have a goal isn't to, you know, even have a goal isn't to, you know, even have a flashiest app. Your goal is to flashiest app. Your goal is to flashiest app. Your goal is to facilitate the customer buying pizzas.
-
facilitate the customer buying pizzas. facilitate the customer buying pizzas. Now, what about a line of business Now, what about a line of business Now, what about a line of business application for a manufacturing plant? application for a manufacturing plant? application for a manufacturing plant? The goal is to capture and process the The goal is to capture and process the The goal is to capture and process the data of the business supporting the data of the business supporting the data of the business supporting the customers or the company's bottom line. customers or the company's bottom line. customers or the company's bottom line. So, maybe an internal app in a So, maybe an internal app in a So, maybe an internal app in a manufacturing plant. Been there, done it manufacturing plant. Been there, done it manufacturing plant. Been there, done it a bunch of times. And the goal there is a bunch of times. And the goal there is a bunch of times. And the goal there is to process, capture and process that to process, capture and process that to process, capture and process that data and support the business's bottom data and support the business's bottom data and support the business's bottom line. Now, if you build a software as a line. Now, if you build a software as a line. Now, if you build a software as a service that handles bulky emailing, the service that handles bulky emailing, the service that handles bulky emailing, the goal is to allow your customer to send goal is to allow your customer to send goal is to allow your customer to send out the emails they want to send. out the emails they want to send. out the emails they want to send. In all of these examples, the software In all of these examples, the software In all of these examples, the software facilitates the customer even if the facilitates the customer even if the facilitates the customer even if the customer is internal. So, that should be customer is internal. So, that should be customer is internal. So, that should be your goal to create software that your goal to create software that your goal to create software that supports the customer in everinccreasing supports the customer in everinccreasing supports the customer in everinccreasing way. With that goal in mind, here are way. With that goal in mind, here are way. With that goal in mind, here are some ways to track performance. Number some ways to track performance. Number some ways to track performance. Number one, customer satisfaction. Is the one, customer satisfaction. Is the one, customer satisfaction. Is the customer satisfied using your product? customer satisfied using your product? customer satisfied using your product? Do they like using your product? Is it Do they like using your product? Is it Do they like using your product? Is it helpful to them or is it frustrating?
-
helpful to them or is it frustrating? helpful to them or is it frustrating? Number two, the speed of customer Number two, the speed of customer Number two, the speed of customer completion. completion. completion. One of the things that people often One of the things that people often One of the things that people often overlook is how fast can a customer use overlook is how fast can a customer use overlook is how fast can a customer use your application and be done? Because your application and be done? Because your application and be done? Because typically your your application is not typically your your application is not typically your your application is not the center of the universe. It's the the center of the universe. It's the the center of the universe. It's the means to an end. It's the the tool that means to an end. It's the the tool that means to an end. It's the the tool that your enduser uses to do something else. your enduser uses to do something else. your enduser uses to do something else. I worked for a company once where we I worked for a company once where we I worked for a company once where we were doing I'm going to genericize this were doing I'm going to genericize this were doing I'm going to genericize this a little bit. We were doing data entry a little bit. We were doing data entry a little bit. We were doing data entry um and it was a high volume data entry um and it was a high volume data entry um and it was a high volume data entry and when I first started working on the and when I first started working on the and when I first started working on the application I was young. When I first application I was young. When I first application I was young. When I first started working on the application, I started working on the application, I started working on the application, I created really cool forms and got created really cool forms and got created really cool forms and got roasted for them by the people who were roasted for them by the people who were roasted for them by the people who were earning at the time like $10 an hour, earning at the time like $10 an hour, earning at the time like $10 an hour, but they were the ones using my but they were the ones using my but they were the ones using my application and they roasted me for it. application and they roasted me for it. application and they roasted me for it. And I'm like, well, this is a great And I'm like, well, this is a great And I'm like, well, this is a great form. And they're like, it's not usable. form. And they're like, it's not usable. form. And they're like, it's not usable. And the reason why is because it relied And the reason why is because it relied And the reason why is because it relied on using a mouse. And I expected a form on using a mouse. And I expected a form on using a mouse. And I expected a form where you'd hit next. But that's not where you'd hit next. But that's not where you'd hit next. But that's not what they wanted to do because speed of what they wanted to do because speed of what they wanted to do because speed of completion was really important. When completion was really important. When completion was really important. When you have a stack that is literally three you have a stack that is literally three you have a stack that is literally three foot tall on your desk of papers you foot tall on your desk of papers you foot tall on your desk of papers you have to process, you don't want to spend have to process, you don't want to spend have to process, you don't want to spend time looking at the screen going click time looking at the screen going click time looking at the screen going click next. That's not you. What you want is next. That's not you. What you want is next. That's not you. What you want is to keep your head down at your keyboard to keep your head down at your keyboard to keep your head down at your keyboard looking at your your documents and going
-
looking at your your documents and going looking at your your documents and going type type type type type type enter type type and just move through enter type type and just move through enter type type and just move through them fast. So I rewrote the entire thing them fast. So I rewrote the entire thing them fast. So I rewrote the entire thing and it wasn't as pretty, but you know and it wasn't as pretty, but you know and it wasn't as pretty, but you know what? Everything was focused on speed of what? Everything was focused on speed of what? Everything was focused on speed of completion. I got out of the way. My completion. I got out of the way. My completion. I got out of the way. My application got out of the way. That's application got out of the way. That's application got out of the way. That's how I knew my application was being how I knew my application was being how I knew my application was being successful is I would allow my my end successful is I would allow my my end successful is I would allow my my end users to move through the application users to move through the application users to move through the application faster than before. And all of a sudden faster than before. And all of a sudden faster than before. And all of a sudden those same people loved me because those same people loved me because those same people loved me because their day was already misery. They were their day was already misery. They were their day was already misery. They were in a lowpaying job that was miserable in a lowpaying job that was miserable in a lowpaying job that was miserable and putting data into the computer over and putting data into the computer over and putting data into the computer over and over and over again all day long. By and over and over again all day long. By and over and over again all day long. By allowing them to move faster, they were allowing them to move faster, they were allowing them to move faster, they were able to get their job done quicker, able to get their job done quicker, able to get their job done quicker, which meant their bosses were happier which meant their bosses were happier which meant their bosses were happier with them. They got better raises. They with them. They got better raises. They with them. They got better raises. They had a better situation because my had a better situation because my had a better situation because my application got out of the way. So speed application got out of the way. So speed application got out of the way. So speed of customer completion is a really big of customer completion is a really big of customer completion is a really big metric. Number three, feature metric. Number three, feature metric. Number three, feature utilization.
-
utilization. utilization. There are some applications that have so There are some applications that have so There are some applications that have so many features. many features. many features. Microsoft is one of the biggest Microsoft is one of the biggest Microsoft is one of the biggest they have the most problems with this. they have the most problems with this. they have the most problems with this. They're the biggest offender. So when They're the biggest offender. So when They're the biggest offender. So when you open up Microsoft Word, they have you open up Microsoft Word, they have you open up Microsoft Word, they have tried Streamline. They have tried tried Streamline. They have tried tried Streamline. They have tried changing it. Look at Microsoft Word. We changing it. Look at Microsoft Word. We changing it. Look at Microsoft Word. We all, you know, we probably all know what all, you know, we probably all know what all, you know, we probably all know what it looks like, but have you ever it looks like, but have you ever it looks like, but have you ever actually gone through and looked at all actually gone through and looked at all actually gone through and looked at all the features? Have you ever actually the features? Have you ever actually the features? Have you ever actually used all of them? There are so many that used all of them? There are so many that used all of them? There are so many that I never even see. I never even see. I never even see. There's there's ribbons, whole ribbons There's there's ribbons, whole ribbons There's there's ribbons, whole ribbons that I don't even go to. So, there's so that I don't even go to. So, there's so that I don't even go to. So, there's so many features there that aren't being many features there that aren't being many features there that aren't being used by the vast majority of people. And used by the vast majority of people. And used by the vast majority of people. And yet, they're being supported. They're yet, they're being supported. They're yet, they're being supported. They're being updated. Now, having lots of being updated. Now, having lots of being updated. Now, having lots of features is not necessarily a bad thing. features is not necessarily a bad thing. features is not necessarily a bad thing. Microsoft Word is being used by probably Microsoft Word is being used by probably Microsoft Word is being used by probably millions of people worldwide. And so millions of people worldwide. And so millions of people worldwide. And so yes, there are probably still a lot of yes, there are probably still a lot of yes, there are probably still a lot of people using every feature, but when you people using every feature, but when you people using every feature, but when you build your application, you should look build your application, you should look build your application, you should look at how your features are being utilized at how your features are being utilized at how your features are being utilized because what you'll find is some just because what you'll find is some just because what you'll find is some just aren't being used. And that's one of a aren't being used. And that's one of a aren't being used. And that's one of a couple different reasons. One is people couple different reasons. One is people couple different reasons. One is people don't know it's there or two, they know don't know it's there or two, they know don't know it's there or two, they know it's there, but they don't want to use it's there, but they don't want to use it's there, but they don't want to use it because they have a better way of it because they have a better way of it because they have a better way of doing things. So look at those things, doing things. So look at those things, doing things. So look at those things, figure out why. or number three is just figure out why. or number three is just figure out why. or number three is just it's a dumb feature. Okay, so but look it's a dumb feature. Okay, so but look it's a dumb feature. Okay, so but look at why. Talk to people figure it out
-
at why. Talk to people figure it out at why. Talk to people figure it out because that's one of your goals you because that's one of your goals you because that's one of your goals you should tracking is feature utilization. should tracking is feature utilization. should tracking is feature utilization. Why are we doing work on something Why are we doing work on something Why are we doing work on something that's not being used? Number four, of that's not being used? Number four, of that's not being used? Number four, of course, is application downtime. If your course, is application downtime. If your course, is application downtime. If your application is down and it's your application is down and it's your application is down and it's your application's fault, right? If the application's fault, right? If the application's fault, right? If the server goes down, unless you caused it, server goes down, unless you caused it, server goes down, unless you caused it, your application caused it, then it's your application caused it, then it's your application caused it, then it's not your fault. But if your application not your fault. But if your application not your fault. But if your application is down because of bugs, if users can't is down because of bugs, if users can't is down because of bugs, if users can't use your application because it crashes, use your application because it crashes, use your application because it crashes, that's something you need to track. that's something you need to track. that's something you need to track. That's a goal you should have is to have That's a goal you should have is to have That's a goal you should have is to have less and less and less downtime because less and less and less downtime because less and less and less downtime because of your application. of your application. of your application. Now, this is where things get tricky. Now, this is where things get tricky. Now, this is where things get tricky. Notice that all of these are team Notice that all of these are team Notice that all of these are team metrics. They're not really individual metrics. They're not really individual metrics. They're not really individual metrics. That's because metrics. That's because metrics. That's because it's the best way to actually evaluate a it's the best way to actually evaluate a it's the best way to actually evaluate a team. If a developer isn't doing well, team. If a developer isn't doing well, team. If a developer isn't doing well, the team should be incentivized to help the team should be incentivized to help the team should be incentivized to help them get better. Senior developers them get better. Senior developers them get better. Senior developers should be coaching junior developers. should be coaching junior developers. should be coaching junior developers. Now, I know there's a lot in here that Now, I know there's a lot in here that Now, I know there's a lot in here that you're like, "Oo, wait a minute. I've you're like, "Oo, wait a minute. I've you're like, "Oo, wait a minute. I've done team projects before. There's done team projects before. There's done team projects before. There's always one slacker that's not pulling always one slacker that's not pulling always one slacker that's not pulling their weight." And yes, there needs to their weight." And yes, there needs to their weight." And yes, there needs to be some individual things as well. I'm be some individual things as well. I'm be some individual things as well. I'm not disagreeing there. But really, if not disagreeing there. But really, if not disagreeing there. But really, if you're actually a team, if you're you're actually a team, if you're you're actually a team, if you're actually working on the same project, actually working on the same project, actually working on the same project, you should be measured as a team. That you should be measured as a team. That you should be measured as a team. That does not mean that you need to be, you does not mean that you need to be, you does not mean that you need to be, you know, know, know, assigning these to raises or to, you assigning these to raises or to, you assigning these to raises or to, you know, to punishments based upon how the know, to punishments based upon how the know, to punishments based upon how the team is doing. But your team should be
-
team is doing. But your team should be team is doing. But your team should be tracking these things and talking about tracking these things and talking about tracking these things and talking about it and figuring out how to make these it and figuring out how to make these it and figuring out how to make these things better. They should be in front things better. They should be in front things better. They should be in front of your team at all times. Now, there of your team at all times. Now, there of your team at all times. Now, there are a few things you can do in are a few things you can do in are a few things you can do in individual level. For instance, if a individual level. For instance, if a individual level. For instance, if a person is consistently the cause of person is consistently the cause of person is consistently the cause of bugs, downtime, poor customer bugs, downtime, poor customer bugs, downtime, poor customer satisfaction or other issues, that can satisfaction or other issues, that can satisfaction or other issues, that can be noted. Also, if a person performs be noted. Also, if a person performs be noted. Also, if a person performs well in comparison to the rest of the well in comparison to the rest of the well in comparison to the rest of the team, that too can be noted. However, team, that too can be noted. However, team, that too can be noted. However, there's not a clear metric that will there's not a clear metric that will there's not a clear metric that will give you a clear insight into a person's give you a clear insight into a person's give you a clear insight into a person's performance. Otherwise, people will performance. Otherwise, people will performance. Otherwise, people will focus on that specific metric to the focus on that specific metric to the focus on that specific metric to the detriment of both the team and the detriment of both the team and the detriment of both the team and the overall goal of the product. This is why overall goal of the product. This is why overall goal of the product. This is why return on investment is so hard to return on investment is so hard to return on investment is so hard to measure for an individual developer. measure for an individual developer. measure for an individual developer. It's also why it's almost impossible to It's also why it's almost impossible to It's also why it's almost impossible to identify if AI is having a positive identify if AI is having a positive identify if AI is having a positive impact on ROI unless you're evaluating a impact on ROI unless you're evaluating a impact on ROI unless you're evaluating a team like I outlined above. Then you can team like I outlined above. Then you can team like I outlined above. Then you can see how AI impacts the team's results.
-
see how AI impacts the team's results. see how AI impacts the team's results. So if your team is slowly moving this So if your team is slowly moving this So if your team is slowly moving this direction and you bring AI in, is it in direction and you bring AI in, is it in direction and you bring AI in, is it in you know moving faster towards your you know moving faster towards your you know moving faster towards your goals or is it hurting your goals? Again goals or is it hurting your goals? Again goals or is it hurting your goals? Again remember not lines of code, not features remember not lines of code, not features remember not lines of code, not features added but the ones where we actually added but the ones where we actually added but the ones where we actually have find value in that the customer have find value in that the customer have find value in that the customer satisfaction, the speed of customer satisfaction, the speed of customer satisfaction, the speed of customer completion, the feature utilization and completion, the feature utilization and completion, the feature utilization and the application downtime. So when you the application downtime. So when you the application downtime. So when you see people say they're writing code see people say they're writing code see people say they're writing code faster or getting more features out the faster or getting more features out the faster or getting more features out the door, remember that these are terrible door, remember that these are terrible door, remember that these are terrible metrics and don't actually indicate a metrics and don't actually indicate a metrics and don't actually indicate a positive impact towards the actual goal. positive impact towards the actual goal. positive impact towards the actual goal. If you want to see if they're If you want to see if they're If you want to see if they're succeeding, look at the end results. Is succeeding, look at the end results. Is succeeding, look at the end results. Is the product easier to use? Are the new the product easier to use? Are the new the product easier to use? Are the new features being used heavily? Is the features being used heavily? Is the features being used heavily? Is the product more stable? Are the customers product more stable? Are the customers product more stable? Are the customers finding that their application is more finding that their application is more finding that their application is more valuable now than it was before? Is the valuable now than it was before? Is the valuable now than it was before? Is the application running more? Is it have application running more? Is it have application running more? Is it have less downtime than before? These this is less downtime than before? These this is less downtime than before? These this is how you measure success. Okay, so how you measure success. Okay, so how you measure success. Okay, so there's not going to be one here is the there's not going to be one here is the there's not going to be one here is the metric to track. It's a lot more metric to track. It's a lot more metric to track. It's a lot more difficult than that. But tracking first difficult than that. But tracking first difficult than that. But tracking first the team metrics and then looking at the the team metrics and then looking at the the team metrics and then looking at the individual performance inside those team individual performance inside those team individual performance inside those team metrics can be much more helpful and can metrics can be much more helpful and can metrics can be much more helpful and can still give you some things to measure still give you some things to measure still give you some things to measure while at the same time you got to while at the same time you got to while at the same time you got to acknowledge the reality of there's no acknowledge the reality of there's no acknowledge the reality of there's no one single number you can say that's the
-
one single number you can say that's the one single number you can say that's the one. All right, thanks for listening and one. All right, thanks for listening and one. All right, thanks for listening and as always I am Tim Corey.
Summary
Evaluating developer performance solely on lines of code, features added, or tickets closed is a flawed approach. These metrics fail to capture the complexity of software development, which involves more than just writing code. Instead, focus on metrics that reward thoughtful work and the *impact* of a developer's contributions.