4 ms·
Productivity is mostly linear for me, judging from non-test lines of code in my commit history. About 36 net lines/hour whether the language is Haskell, C++, or
by MichaelBurge 9y ago
Productivity is mostly linear for me, judging from non-test lines of code in my commit history. About 36 net lines/hour whether the language is Haskell, C++, or Javascript, or whether it's 3 hours or 14.
There is some variance: Test code increases the ratio, UI code increases the ratio, and debugging lowers the ratio. But it's either wildly off being one of these, or 36-40 lines/hour.
- nuclx 9y agoN lines/hours is a useless metric unless you strictly only do coding to the spec in greenfield projects. E.g. compare using a code generator producing 20k LOC in a millisecond with modifying an undocumented legacy system, where every slight change to the system's incoherent logic might blow up the hole thing.
- MichaelBurge 9y agoI'm saying the code generator would be written at the same net lines/second as the undocumented legacy system. I wouldn't count the 20k LOC as written code. The code generator may be a more efficient project, but the rate at which it's built seems to be the same.
- YZF 9y agoIt's a useless metric in any project. A million line code base can have a lot of value or negative value. If you wrote that at 10 lines/hour your productivity is anything between -X$/hour and +Z$/hour. What does productivity mean in software engineering? Not # of lines of code produced.
- suprfnk 9y agoI'm not a Haskeller, but I frequently hear that Haskell (and FP languages in general) are very terse. Would 36 lines of Haskell not be able do more than 36 lines of C++ of JavaScript? Anyway, in that regard, LOC is probably a bad metric. Unless the 36 lines of Haskell actually do more, and thus the Haskell/FP language actually allows you to be more productive. That'd be interesting.
- dasmoth 9y agoHaskell expressions can indeed be pretty terse (and you get some powerful stuff from fairly standard libraries). But balanced somewhat by type signature lines, data types you might not bother defining in a dynamic language, etc. For me, Haskell is a little more verbose than Clojure (similarly-powerful expression language, but potentially skipping a bunch of type-related stuff). Maybe comparable to the likes of JavaScript. APL and Forth-like languages seem to be the place to look for extreme tenseness.