- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
I think Mihail won on points.
1 - He got some early real world experience of what 90% of projects are like. 2 - He didn't have to support the end result. 3 - He got paid.
Edit Admin
Well, at least Mihail gained some valuable experience: what it's like to work on a project where the requirements change continuously(1) while the code is being written.
(1) Yes, continuously. I'm well aware of the classic 1st Ed AD&D spell "ContinuAL Light" that produced continuOUS light...
Admin
I've heard of BS jobs, but apparently there are also Worse-Than-Failure jobs.
Admin
Well, that sounds about right. Worked on a pipe laying robot once, (one that lays pipes on the bottom of the ocean.) By the time we were finished, the vessel was sold and repurposed. The complete pipe laying system was cut and sold for scrap metal, just after commissioning completed. Oh well...
Admin
They don't teach The First Rule in college... no matter what the customer asks for, what he really wants is Excel.
Edit Admin
This attitude has caused so many problems. Unless you are doing consulting work for another company (NOT another department within one company) time tracking is useless crap.
Edit Admin
Time tracking is just as dumb as counting lines of code. A programmer's productivity is measured in value provided to the company compared to cost, not how long they spend on a project. If you pay someone $100k and they provide 'x' times more than that, then they're good.
https://www.folklore.org/Negative_2000_Lines_Of_Code.html
Addendum 2024-12-24 09:18: Theoretically, 'x' would be 1, but companies like profit margins.
Admin
Nah, the First Rule is: The customer doesn't knows what he/she wants, right up to the moment of delivery (and doesn't get it).
Edit Admin
Even in consulting work, time tracking is counterproductive overall (though it can be very profitable for horribly inefficient consultants). Google "Hourly Billing is Nuts" for some great stuff why.
Edit Admin
You can only track what you can measure. "Value" is hard to measure, you only really know it well after the fact. Lines of code and time spent may not be perfect metrics, but at least they're objective, so they're used as proxies.
Unfortunately, this leads to Goodhart's Law: “When a measure becomes a target, it ceases to be a good measure.”
Edit Admin
Tell that to software companies in France, where the "CIR" (== "Crédit Impôt Recherche" == tax credit for the "R" part of "R&D") requires that the company that wants to have the tax credit must be able to show that X amount of time that tax year was spent on "R" activities rather than "D" or "random other shit" activities. The only sane way to do that is a time tracking tool. Note that it also allows the company (even outside the context of stuff like the French CIR) to track the "time taken to build feature X", which is useful over the longer term.
But counting LoC is dumber than dumb, since (a) it's largely unconnected to actual productivity and (b) it encourages the kind of LoC padding we've seen here on this site many a time, and (c) sometimes deleting a bunch of code is what you actually have to do.
Case in point, a bunch of code I had to wrestle into submission after the original authors quit the company... It was a message queuing system (for C and C++) with hugely excessive ambitions, both in the sense of what they wanted to build and also in the sense of what the product really needed, and I ended up having to delete about a third of its code because ===> that daemon there leaked memory like a sieve while it was running, but managed to clean it all up before quitting (that is, a "soft" leak in my normal terminology(1)), which made debugging it in valgrind a source of major suckage. Since I couldn't easily track how that memory was used in the third-party component that "leaked" it, I just nuked the daemon since it wasn't remotely useful for the product, but it reduced the LoC count of the messaging system by about a third...
(1) "hard" leak == classic C/C++ leak where we grab memory and then forget where it was instead of cleaning it up, "soft" leak == anything where we can clean it up (we remember all the pointers) but only do so on exit, including any leak in a program running on a non-buggy JVM or .NET system (with a GC).
Edit Admin
Once upon a time (like, a month ago), I pushed a commit that deleted 76,000 lines. It was glorious.
Edit Admin
That must have been intensely frustrating, all ready to lay pipe and you get hit with premature cancellation.