TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

How Do You Know a Developer Is Doing a Good Job?

217 pointsby beekumsover 8 years ago

54 comments

WalterBrightover 8 years ago
Back when I worked at Boeing, I was once compared poorly against another engineer who was always down on the factory floor when called, any time, whenever there was a problem with his stuff. The thing was, I was not called down to the factory floor because my stuff worked.<p>I&#x27;d say a developer is doing a good job when you, as a manager, are not having him come in at all hours to fix problems with his stuff.<p>Other signs of a good developer are you don&#x27;t have to micromanage him, and he&#x27;s more of a partner helping you get things done rather than a subordinate you&#x27;ve got to spell things out for and check up on.<p>I.e. when he&#x27;s on the job and you can relax and concentrate on other things, you&#x27;ve got a good &#x27;un.
评论 #13613923 未加载
评论 #13615261 未加载
评论 #13615512 未加载
评论 #13613755 未加载
评论 #13616425 未加载
评论 #13613821 未加载
评论 #13615470 未加载
评论 #13618246 未加载
评论 #13618010 未加载
评论 #13618730 未加载
评论 #13616031 未加载
marcus_holmesover 8 years ago
I have this problem. I have no solution.<p>My experience tells me that the best developers are: - generous with their time to other devs<p>- not defensive about their code<p>- able to solve complex problems fast, and explain those solutions to other people<p>- able to focus really intensely<p>- enthusiastic about learning new things<p>- lazy about boring stuff (to the extent that they will spend 4 hours looking for a shortcut that saves them doing 1 hour of boring stuff)<p>but some of the most productive programmers I&#x27;ve worked with treated the entire thing as a job that they did from 9 to 5 to pay the bills, and their real interest lay elsewhere<p>and some of the best programmers I&#x27;ve seen were the hardest to manage, and ultimately were a net negative to the team<p>Coding is creative - there are an infinite number of ways to solve any given problem. This is why it&#x27;s so hard to predict and manage, and resists quantification.<p>&lt;edit for formatting&gt;
评论 #13614683 未加载
评论 #13613861 未加载
评论 #13614198 未加载
randomdrakeover 8 years ago
One quality of good developers not often brought up is empathy. It&#x27;s absent from this article and all of the comments thus far.<p>Empathy is quite important in a vast array of creative endeavors. Development is not an exception in my opinion. It&#x27;s the trait that allows developers to know what a person needs even if it isn&#x27;t what they&#x27;re asking for.<p>Being able to put yourself into the shoes of another busy person working in a domain you may have little familiarity with is difficult. Trying to solve technical problems for that person when they are not technical is harder. Efficiently using that person&#x27;s time and getting to the root of what the actual problem is, not necessarily what they ask you to do, is harder still.<p>Getting to the point where you know how to ask the minimal amount of questions to understand the actual problem that needs solving takes practice and experience. It requires good listening and comprehension skills, and comes from caring enough in a person&#x27;s problems to get to the root of the issue; an exercise in empathy.<p>By getting to the root of the problem you end up with better, more useful software and solutions, with less iterations. Even having the conversations to achieve these understandings requires knowing your tools well enough to gauge what&#x27;s possible, an innate curiosity to care enough to dive into whatever it is that needs solving, and enough experience to know when to say &quot;yes,&quot; &quot;yes, but,&quot; &quot;no,&quot; or &quot;I don&#x27;t know,&quot; to ideas. And to not only say it, but mean it, and know it to be true.<p>Additionally, developers who are good at actually solving problems for people must be creative enough to improve upon that situation without being told how.<p>All of these traits are excellent separately, but combined produce developers who solve problems and create value, not developers that just write code.<p>Empathy is a trait of some of the best developers I&#x27;ve ever met or worked with and a lack of empathy has been a strong indicator of mediocre, bad, or hard to work with developers.
评论 #13615140 未加载
评论 #13618197 未加载
评论 #13614559 未加载
评论 #13615888 未加载
ADanFromCanadaover 8 years ago
Been a coder and engineer for 12+ years, now a manager of a team of 8.<p>I evaluate my team on their ability to ship regularly and with a consistently low bug count. I encourage communication regularly and pair programming and all that. And I am around and I listen and interact.<p>It is pretty easy to tell when someone isn&#x27;t pulling their weight or is having problems contributing based on the interactions within the team. People naturally express frustration (as well as praise)... you just have to be an active, hands on (not micromanaging necessarily) manager.<p>In addition, I specifically look for growth mentality when hiring and cultivate it within the team. That way I can be confident that when a weakness or need for improvement is identified, the person will work on it. It&#x27;s my job as manager to properly address it and motivate the person.<p>In my experience, KPIs and other measurables (including even basic timesheets) are always gamed by developers. And anyway there are so many intangible and abstract aspects to doing this job, especially as you advance in your career, that it&#x27;s arguable that the most important parts of the work aren&#x27;t even measurable in any real sense in the first place. That&#x27;s the art.
andrewstuartover 8 years ago
There is quite simply no way to quantify in a scientific way how &quot;good&quot; a developer is.<p>Whether or not a developer is &quot;good&quot;, and &quot;how good&quot;, is purely subjective.<p>This is the core problem at the heart of all recruiting, and no matter how hard people try to quantify, test, assess and interview, it is still not possible to make an objective statement about how &quot;good&quot; a developer is.<p>Part of the issue is that &quot;good&quot; depends on a vast array of factors: the task at hand, the developers experience with the specific technologies, how they feel today, who the judge is, if the developer is feeling good or bad today, if the developer is interested in this specific task etc etc etc etc it goes on and on.<p>And one of the worst traps to fall into is to think that a developers &quot;ability to code&quot; in some way is a really good measure of how good that developer is. i.e. how quickly can you reverse an array, sort of dict of arrays etc. To my mind this is only a certain portion of what goes to make a great developer, and not even necessarily a very large or important portion. So many other things are important in making &quot;a good developer&quot; that assessing substantially on code seems misguided.<p>Most importantly, &quot;good&quot; to me, is definitely not the same as &quot;good&quot; to you, because the important things for you are likely completely different to the important things to me.<p>I wrote a post about some of the characteristics of a great software developer, but even this does little to nothing in terms of providing a &quot;science&quot; for the evaluation of how good a programmer is.<p><a href="http:&#x2F;&#x2F;www.supercoders.com.au&#x2F;blog&#x2F;50characteristicsofagreatsoftwaredeveloper.shtml" rel="nofollow">http:&#x2F;&#x2F;www.supercoders.com.au&#x2F;blog&#x2F;50characteristicsofagreat...</a><p>The best description for a good programmer that I have ever heard is from Joel Spolsky who suggested to employ people who are &quot;smart and get stuff done&quot;. Interestingly, almost no employers take this approach to recruiting.
评论 #13613378 未加载
评论 #13613773 未加载
评论 #13613494 未加载
sidllsover 8 years ago
The most important thing from my perspective is how well he or she develops in the context of the entire team. In no particular order a good developer will:<p>1. raise issues when other developers suggest solutions (even if just to play devil&#x27;s advocate) to encourage discussion<p>2. be willing to have his or her opinion overruled by consensus, understand why, and proceed with contributing to implementation of it as well as if it hadn&#x27;t been<p>3. accept constructive criticism in reviews of his code (and can make counter-arguments when appropriate without becoming defensive)<p>4. improve his or her craft by acknowledging and correcting errors in code and design when he or she makes them (nobody is perfect, and every experience level of engineer will make mistakes in judgement, and errors in logic, structure, and design occasionally), but generally make fewer such errors as time passes<p>5. seek out opportunities to share expertise, experience, and advice with co-workers<p>I&#x27;d say if most of these points are hit, a developer is doing a good job.
评论 #13615611 未加载
OliverJonesover 8 years ago
This article is right about one thing: managers should avoid mechanical metrics (lines of code cranked, bugs fixed, etc.) as a way of measuring developer competence.<p>Many developers are good at figuring out constraints and optimizing around them. It&#x27;s a game for us. We&#x27;re more productive when we&#x27;re playing that game on behalf of our businesses and customers than on our own behalf. But if you award us points (dollars) based on optimizing metrics for ourselves, we&#x27;ll probably do it. At the very least we&#x27;ll have to spend mental energy resisting the temptation.<p>These kinds of metrics inevitably generate perverse incentives.<p>It&#x27;s true that developers should remember that debugging code is harder than creating code. We should avoid creating code that is right at the limit of our cognitive capacity to understand. When we do create code like that, we&#x27;ve created code that&#x27;s a stretch to debug.<p>There&#x27;s a management corollary: don&#x27;t use the most ingenious incentives you can imagine to motivate your krewe. You&#x27;ll have a hard time debugging the incentives. And your krewe may exploit your buggy incentives in the meantime.<p>And, in both cases, imagine what will happen when your super-clever code or incentive scheme is handed off to your successor.<p>Oh? You want to keep doing exactly what you&#x27;re doing now for the rest of your career? OK, go for it.
评论 #13616057 未加载
wvhover 8 years ago
I think I often get rated poorer by management compared to others because I tend – by nature – to focus deeply on complex problems (Donald Knuth-style), whereas a lot of other developers communicate more, answer emails promptly, go to a lot of meetings and manage to cut &#x27;n&#x27; paste together some code to show results the very next day. So you do get respect from fellow developers for your skills and experience, but managers don&#x27;t really value you.<p>Nowadays there seems to be more and more focus on quick results (&quot;profit&quot;) in development rather than an effort to have a more lasting solid base to build on; a lot of software is in eternal &quot;prototype&quot; phase, like the &quot;under construction&quot; state of web sites around 2000. I guess it echoes the general business mindset of quick short-term profit over lasting quality.<p>I think that pretty consistently the wrong people are chosen or promoted to lead or manage development projects; they are rarely the most knowledgeable of developers – if they know anything technical at all – and definitely even rarer do they possess the kind of personality that can actually stimulate and motivate others. I guess that&#x27;s the curse of being more like an engineer as opposed to a business person; you tend to end up in a position where the people higher up don&#x27;t necessary share the same motivations and goals, but have more control over your destiny than you&#x27;d like.
评论 #13614615 未加载
评论 #13614724 未加载
评论 #13615253 未加载
评论 #13615919 未加载
评论 #13614702 未加载
jrumbutover 8 years ago
I would say the first step to competency in recruiting and managing developers is if you can tell when a developer is doing a terrible job. That&#x27;s more important and easier, and more prone to objective measures. Someone who commits 100 lines a week may be better than someone who commits 200 lines, but the one who hasn&#x27;t committed in a month may need some help getting things together.<p>With hiring as difficult as it is, developers who make any reasonable positive contribution are probably worth keeping.<p>From there, as a manager, the best thing to do is focus on getting the best out of each developer, and keeping the business profitable enough to be able to give raises that would make anyone happy.
评论 #13613998 未加载
SatvikBeriover 8 years ago
I manage a data science team, and currently I measure on 4 axes:<p>–Technical (ability to effectively solve problems)<p>–Business (picking which problems to solve)<p>–Productivity (things done to improve workflows, automate processes, etc. of themselves &amp; team)<p>–Team (teaching, hiring, training)<p>This works pretty well. I find that these skills are multiplicative, so someone&#x27;s impact on the team is reasonably well-approximated by taking an average of these scores. I also find many things you might expect, e.g. variance in technical skill is pretty high, talented engineers usually develop high technical skills before high skills in the other domains, senior engineers tend to be force multipliers by being exceptional at the non-technical skills, etc.
评论 #13613761 未加载
评论 #13613767 未加载
emodendroketover 8 years ago
&gt; The risk with this approach is that the criteria are vague from a developer’s point of view. They can’t really know what their manager is thinking. There is now an incentive to focus on learning to sell themselves to their manager instead of focusing on becoming a better developer.<p>Yeah, no kidding. Welcome to white collar work.
mikekcharover 8 years ago
You can measure:<p>Junior Developer: By how much more someone else was willing to pay them.<p>Intermediate Developer: By how screwed you are after they leave.<p>Senior Developer: By how screwed you&#x27;re not after they leave.
评论 #13615116 未加载
评论 #13615999 未加载
cygnedover 8 years ago
Managing a team as a tech lead (that is, I also develop a lot).<p>I primarily use two techniques; simple project management and communication.<p>Our developers are not forced to work on the project nor are they assigned by anyone else; they are in the team because they want to work on it (and they can leave at any time). The project management is simple; we have a backlog and engineers are (mainly) free to choose what to work on. We have priority indicators and developers tend to work on things they are already familiar with, but in general one can choose what sounds interesting.<p>How do we (we are two tech leads) determine if engineers are doing a good job? On the code level, we are doing reviews (everyone can review everyone else&#x27;s code) and give feedback. We are talking a lot with each other, asking about progress, blockers and new ideas. We also talk about technology in general. We encourage our engineers to look at other things and try new ideas.<p>And the whole project management is transparent; we as tech leads do most of the communication with the business so that developers can focus on their stuff but we report everything in great detail to them.<p>We do not use metrics like bug counts. Everyone writes code with bugs. What I recognize is whether engineers can take responsibility for their stuff or not. We &quot;teach&quot; them that mistakes are nothing bad; they are encouraged to say &quot;Hey, that&#x27;s my fault, I will fix it&quot;.<p>I think we, couldn&#x27;t use this approach with 20 or 30 developers, but in a small team it as really working for us. And as I see it, our developers have a great time and work and a developer-friendly environment.
评论 #13625466 未加载
jonduboisover 8 years ago
Only a really good, really savvy manager can tell - The manager needs to be more knowledgeable (especially architectural knowledge) than any of the engineers working under them - That almost never happens. I&#x27;ve worked for maybe 10 different tech companies in my career so far and I&#x27;ve only had one manager who I considered to fit the description.<p>Most of the time, a manager might be really good in a very narrow area but they don&#x27;t have the variety in experience or critical thinking ability to provide good leadership; they often just follow trends and patterns without actually thinking them through - They deal with everything as though it were inside neat little boxes and regurgitate blanket statements made by &#x27;thought leaders&#x27; as the basis of all their decisions.
评论 #13614780 未加载
quadcoreover 8 years ago
A software developer is doing a good job when his bottom-up programming skills are good. The most common mistake a beginner do is that he works top-down. The way you know someone works top-down is that he does not or don&#x27;t want to rewrite existing code whereas he should be doing that a big amount of his time.
评论 #13615497 未加载
flukusover 8 years ago
&gt; Can they write good code?<p>This is the most important but also impossible for non-technical managers, or even technical ones that were never that good themselves.<p>Are there companies out there the do independent audits of developers&#x2F;code quality? If always wondered if there is a business opportunity there.
评论 #13613530 未加载
评论 #13613496 未加载
评论 #13614995 未加载
yasonover 8 years ago
Programmers are like art: you can&#x27;t exactly pinpoint why a particular painting is good but you can usually still put different paintings in rough order of how good they are. It&#x27;s never that one brush stroke that reveals the quality but the complete picture.<p>With programmers, there are indirect, subtle signs which may or may not give clues. Sometimes they only validate some good or bad aspects of the programmer.<p>I think that to really know the only way is to work with the programmer and see what works and what doesn&#x27;t. Generally the team does have a good notion of who are good and who are just great, although a manager might want to use the information from that source with some grain of salt.<p>However, it&#x27;s easier to pinpoint programmers which aren&#x27;t good, or not completely good. The guy who doesn&#x27;t get things done. The guy who breaks more stuff than he fixes. The guy who rewrites everyone else&#x27;s code as the first step in any project or the guy who&#x27;s always asking help from others for simple things. Or the guy who is actually a good programmer but always ends up doing something a bit different than what the important things to do are. Or the good programmer who is relentless in insisting he&#x27;s right because &quot;that&#x27;s what the facts are&quot; while completely ignoring social issues such as understanding that a dictatorian attitude doesn&#x27;t fly well with other programmers. These guys still do provide some value but you can see these shortcomings from far away. Then there are the guys who actually produce negative values, i.e. taking away others&#x27; time merely by being employed.
agounarisover 8 years ago
Once upon a time, I was refused a salary raise because I&#x27;ve told that few of my commits had really critical bugs. On the same time another colleague was promoted to team lead because their app was flawless. A small difference here. I&#x27;ve worked on multiple complicated legacy parts of the platform used by lots of people and the other team was building a single web api from scratch... I quit a month later...
j_sover 8 years ago
Gregory Brown has fairly recently picked up the torch publicly reminding developers that the actual development is the smallest part of their job:<p><a href="https:&#x2F;&#x2F;twitter.com&#x2F;practicingdev" rel="nofollow">https:&#x2F;&#x2F;twitter.com&#x2F;practicingdev</a> (on haitus)<p>&quot;<i>the thing that motivates me is inspiring developers to think holistically about software dev</i>&quot;<p>&quot;<i>The value you bring to your work is not measured in how much code you produce, but in helping other people solve real problems.</i>&quot;<p>etc.<p>Semi-obligatory book plug: <a href="https:&#x2F;&#x2F;amzn.com&#x2F;dp&#x2F;B01LYRCGA8" rel="nofollow">https:&#x2F;&#x2F;amzn.com&#x2F;dp&#x2F;B01LYRCGA8</a><p>--<p>Specific to this discussion, a big part of success as a developer is effectively communicating that one is doing a good job... if anyone has to ask this question, said developer has already lost!<p>The OP&#x27;s question is definitely relevant to managers, and I appreciate the practicality of the discussion for both perspectives - what to do and&#x2F;or what to look for.
razzimatazzover 8 years ago
Do we really need to know, in non-subjective way? In a 1000-person company, how many persons have their performance calculated in a non-subjective and vaguely accurate way?<p>It must surely only be in sales - where sales volume is a great measure, and I think sales people accept that they are allowed and expected to learn the cut-throat techniques to gameify the situation and win. If we want to force the corresponding personality traits that make such measurement reasonable onto developers - then OK I think story points achieved (aka velocity) is an equivalent measure we can take.<p>An experienced twisted senior dev would know how to maximise their score there, and make a junior dev look atrocious in comparison, but if its OK for sales then its OK for devs?<p>(my actual opinion - being subjective and relying on the opinion of good managers is fine. The developer personality matches this.)
joeld42over 8 years ago
Best way I&#x27;ve seen is to have peer code reviews. Have different people from across the team review each others checkins. Every. single. checkin. It can be a quick &quot;buddy check&quot;, or a longer code review for a big meaty feature. It&#x27;s totally fine if a junior dev reviews a senior dev&#x27;s checkins. This has the side effect of cross-training, catching bugs, preventing things from getting territorial, communication, and learning.<p>If everyone is looking at everyone&#x27;s code, the team will form a pretty accurate opinion (at least within the team&#x27;s context of what makes good code.)
hahamrfunnyguyover 8 years ago
My metrics are the following:<p>- being able estimate how long the work will take* - being able to deliver projects on-time - effectively communicating their status - quality of the work delivered - deliverables meet all stated business and architecture requirements - being able to function effectively on the team<p>*If an developer comes to me with an estimate that seems really low or high then that&#x27;s a good time for a conversation to see the reasoning behind their estimate so it can be adjusted if needed. This is a metric that also scales with experience, I expect more from senior members of the team.
评论 #13614601 未加载
Nomentatusover 8 years ago
This largely amounts to the question: &quot;How do you tell if someone is extremely conscientious or just puts on a show of being so?&quot;<p>The best answer is, wait a couple decades. Of course, that&#x27;s not the answer you want, you want to know now. Close code reviews (plural) may tell. Ratios of kinds of bugs may also be a tell (if they&#x27;re committing more dumb syntactic mistakes that debuggers easily catch they&#x27;re probably good, and spending their time preventing ugly and subtle logic errors.)<p>But to the extent that algorithm choice and design is part of their job, that may not be enough.
apeaceover 8 years ago
These criteria fall short and are an example of begging the question[0]. To say that &quot;they are a good team member&quot; as an answer to &quot;how do I know if they&#x27;re doing a good job&quot;, doesn&#x27;t really help.<p>I have worked with many developers who fit all five of these criteria, who never get any work done.<p>I like to break projects into small, medium, and large. A large project takes 4-6 weeks, a medium takes 2-3 weeks, and a small takes less than 2 weeks. A developer is doing a good job if they&#x27;re completing two large projects per quarter. They&#x27;re doing great if they&#x27;re completing more than that. Instead of two large projects it could be 4-5 medium projects, etc.<p>Many projects are smaller than a &quot;small&quot;, so your team should be bundling those together into some kind of focused &quot;project&quot; or &quot;sprint&quot; that is targeting a certain area and achieving a user-centric goal.<p>I also like to measure user satisfaction by sending surveys about new features. Does it solve a problem for you? Is it better than what we had before? Was it buggy? Score from 1-5.<p>These metrics aren&#x27;t perfect, but in my experience they go a long way towards measuring developer performance quantitatively.<p>[0] <a href="http:&#x2F;&#x2F;begthequestion.info&#x2F;" rel="nofollow">http:&#x2F;&#x2F;begthequestion.info&#x2F;</a>
评论 #13615969 未加载
fatheover 8 years ago
The answer is simple: the manager should be a good developer, and so the manager has the tool to appraise the quality of code, otherwise it will be a bad manager.
评论 #13614018 未加载
mooredsover 8 years ago
How is this different than evaluating any other white collar job, other than perhaps sales? Accounting, marketing, lawyering, HR, etc, all suffer from the same issues: no great quantifiable metrics, activities that are hard to tie to actual revenue, gameable metrics.<p>Maybe it is just me, but I haven&#x27;t read any &quot;how do you know if your marketer is a good one&quot; posts, but I see many on how to evaluate developers.
评论 #13625725 未加载
评论 #13615002 未加载
codingdaveover 8 years ago
I was hoping the article had an answer, but it really just asked the question and pointed out why some obvious answers are not good answers...<p>But peers tend to know who the good developers on the team are. They know whose code they don&#x27;t mind taking over. They know who to go to with questions and problems. And those are the developers doing a good job -- the ones that the other developers trust.
PeterisPover 8 years ago
The article harps on how it would be nice to have an objective and simply measurable metric. I&#x27;d refer to the classic statistics quote &quot;The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data.&quot; which seems to be the case here.<p>There&#x27;s probably a consensus that reading code is harder than writing code. You&#x27;re not going to get a good evaluation of a developer&#x27;s output without looking at that output, and it&#x27;s not going to be simple, there are no shortcuts - if you <i>need</i> that information, you have to have a competent developer look at that output and they&#x27;d then be able to tell how good or bad the quality is, and how the quantity of work relates to the time spent. This can be done in code reviews.<p>Other than that, you&#x27;ll simply have to accept that you&#x27;ll use subjective metrics - which is also fine, this isn&#x27;t the only domain where accurate measurements are hard&#x2F;expensive enough to do them sparingly.
评论 #13625718 未加载
SFJulieover 8 years ago
A good developer just go for the low hanging fruits, and proudly herald his competence to the management showing how much (s)he cares about market.<p>In doing so, a lot of plumbing&#x2F;dull complex problems are set aside, let to the rest of the team seen as incompetent to fix.<p>When your managers are not good coders themselves, good developer are the one who do courtship.
jehna1over 8 years ago
The problem seldom lies upon the implementation, but within the people and communication.<p>Programming is not a solo task (unless you do something alone, for yourself, without anyone ever using it). It&#x27;s all about communicating your deadlines, issues, successes, problems, estimations, risks and decisions to the team&#x2F;client.<p>Programming itself is a form of communication. You&#x27;re usually writing the code for the next developer that&#x27;s going to have to read it (which might be you in a few months).<p>As a manager&#x2F;client if you&#x27;re not sure if you have a good or a bad programmer, you certainly don&#x27;t have a good programmer. If you have a programmer that always keeps you up to date and makes sure you understand what&#x27;s going on, you do have a great programmer in your hands.
wellpastover 8 years ago
Always relevant to this discussion:<p><a href="https:&#x2F;&#x2F;medium.com&#x2F;@_princeb_&#x2F;the-parable-of-the-two-programmers-6dcc599ab0c7#.ef3ev47pz" rel="nofollow">https:&#x2F;&#x2F;medium.com&#x2F;@_princeb_&#x2F;the-parable-of-the-two-program...</a><p>(This isn&#x27;t the original source, I realize.)
评论 #13673715 未加载
kelvin0over 8 years ago
The very best devs are not always using code as a &#x27;solution&#x27;. Also, going back to your customer (internal&#x2F;external) and reviewing their &#x27;needs&#x27; goes a long way into understanding the core issue they are facing.<p>Very often I&#x27;ve experienced requests made to devs are &#x27;solutions&#x27; the customers think they need for their core issue (which you have not discovered yet).<p>A very good dev will go past that initial request and ask questions to understand the core issue. Many times the intial request does not solve the core issue, and the customer needs to be made aware of this, because it has a huge impact on the final solution and on your business productivity.
评论 #13625747 未加载
评论 #13618300 未加载
BatFastardover 8 years ago
Do peer reviews, the other developers know. And they want to work with good people.
评论 #13613513 未加载
deepaksurtiover 8 years ago
Good developers are &#x27;hardly working&#x27; and bad developers are &#x27;working hard&#x27;.<p>Good developers are striving for the simplest solution in the realistic time frame in the given context and then they just go do it, which is what I mean by &#x27;hardly working&#x27;.<p>Bad developers are at it day and night to further screw up an already screwed up system, they are &#x27;working hard&#x27; at the screw up!<p>And as not everything is right in this world, the &#x27;hardly working&#x27; ones either quit or have to make way for &#x27;working hard&#x27; ones.
bsaulover 8 years ago
I guess the question really is &quot;how do you know, without looking deeply at his code&quot; ( either because you don&#x27;t have time, or because you&#x27;re not a software developer). Which is a problem everyone has in every craft.<p>How do you know a plumber is a good plumber, if you know nothing about pipes ? Well, you won&#x27;t until he&#x27;s done : does it leak or not, and how long until it leaks again.<p>Now, on the other hand, if are a software developer, then simply look at the code in detail, and you&#x27;ll know immediately.
quizoticover 8 years ago
In situations where agile&#x2F;story-points make sense, I suppose developers that accomplish more story-points are &quot;better&quot;.<p>In academia, articles that are referenced more frequently are &quot;more important&quot;. For page ranking, pages that are referenced more frequently, are more important. I wonder if there&#x27;s an equivalent with infrastructure programming? If a developer builds a subsystem that is used frequently, does that indicate the developer has provided substantive value?
评论 #13613743 未加载
评论 #13613737 未加载
deviate_Xover 8 years ago
In the real world being a good developer is not about programming ability. A great programmer needs to absolutely engage in managing perception in the everyday working environment.<p>The reasoning is if programmer A addresses issues 2X as fast as programmer B.<p>Then as things average out programmer A will generate 2X more issues than programmer B all else being equal.<p>Managers, clients and fellow programmers will almost always see programmer A as a problem and programmer B as a hero in this situation.
评论 #13615311 未加载
评论 #13625800 未加载
henrik_wover 8 years ago
Reminded me of this great post: &quot;Are Your Programmers Working Hard, Or Are They Lazy?&quot;<p>Key point: &quot;To managers I would say, judge people by results, by working software, not by how hard they appear to be working.&quot;<p><a href="http:&#x2F;&#x2F;mikehadlow.blogspot.se&#x2F;2013&#x2F;12&#x2F;are-your-programmers-working-hard-or.html" rel="nofollow">http:&#x2F;&#x2F;mikehadlow.blogspot.se&#x2F;2013&#x2F;12&#x2F;are-your-programmers-w...</a>
alysson_b4aover 8 years ago
Setup an initial target(delivery points, for exampl) and adjust the target to each delivery. The most importat is the performance of the group in delivery more points per week&#x2F;15 days... During this process you will observe the guys that are really engaged and contributing to deliveries and others that dont fit in that group. If you have more working teams you can realocate them and check what is working better.
mindhashover 8 years ago
I think comparing one person to other isn&#x27;t best way to judge. It&#x27;s exactly what&#x27;s wrong with our education system too.<p>Setting objectives and comparing against it has worked well for my team. Each member has a different style, capability and motivation for work. Challenging them on such attributes brings best out of them. For those who fall short, there needs to be a penalty off course.
antfarmover 8 years ago
<a href="http:&#x2F;&#x2F;paulgraham.com&#x2F;gh.html" rel="nofollow">http:&#x2F;&#x2F;paulgraham.com&#x2F;gh.html</a><p>&quot;With this amount of noise in the signal, it&#x27;s hard to tell good hackers when you meet them. I can&#x27;t tell, even now. You also can&#x27;t tell from their resumes. It seems like the only way to judge a hacker is to work with him on something.&quot;
scandoxover 8 years ago
The answer is better managers.<p>They need to understand the history of the software, the current state of the software and the problem domain of the software. They need to understand the business priorities of the software, so they can evaluate the trade-offs proposed to them by their developers.<p>I don&#x27;t think this is a job that a non-technical person can do well.
stefsover 8 years ago
so, you say you need a person operating a vehicle.<p>you get a lorry driver and put them into a f1 car and expect them to get good lap rounds. or you hire a rally driver and put them into a taxi. it might even work - at least for a short time.<p>developing software isn&#x27;t a narrow field any more. there are specialists better suited to different tasks. you might hire an excellent developer, put them on task unsuitable for them and they&#x27;ll fail hilariously.<p>another interesting thing i noted is the quality of the project lead: a bad manager can have a bigger influence on some developers than others. some just don&#x27;t care and happily do the work as told, others&#x27; productivity is crippled because they&#x27;re forced to work in a way that doesn&#x27;t feel comfortable to them (while they&#x27;d otherwise do a stellar job).
andrewdubinskyover 8 years ago
Level 1:<p>They ship code that works.<p>Level 2:<p>They ship code that works on time.<p>Level 3:<p>They ship code that works on time and meets the objectives.<p>Level 4:<p>They ship code that works on time and meets the objectives with minimal guidance.<p>Level 5:<p>They ship code that works on time and meets the objectives without any guidance whatsover.<p>Level 6:<p>They redefine the job of programmer in some way that is material and long lasting.
knightofmarsover 8 years ago
# Managing 101<p>1. Help set goals for your employee.<p>2. Evaluate progress toward said goals.<p>3. Provide insightful praise and criticism.<p>4. If progress is made, then goto 1. Else goto 5.<p>5. If problem is short-term (goto 1) or long-term (goto 7).<p>6. Evaluate termination. If no termination, then 1. Else 7.<p>7. Terminate relationship with employee.
评论 #13616267 未加载
beeringover 8 years ago
Untested idea: Do regular user surveys asking, &quot;how reliable is the product?&quot; This would provide a measure of how buggy the software is that can be tracked over time.
pfarnsworthover 8 years ago
How productive is the developer? That is, how many tasks do they complete successfully over a period of time? The definition of a completed task is something that doesn&#x27;t have bad bugs that affect the product negatively, and doesn&#x27;t introduce very much technical debt.<p>Then, how technically challenging can the task get while the developer maintains the same level of productivity?
Arkaadover 8 years ago
You need a manager doing a good job to answer that question. But then a new question arises...
ereyes01over 8 years ago
A major reason we cannot define what makes a programmer &quot;good&quot; is that we have thus far been unable to define the practice of creating software as a proper engineering discipline [1]. It is difficult to even enumerate the necessary expertise of a &quot;good programmer&quot; in a general way that transfers everywhere- it is a combination of computer science principles, knowledge of specific tools &#x2F; languages &#x2F; frameworks, programming idioms, domain knowledge, certain communication and interpersonal skills, etc. Further complicating things, certain types expertise is useful in some problem domains, and useless in others (i.e. COBOL programmers or kernel hackers will have to gain a different sort of expertise to become effective web developers).<p>This means that one type of programmer can be &quot;good&quot; at rapidly gaining new forms of expertise. Another may be crazy good at a problem domain he&#x2F;she&#x27;s been hacking at for years, and have irreplaceable knowledge. Yet another maybe can do both well, but be stuck at a cushy job for 30 years and never realize their full potential at jumping around and building other great things (like some of my old coworkers).<p>This lack of clarity in the definition of a &quot;job well done&quot; for software teams is a huge source of pain and lost productivity in companies, especially when the stakeholders and the developers themselves are unable to interpret the signals of failure from their teams. There&#x27;s no real silver bullet [2] to immediately improve the situation, but there is certainly lots of data that can inform one about a dire situation in a team before it&#x27;s too late to fix it.<p>- Code itself has lots of empirical data [3] that can predict team performance in projects with enough of a track record.<p>- Analysis of team composition and practices [4] can uncover deficiencies and lack of confidence in a team, pointing at other underlying project risks.<p>Currently (as the article described), all of this information is synthesized and estimated in an ad hoc manner by managers and stakeholders. What really needs to happen is for this data to be routinely collected and delivered to managers, stakeholders, and team members.<p>Here at Mindsight (<a href="http:&#x2F;&#x2F;www.mindsight.io" rel="nofollow">http:&#x2F;&#x2F;www.mindsight.io</a>), we are trying to tackle such issues. We&#x27;re building technology that collects all this data and empowers a manager and his&#x2F;her team to synthesize reports to stakeholders as frequently as their CI system publishes builds.<p>We may still have a ways to go in evaluating programmers in the general sense. However, there is still much that can be done to help individual teams understand their true progress in a project. Keep an eye on a future Show HN from us!<p>[1] <a href="http:&#x2F;&#x2F;repository.cmu.edu&#x2F;cgi&#x2F;viewcontent.cgi?article=2967&amp;context=compsci" rel="nofollow">http:&#x2F;&#x2F;repository.cmu.edu&#x2F;cgi&#x2F;viewcontent.cgi?article=2967&amp;c...</a> [2] <a href="http:&#x2F;&#x2F;worrydream.com&#x2F;refs&#x2F;Brooks-NoSilverBullet.pdf" rel="nofollow">http:&#x2F;&#x2F;worrydream.com&#x2F;refs&#x2F;Brooks-NoSilverBullet.pdf</a> [3] <a href="https:&#x2F;&#x2F;www.microsoft.com&#x2F;en-us&#x2F;research&#x2F;wp-content&#x2F;uploads&#x2F;2016&#x2F;02&#x2F;tr-2005-149.pdf" rel="nofollow">https:&#x2F;&#x2F;www.microsoft.com&#x2F;en-us&#x2F;research&#x2F;wp-content&#x2F;uploads&#x2F;...</a> [4] <a href="https:&#x2F;&#x2F;wweb.uta.edu&#x2F;management&#x2F;Dr.Casper&#x2F;Fall10&#x2F;BSAD6314&#x2F;BSAD%206314-Student%20Articles&#x2F;Logistics&#x2F;logistic%20regression.pdf" rel="nofollow">https:&#x2F;&#x2F;wweb.uta.edu&#x2F;management&#x2F;Dr.Casper&#x2F;Fall10&#x2F;BSAD6314&#x2F;BS...</a>
评论 #13614500 未加载
评论 #13625823 未加载
george_ciobanuover 8 years ago
Simple solution that gets close to the social truth: ask team members to rank everyone else. Average the rankings. It works surprisingly well and for teams of up to 10 people or so differences in rankings are mostly noise.
评论 #13613699 未加载
评论 #13615411 未加载
评论 #13625841 未加载
blueyesover 8 years ago
articles with a question in the title rarely answer that question
评论 #13614187 未加载
trueSlavover 8 years ago
&gt; &quot;developers can be confident that they will rewarded for doing the right thing, not looking like they are doing the right thing&quot;<p>From my professional experience (10 years in 3 companies), this is one of the biggest issues in software development businesses. You&#x27;re either too small and then the manager doesn&#x27;t have the time or skill set to effectively evaluate the developer&#x27;s efficiency or you&#x27;re too big and there are too many layers between the developer and the manager. The situation when your direct supervisor is also a person who is authorized (and able!) to evaluate your performance happens so rarely.
zzzcpanover 8 years ago
&quot;Maybe number of bugs fixed is the answer?&quot;<p>What about the number of bugs never found? I.e. reward those producing the least buggy code. And an incentive to write code with fewer bugs aligns with business goals at least to some extent.
DanielBMarkhamover 8 years ago
I&#x27;m going to flip the question, because we get a little more insight with it upside down.<p>How do you know a developer is doing a <i>bad</i> job? Is it because they don&#x27;t code a lot? They sleep late? Maybe wear the wrong clothes?<p>I&#x27;m agreed with the author that with an organization of any non-trivial size, all we have is subjective data, since effort and value are so completely decoupled in tech.<p>Unless you know you&#x27;re going to be funded for life, every tech group has a difficult question it must face sooner or later: how do you deal with incrementally decreased funding, where somebody has to be released?<p>The best I&#x27;ve got is that the team has to vote somebody off the island. I don&#x27;t like it, but it&#x27;s a decision that must be made, and managers aren&#x27;t the ones to make it. I would add to that: the team includes the developers, the managers, and the customer&#x2F;users that interact with and receive value from the team.<p>It&#x27;s an open question whether or not you decide to do this on a regular basis or just save up and whack somebody with a vote all at once. I don&#x27;t like forced ranking, but I would prefer a rolling average of votes over a long period of time as opposed to an all-at-once vote. For some reason it seems more humane to me.
评论 #13614947 未加载