Satvik Beri, Data Scientist
Répondu il y a 128w · L'auteur dispose de réponses 745 et de vues de réponses 2.9m
Every Sunday, I write down the things I accomplished that week. I try to include some estimate of impact, e.g. "automated TPS reports, saving sales 2 hours per week per person". Getting the exact amounts right isn't too important, the goal is to get order-of-magnitude estimates...some weeks are tremendously better than average ("completely eliminated the need for project X, saving $1.2MM and 2 years"), and some weeks that are nearly worthless ("went down a rabbit hole and spent the week automating something that took ~30 seconds/month")
Unlike Adam, the impact of things I work on is ne pas intuitive for me, so I create explicit estimates both when deciding what to work on and when gauging the value retroactively. For example, I could tell that eliminating project X would be pretty worthwhile, but didn't realize just how big a deal it was until I wrote out the cost (and validated the estimates with my manager.) If I hadn't done that, I would have worked on something else, and not gotten around to that project for at least 6 months.
John L. Miller, 13 years as manager, manager of managers. 25 years industry experience. PhD
Répondu il y a 127w · Voté par
Drew Eckhardt, 20 years as a system software engineer, 5 startup veteran · Author has 2.2k answers and 28.2m answer views
There's a couple of aspects to measuring your productivity. One is how productive YOU feel for the time you've investi. The second is how productive your are perceived to be (for example, by your manager) for time elapsed.
Time worked is a poor metric on its own. I know some people who work 30 hours a week and do more than competent engineers of the same seniority working 60 or 70 hours a week. Working lots and achieving very little can actually devalue you as a resource: you won't be someone who can pitch in when a project gets behind, as your incremental contribution is low.
To measure your productivity, look at it from the outside:
- Who is consuming your work. You need a way to relatively value your work product. If they only care about code produced, specs should be enough to ensure you do a good job and no more. If they only care about additional features enabled, you're best off producing new features rather than paying down engineering debt invisibly on old ones. Sad, but true.
- How frequently do you deliver? Do you spend long periods of grueling work without anything to show for it - from your consumer's perspective? Then you're probably working on the wrong thing.
- Are you a go-to person? If you want something done, give it to a busy (and productive) person. Do people come to you when something important needs to be done? If not, you're probably not perceived as productive.
Compare the units of work you deliver and get credit for to the units of time you invest in them. If you're leaving low-hanging fruit unplucked while putting disproportionate, unrecognized effort into other things, you're not being productive.
If management isn't recognizing the right things as being productive work, then educate them so they see the value. Otherwise listen to them.
To measure your productivity:
- Get an understanding of the perceived value of your choices for work.
- Estimate the effort it takes to complete each unit for different tasks.
- Examine your productivity in terms of value/time for each task, and for each unit of elapsed time. If it's not consistent, figure out how to fix that.
Edmond Lau, Author of The Effective Engineer
Répondu il y a 121w · Voté par
Mukunda Madhava Nath, Mechanical Engineer at Samsung(SRI-B ) · Author has 291 answers and 6.5m answer views
Dans son livre The Dilbert Principle, Scott Adams re-shares a cautionary tale from one of his comic strip readers on measuring productivity.
An engineering manager wanted to incentivize his team to find and fix software bugs and instituted a program to reward strong performers. To encourage the quality assurance team to find bugs, he rewarded $20 for every bug uncovered. To encourage engineers to fix more bugs, he rewarded $20 for every bug fixed. 
It's not difficult to imagine what happened next. Engineers started to purposefully introduce bugs for testers to discover and for themselves to fix. One engineer even established an underground market for his bugs and earned $1700 after one week. The well-intentioned program shuttered soon afterwards.
This amusing little story illustrates a critical point: how you measure your own productivity changes how you behave. So how do you pick the right metric to incentivize the behavior that you want?
The Right Metric Depends on Your Goals
Most engineers would scoff at the idea of measuring their output based on lines of code written. It's an absurd metric, right? How could a metric that ignores code quality and code impact make any sense?
And yet — there's a time and place where purely measuring the raw quantity of output can be valuable.
When you're first learning something new — whether it's programming, drawing, acting, driving, or something else — the raw number of programs you write, drawings you sketch, scenes you perform, and hours you spend on the road all measure something critical. They track whether you're getting the practice you need to develop those skills. That's why habits like dancing 365 days a year or building 180 websites in 180 days can be so effective for new learners. Those same metrics lose much of their power, however, once you reach a comfortable level of skill — afterwards, it's more useful to deliberately practice skills that push you out of your comfort zone, and raw output is no longer a strong indicator of improvement. 
Similarly, when quality is not the main concern, a quantity-based metric can be useful. For example, when I was writing the first draft of my book, quality didn't matter nearly as much as completing a draft to visualize how all the pieces fit together. By measuring my daily productivity with a goal of writing 1,000 new words per day, I focused on producing new material rather than spending my time rewriting and revising work from the day before — which many writers are apt to do.
Metrics that at first glance appear absurd can therefore still play important roles. Whether a metric makes sense depends on your goals — and as your goals change, old metrics may outlive their usefulness. So how do we take this lesson and apply it to engineering productivity?
Figure Out Your Goals, Then Work Backwards to Derive Your Metric
As an engineer, your goals — and therefore the right metrics — will vary over time. At any time, your goal might be to:
- Learn a new framework or programming language. For learning, tracking a simple metric such as a minimum number hours per day may suffice.
- Reduce distractions while working. Puis en utilisant un Tomate timer to track the number of deep, productive hours worked — and spent away from Facebook, Twitter, email, or web surfing — can be a good start.
- Speed up the performance of a critical subsystem. Tracking how much your efforts move the needle on average or 95th percentile latency or whatever performance bottleneck you're facing will definitely play an important role. Or if you know exactly what you want to optimize for, you might go much deeper, like how Instagram optimized for CPU instructions per active user at peak minutes. 
- Improve the quality of search results. You'll want to track how much of a dent you can make on click-through rates, or perhaps borrow a lesson from Google and track longue click-through rates — clicks where someone clicks on a result and doesn't bounce back for some amount of time.
- Increase user growth and engagement. Depending on which part of the funnel currently matters most for your business, you'll measure your impact on signup or payment conversion rate, the growth rate of weekly active users, week-over-week retention, or some other part of the funnel.
- Increase server reliability. If you already have good monitoring, perhaps you might measure pager duty alerts per week. Depending on whether you care more about minimizing customer disruption or disruptions to your teams' lives outside of work, you may also apply more weight to alerts that fire during business hours or off-peak hours.
Notice that the metrics are all domain-specific, and for any goal, there's a wide array of metrics to consider, each with their own associated incentives. For example, if you're working on application performance and focus on improving average latency, you'll generally make system-level optimizations that will help reduce overall CPU, memory, or bandwidth costs. On the other hand, if you focus on improving 95th percentile latencies, you'll mostly focus on fixing the worst-case performance issues. These issues typically have a much bigger impact on your most active users — people who make the most queries, load the most pages, follow the most people, or generate the most data and therefore are more computationally expensive to handle.
In general, to figure out what to measure, start with what goal you're trying to achieve. Then ask yourself, “If I could pick one and only one metric to systematically increase over time, what would lead me to make the greatest and most sustainable impact toward my goal?” Your answer is the metric that will maximize your productivity toward hitting that goal.
But what if your goal is generally just to become a more effective engineer — what's the one metric you should systematically increase?
The Single, Most Important Metric for Effective Engineers
At the very first startup I joined after leaving Google, my team worked 70-80 hour weeks. We thought we could work hard and hustle our way through to launch products, beat our competitors, and win the market. It took a few years and burning my team members and myself out to realize that this well-intentioned strategy was neither scalable nor sustainable — our time and energy is limited, after all.
So what's a better alternative strategy? How do the most effective engineers measure and increase their productivity to make their efforts, their teams, and their careers more successful?
These are the questions I wondered while doing research for my book, The Effective Engineer. And, to answer them, I spent a few years interviewing and meeting with CTOs, VPs, directors, managers, and other leaders around Silicon Valley to grill them about what made their teams productive and successful.
What I found is that the most successful engineers at Google, Facebook, LinkedIn, Instagram, Airbnb, Dropbox, Square, Stripe, and other top technology companies all shared a common mindset when it came to reasoning about how to spend their time and energy. And ultimately, all of the domain-specific metrics we develop for our goals are just instances of this more general framework for measuring our effectiveness. That framework is influence.
Leverage is the impact that you create per unit of time spent on an activity. And it's the central, guiding metric that effective engineers use to direct their focus and energy.
Effective engineers consistently identify the highest-leverage activities. They optimize for learning because they know that growth compounds over time, and the investments you make in yourself will easily pay for themselves over the course of your career. They build tools and invest in their iteration speed because the benefits compound over time — some of the best teams I've talked to spend nearly a third of their time on tools. They front-load risky work and look for creative ways to validate their ideas quickly and cheaply, so they don't waste weeks or months of effort on projects doomed to fail. And they also work hard to pick domain-specific metrics for their projects or focus areas because they know that having the right metrics — ones that actually align with their impact — will incentivize work in the right areas.
Effective engineers know that what matters ultimately is not how hard you work or how well-intentioned you are — the story from the Dilbert reader illustrates this — but how much of your effort translates into actual impact. So if you want to grow your productivity, focus on your highest-leverage activities.
If you'd like to learn more about how to pick good metrics for your goals and as well as what other activities are high-leverage for engineers, I've put together a collection of free resources that go into much more depth than I can fit in here. They're based on the interviews and conversations I conducted for the book, and include case studies on what the best engineers at Google, Facebook, LinkedIn, Instagram, Airbnb, Dropbox, Square, Stripe, and other top tech companies do.
Santé et sexe à tous !
Crédit photo: Sergey Zolkin
À noter :
: Anders Ericsson and Robert Pool, Peak: les secrets de la nouvelle science de l'expertise.
: Min Ni, “Web Service Efficiency at Instagram with Python”, Instagram Engineering, June 20th, 2016.
Aman Dalal, MSc Integrated Product Design, Delft University of Technology (2020)
Mise à jour il y a 47w · L'auteur dispose de réponses 145 et de vues de réponses 141k
This is a method I use to trick myself to be more productive. Though it has only been a couple of weeks since I started using this, it is already turning out to be pretty effective. You might as well use it to measure your work output/day or week.
Open up Excel and give the headings of 3 columns: 1. Task, 2. Credits, and 3. Awarded Credits. Write down the tasks you have at hand or the ones you are supposed to complete in the next one week in the first column. Assign credits to each task as per their importance or difficulty in the second column. For instance, if your task is as simple as collecting laundry, assign 1 credit. If it is a tricky one like solving an assignment, assign 4 or 5 credits. Whenever you complete a task, go right back to Excel and award yourself the credits corresponding to the task.
To increase productivity, turn this into a game!
You could write a simple =SUM() code in another box for the summation of the awarded credits column to keep a tab of your weekly score. Your weekly score is your productivity! Try to beat your previous best every week or keep a reward for accomplishing a particular number of units of productivity in a week.
Reset the tasks every week and keep it clean.
Here's what my sheet looks like:
J'espère que cela fonctionne pour toi!
Adam D'Angelo, have managed many engineering teams
Répondu il y a 128w · Voté par
Darshit Parekh, MBA&E Business Administration & Engineering, HTW Berlin (2018) and
Sanjeev Ravindranathan, M.S Industrial Engineering, Arizona State University (2018) · Author has 975 answers and 29.5m answer views
Productivity is usually defined as something like impact per unit time. Measuring impact is domain-specific and can be difficult. If you are trying to make a program faster, you can look at how much faster it is after your work, but you should also factor in whether you made it hard to change in other ways later. If you are trying to improve user experience and there is a good metric available you can run a/b tests but there are lots of other concerns that are harder to quantify.
Measuring time investment, on the other hand, is really easy. You can just keep a log of how much time you spent on each part of the work. I have found that most of the goals in measuring your own productivity can be achieved solely by measuring where your time has gone. Usually intuition is good enough to judge impact, but intuition is actually pretty bad for judging time investment. This is because people have very biased memories of where their time has gone. So if you regularly look over a log of how much time you spent on each task, you'll easily be able to pick out what was a high productivity investment and what was a waste of time.
Piaw Na, Author of "Startup Engineering Management": http://books.piaw.net/management/index.html
Répondu il y a 101w · Voté par
Drew Eckhardt, 20 years as a system software engineer, 5 startup veteran · Author has 1.1k answers and 8.3m answer views
I’m not big on directly measuring stuff like “lines of code,” “numbers of bugs fixed,” or “sprint items addressed.” Those metrics tend to under value the importance of good insight into the problem solved. For instance, if you fix a bug by moving the right line of code 3 lines up, because you spent 4 hours truly understanding the code, your lines of code metric would suck compared to putting a patch in for the problem with no understanding of the basic problem.
One thing that I have been successful in implementing is to improve the design/code/test/debug cycle for a sizable project. In this case, the project has to be large enough that it’s worth while to pay some overhead in terms of having a design document (which could be as simple as a header file/interface definition description —- for many years I told people that a design that doesn’t include a C++ .h file was incomplete), a design review (which could be very informal), and a schedule prediction. Immediately after the design’s been implemented, tested, and integrated, I’d go back and walk through the schedule prediction and try to figure out where and why I went wrong. That goes in both directions: “I thought this would take half a day, but it took me 2 days, because I didn’t properly understand the problem.” “I thought this would be hard, but it turned out that Jocelyn told me about this library that made the problem trivial!” This sort of introspection proved invaluable, especially if collected over time —- you learn what kind of mistakes you tend to keep making, and try to find strategies to mitigate those.
While this isn’t a direct measure of productivity, if you do this on a consistent basis (which might not be possible because a lot of the time engineers can be interrupt driven due to production bugs, changes in requirements, etc), you end up becoming very good at knowing what’s easy, and what’s going to take much more time than you expect (i.e., you become better at understanding when there are many unknown unknowns). You end up learning habits like “tackle the most high risk problem first, because that’s the majority of the uncertainty in the project.”