Home
Programmer productivity: lines of code edition
part of Diary of a solo dev building a web app
💡
This is part of dev diary of implementing Filerion, a web-based file manager for online storage (Dropbox, OneDrive, Google Drive, s3 and more).
It’s impossible to measure programmer productivity.
We don’t even know what the right measure is.
It doesn’t mean we should throw the baby out with the water and measure nothing.
One thing we can measure is: how many lines of code did you write?
Some people are adamant that lines of code written is a terrible metric.
I get the argument, I disagree with the conclusion.
If the minimum lines of code needed to implement X is 10 thousand lines of code, someone who writes 10 lines of code per day will take 3 years to complete the task.
Someone who does 100 lines of code, all else being equal, will take 100 days. Big difference.
What you shouldn’t do is to reward programmers for how many lines of code they write. That’s lazy management that inevitably leads to programmers gaming the metric and creating worse code as a result.
I like to know a ballpark of number of lines of code written.
Then there’s curiosity. Some people tend to vastly over-estimate how many lines of code they can write. I have heard people talking about thousands lines of code per day.
To track my performance, I wrote a script to calculate number of lines of code written per day.
It takes the latest commit of the day and compares lines of code with the latest commit in a previous day.
It only counts the days with at least one commit.
At 31 days, Filerion consists of 12k lines of code, 388 per day.
Is 388 per day a lot? I have no idea. I don’t have the data for other people.
My most productive day so far was 927 lines of code.
Here’s the raw output of my script:
2022-06-09, day   1:   810  +810 (.html: 33, .js: 169, .svelte: 183, .go: 425)
2022-06-10, day   2:  1228  +418 (.html: 33, .svelte: 322, .go: 425, .js: 448)
2022-06-11, day   3:  1759  +531 (.html: 45, .go: 425, .svelte: 633, .js: 656)
2022-06-12, day   4:  2517  +758 (.html: 45, .go: 615, .svelte: 892, .js: 965)
2022-06-13, day   5:  2983  +466 (.html: 38, .go: 616, .js: 1023, .svelte: 1306)
2022-06-14, day   6:  3023   +40 (.html: 42, .go: 616, .js: 1065, .svelte: 1300)
2022-06-15, day   7:  3771  +748 (.html: 42, .go: 616, .js: 1432, .svelte: 1681)
2022-06-16, day   8:  4117  +346 (.html: 42, .go: 616, .js: 1620, .svelte: 1839)
2022-06-17, day   9:  4196   +79 (.html: 42, .go: 616, .js: 1661, .svelte: 1877)
2022-06-18, day  10:  4570  +374 (.html: 42, .go: 768, .js: 1701, .svelte: 2059)
2022-06-19, day  11:  4913  +343 (.html: 42, .go: 816, .js: 1969, .svelte: 2086)
2022-06-20, day  12:  5069  +156 (.html: 42, .go: 888, .js: 2040, .svelte: 2099)
2022-06-21, day  13:  5539  +470 (.html: 42, .go: 911, .js: 2227, .svelte: 2359)
2022-06-22, day  14:  6466  +927 (.html: 72, .go: 995, .svelte: 2692, .js: 2707)
2022-06-23, day  15:  6808  +342 (.html: 72, .go: 995, .svelte: 2861, .js: 2880)
2022-06-24, day  16:  7163  +355 (.html: 72, .go: 995, .svelte: 3005, .js: 3091)
2022-06-25, day  17:  7414  +251 (.html: 79, .go: 997, .js: 3158, .svelte: 3180)
2022-06-26, day  18:  7520  +106 (.html: 79, .go: 1091, .js: 3158, .svelte: 3192)
2022-06-27, day  19:  7933  +413 (.html: 79, .go: 1338, .js: 3230, .svelte: 3286)
2022-06-28, day  20:  7797  -136 (.html: 79, .go: 1338, .js: 3087, .svelte: 3293)
2022-06-29, day  21:  7981  +184 (.html: 79, .go: 1408, .js: 3116, .svelte: 3378)
2022-06-30, day  22:  8036   +55 (.html: 52, .go: 1474, .js: 3027, .svelte: 3483)
2022-07-01, day  23:  8798  +762 (.html: 52, .go: 1557, .js: 3533, .svelte: 3656)
2022-07-02, day  24:  8865   +67 (.html: 52, .go: 1557, .js: 3517, .svelte: 3739)
2022-07-03, day  25:  9377  +512 (.html: 57, .go: 1560, .svelte: 3665, .js: 4095)
2022-07-04, day  26:  9774  +397 (.html: 59, .go: 1560, .svelte: 3684, .js: 4471)
2022-07-05, day  27:  10647  +873 (.html: 375, .go: 1715, .svelte: 3710, .js: 4847)
2022-07-06, day  28:  11178  +531 (.html: 375, .go: 1844, .svelte: 3748, .js: 5211)
2022-07-07, day  29:  11580  +402 (.html: 375, .go: 1918, .svelte: 3816, .js: 5471)
2022-07-08, day  30:  11728  +148 (.html: 375, .go: 2066, .svelte: 3816, .js: 5471)
2022-07-09, day  31:  12042  +314 (.html: 375, .go: 2129, .svelte: 3984, .js: 5554)
per day: (12042 / 31) = 388
Jul 9 2022

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you: