freenode/#lisp - IRC Chatlog
Search
8:23:23
pve
It seems to me that the productivity of a language could mean different things, depending on the experience level of the programmer or the size of the team.
8:37:28
pve
The scenario that is often painted seems to be one experienced programmer equipped with a "better" language (CL?) that can code circles around a team of programmers using a "lesser" language.
8:45:48
beach
pve: Some other factors are involved in that scenario. First, the literature on software engineering suggests a factor 20 difference in productivity between different developers with the same training and the same experience. Second, since communication grows quadratically with the number of members, a team with fewer members gets an advantage.
8:53:34
beach
So, a good strategy for a company would be to try to measure this difference, and then fire the half of the staff below median.
8:54:38
SAL9000
beach: maybe that's where the stack ranking methodology (which is still in vogue in some places, apparently) came from
8:56:23
SAL9000
As far as I understand, the biggest problem there is -- same as with genetic algorithms and neural networks -- measuring employee fitness objectively
8:56:59
SAL9000
That is a problem in any business, but combining subjective measurement and stack ranking seems to cause a true dumpster fire.
8:57:12
beach
Exactly. And that's how this discussion got started. It is extremely hard, certainly at the level of a company or division, to measure productivity of programmers.
8:57:53
aeth
SAL9000: another problem is that it keeps going. Assume you can fire half of the programmers. Well, next year you fire half again, even if they made the cut last time.
8:59:09
SAL9000
they have enough incoming wide-eyed graduates fresh out of uni to keep up with the churn, while the (upper) management feels somewhat secure in that they've risen above the game
8:59:46
beach
A preferable technique would be to identify low-productivity developers and give them training to improve.
9:00:13
SAL9000
assuming that those improvement plans don't become a black mark on one's permanent record, seems like a good idea
9:00:59
SAL9000
from what I've heard, in many places being placed on an improvement plan is tantamount to imminent redundancy
9:01:02
beach
SAL9000: Well, some developers deserve what they get. Like the "performance oriented" ones.
9:02:02
SAL9000
shka_: I assume that most companies would prefer to define "productivity" as "completes projects within the timeframes specified by management, come hell or high water"
9:05:25
SAL9000
Right. I do find "Students do not know how to use a debugger. Instead, they waste time debugging programs with trace output." amusing given that my current boss (loudly) espouses the exact opposite :-)
9:06:27
SAL9000
(admittedly, this is in the context of a 20-year-old C++ codebase involving a JITted custom language)
9:36:51
shka_
phoe: yes, fancy trace preserves input objects and if you are avoiding mutation you can inspect
9:39:19
White_Flame
and debuggers usually aren't that great in threaded environments, or in things where you could have I/O timeouts
9:59:16
jackdaniel
while I feel like a cave man when I'm putting (print "foo" *debug-io*) to debug a program (or break to introspect the environment with the debugger), I have to say that it gives me a good insight of how program works. I don't think that relying only on a debugger (even a superior debugger) would be as effective
15:24:17
Bike
i mean, if you have a class A and a class B, and A is a subclass of B, and x is an instance of A
15:26:08
Bike
it's the kind of thing that's in theoretical texts that aren't read by very many actual programmers :v
16:39:41
ym
Hi. When I put let-definition of array which is initialized with initial-element inside of do, I have re-initialized array each iteration. I'm sure SBCL optimizes such definition so that it won't allocate memory for array each iteration, but how do I check it?
16:44:42
Xach
ym: i don't think it's a matter of optimization, but a matter of specification - the initial-element is evaluated only once to initialize, not repeatedly.
16:45:36
Xach
you could also check by tracing the array creation (this would be easiest if you wrap array creation with a function of your own)
16:50:41
Xach
ym: Ok. I think I have misunderstood your description, then. What does the code look like, if you can share it?
16:56:51
Bike
if you replace that make-array with make-my-array, semantically break must be called each iteration
17:08:19
johnjay
question. am i supposed to type (load "~/quicklisp/setup.lisp") everytime I start sbcl?
20:13:07
rpg
phoe: It's OK, I just figured it out -- I was having troubles with cl4py with undefined functions. Then I dug around and figured out that macros (for reasons that are obvious when I think about it) are not available
20:16:52
phoe
pve: that'll almost work, lispworks doesn't let you defun on keywords for whatever reason
20:21:29
phoe
I have no idea how you could confuse us two, he's the cooler and smarter one and weighs much less