Economics Of Advanced Programming

This is a discussion based on material in GreatLispWar. I'm trying to present a somewhat more concrete model for training/knowledge and what the "market wants".

The skill/training-level issue can be viewed as resource allocation, AKA economics.

  p = k1*s1 + k2*s2 + k3*s3...kn*sn

"p" is total productivity of a given employee. "kn" is knowledge about sn and "sn" is the Skill N, or more specifically, the importance of Skill n to Productivity (p). Ideally an organization and/or employee wants to optimize p, and one way is find the best allocation of k's (knowledge).

Remember, in the "deparmental" model (above), the skills will also include domain skills, and perhaps other IT skills besides development, such as networking, DBA, Photoshop, SmartPhone programming, etc. (I've counted at least 30 skills I can list, and probably many I've forgotten at the moment.)

For now, let's assume that the total time allocated to gaining Knowledge is fixed. Thus,

  k1 + k2 + k3 ... kn = constantX

If one focuses on a specific skill, such as HOF's, let's say that's "s34", then one has to make the argument that some OTHER k should be reduced. Nobody has made a good argument that s34 is more important than s35 or s7 etc. Please try.

Now, one could argue that constantX should be increased and a given employee should spend time learning EVERYTHING more. But time spent learning takes away time spent on other things, such as actually doing the here-and-now job. And it may make the employee more valuable in the market place such that the org has to decided whether they want to pay for that level of knowledge. The best balancing point would make an interesting discussion, but I'm not sure that's the pro-lisp or pro-HOF perspective.

There's also the issue of using techniques that current or future colleagues may have trouble following.

--top


{This is nothing but speculative nonsense until it has backing from theoretical proof, empirical evidence, or both.}

It is nonsense. About the only thing that isn't is the bit about resource allocation being economics. The linear model relating knowledge and productivity is particularly laughable, since there's very little reason to believe it (and quite a bit not to).

Why are you complaining? I don't understand. DontComplainWithoutAlternatives. The only alternative I've seen is "in an ideal world programmers would fart code and all have PhD's and A+ GPA's because everybody gets a pony and there should be magic". The above is meant as a framework for discussion. Those who make hiring and tool decisions more or less use models similar to this to make their decisions. Even if you disagree with it (for unstated reasons), you should still know how the market works. It's good for you, like broccoli.

I don't have an OfficialCertifiedDoubleBlindPeerReviewedPublishedStudy but neither do you! My evidence is D- but yours is F- because it's grounded in an idealistic fantasy universe. I'm at least starting on the road to science by presenting draft models to start to explore. Your "should" model makes no empirical nor intellectual sense to me.

Let me try to simplify this a bit. Suppose a multi-hat developer/IT-worker has been told that they should learn Photoshop by their boss as a suggestion. They always read this wiki and see a suggestion that they should study and practice HOF's. This person already works long hours and has a family to help take care of. They only have enough time to pick one to study this month. How do you propose they "rationally" decide among the two? -t

You want an alternative? Study economics. (And you'll even find an OfficialCertifiedDoubleBlindPeerReviewedPublishedStudy or two.)

Too vague. Any specific studies you want to cite?

At this point, just about any introductory course would do.

In other words, you've got nothing beyond patronizing verbiage. I've taken 2 econ courses, by the way.

Then you've forgotten everything in them already. Take them again, and pay attention this time. For example, rather than starting with a linear relationship, start with the following. (Where y is a conglomeration of all the factors that affect productivity other than knowledge.)

  p = f(k1, k2, k3, ..., kn, y).

I'm trying to keep the discussion focused at this point. We'll explore other factors as they come up. For discussion purposes, it's often best to keep certain things constant in a given section to explore a specific set of variables. The discussion then gradually works around to other factors. English is linear, for good or bad.

There's nothing wrong with that approach. I certainly could have said "p = f(k1, k2, k3, ..., kn)." The thing is, that now f itself is a function of y. I.e. "p = f(k1, k2, k3, ..., kn)" is just a shorthand for "p = f[y](k1, k2, k3, ..., kn)". (I'm using [] to indicate a subscript.) The two approaches are mathematically equivalent. (I don't know what the purpose of your last statement is. Nothing on this page is dependent on the linearity of English. It's also factually incorrect. English isn't even close to being linear.)

{"English is linear" makes almost as much sense as "dream is fish".}

A linear language is a language for which a linear grammar exists. A linear grammar is a context-free grammar with at most one non-terminal on the right hand side of it's productions. The phrase makes sense, but it's false.

{I'm almost 100% certain that's not what Top meant.}

That I can agree with.

You guys are sometimes too literal. Anyhow, the above says nothing about what's inside the function. I'm just trying to illustrate the trade-offs involved. When you say a person "should do/learn X", you also have to consider that perhaps they "should" also do A and B and C and D, etc. The typical developer/IT-worker has limited time and resources (or will at least spend only a limited time and resources on work-related stuff). If you make the claim that they should spend it on X, then you need to also explain clearly why they should do X instead of A, B, C, D, etc. That's a perfectly rational question, I don't know why you are bothered by it.

Then explain what you meant by it. Anyhow, your model doesn't actually illustrate the trade-offs involved, it's just something you made up and never connected to reality. That step is crucial.

How is it disconnected from reality? I invite you to produce a better model of the tradeoffs involved in allocating resources, such as learning time.

{How is it connected to reality?}

If you don't agree that people have multiple choices of what to spend their time on, I don't know what else to say.

There's an alternate model already on this page. But the issue has never been that there aren't choices, but that you've never shown a connection between your model and reality.

Where's the alternative? The big undefined function?

As far as connection to reality, do you agree there are time trade-offs?

Yes, it's the function. While we haven't exactly specified it (how could we since each situation will be different), it's also true that yours is likewise not completely specified. It does however, have the advantage of not assuming that the relationship between the cost of learning and its effect on productivity is linear. It also doesn't assume that the effects of learning different things are independent. There is plenty of reason to believe that both those assumptions are false.

Good! We are starting to begin to get somewhere. If linear is a bad approximation, what would you propose is a better approximation and why do you believe it to be so? In actuality, often it's a case of diminishing returns. For example, plumbing 101 will have a vastly stronger affect on a plumber's productivity than a hydraulics degree per time spent in school (ignoring tuition cost for now).

And I do believe that the affects of learning different things is approximately linear for most learning candidates. Learning PhotoShop and learning Ruby and Rails are not going to have a lot of interaction between each other, for example. We can deal with specific overlaps as we encounter them. We can still flesh out a general model without having it be accurate for every situation, correcting for those as encountered.


If I had the foresight to know exactly which knowledge would most increase my productivity, then perhaps an economic analysis would do me a lot of good. But, in practice, I often use knowledge in ways that I do not foresee. And if I did not have that knowledge, I would be unable to judge how much it costs me. (I have not studied past econ 101, but my impression is that opportunity costs are invisible in most economic theories.) Anyhow, a consequence of my imperfect foresight is a belief that people should never stop learning and discovering opportunities that they would otherwise have never recognized. LuckFavorsThePreparedMind?. Learning doesn't need to be entirely separate from doing; there is plenty space for a little experimentation in any development process. But we do need to find an effective balance between getting it done and learning new ways to do it.

I am not against learning. If you believe that was my point, then you have misunderstood my point. -t

I do not suggest you are against learning. But it is my impression that you do not actively pursue learning, and that you often seek and find thin excuses to remain ignorant and unprepared with respect to whatever topic you're arguing. This impression comes from pages such as BookStop, MindOverhaulEconomics, SelfStandingEvidence, and this one. The evidence for my impression is entirely circumstantial but thoroughly whelming.

That's because you have a simplistic (and wrong) cartoon version of me in your stubborn little head. I probably have an overly simplistic cartoon version of you in that I picture you as a professor or tutor of graduate school students who wants to justify the cost and time of extra education to the market place in order to feel better about your career and worth as a person. It's perhaps more complicated than that, but it's the image that keeps coming back based on your writings. It's my opinion you don't understand the market-place and human nature. There's nothing wrong with a personal endeavor to learn more of everything and anything. However, such suggestions or specific suggestions may not scale to the larger market-place. Platitudes like LuckFavorsThePreparedMind? does not tell us anything about the big picture, or at least how to allocate the trade-offs.

Of course my view of you is simplistic. You only present one small aspect of yourself on this forum. But my simplistic view is nonetheless sufficient to recognize you as someone who argues outside his competencies. And you regularly seem to demonstrate hypocrisy, for example: it isn't as though your economic theory will actually tell you how to allocate tradeoffs - in practice, you'll never have valid numbers to fill the variables in your equations.

Re: "Outside your competencies" - you don't prove your claims. You cannot objectively prove that I am wrong, you just claim claim claim. Any idiot can claim I'm wrong or that they are right. The victory goes to the articulator of evidence, not the claimer. Claims are cheap, penny a dozen. If you are so "competent", you fail to demonstrate it with real evidence. I can only conclude you are the one outside your competencies, such as the scientific process. Projection. You often mistake ArgumentByElegance for objective results improvement. Don't claim I'm stupid or wrong, prove I'm stupid or wrong with objective evidence. If you are incapable of such, then SHUT THE FUCK UP, arrogant bastard! EarnYourRightToInsultMe.

Comprehension of logic, proofs, and the scientific process are among those things I am convinced are outside your competencies. Psychology, too. Anyhow, if I was trying to convince someone that you're stupid, it surely wouldn't be you. That'd be stupid of me, analogous to trying to convince a rock that it's a rock. And I'm happy to LetTheReaderDecide from the ample circumstantial evidence you provide.

As far as "valid numbers", it's issues to discuss. We may never come to a conclusion, but we can look at the factors. you seem to be presenting a false dichotomy of OfficialCertifiedDoubleBlindPeerReviewedPublishedStudy versus nothing. If you believe that learning certain techniques improves one's market worth more than other things, I assume you have a reason why you believe such and can turn such thoughts into thoughtful descriptions and explanations and examples. I would hope that, but if you are a poor articulator of the grand powerful ideas in your head, then I guess we're stuck with mere claims and insults that the other guy is a "dummy".

I don't present a dichotomy. Platitudes, rules of thumb, best practices and patterns - such things are concise and practical. Unlike your formula.

Who determines this "best practices"? Where are they documented? You are dreaming again in Shouldville. Marketplace? It's rejected Lisp and related techniques in the long run, instead producing DomainSpecificLanguages.

Communities, big companies, standards bodies, marketplace, etc. all contribute to best practices. I'm not attempting to argue in favor of Lisp, though I would note that almost every mainstream language now supports some sort of near first-class block/lambda/etc. expression.

Your characterization of the content of "best practices" is suspect.

Then feel free to use someone else's characterization (cf. BestPractice, http://en.wikipedia.org/wiki/Best_practice). Regardless, it's a community thing, and subject to change over time.

Most of that appears to be written by consultants selling "methodologies". I don't see any real science, at least for IT. The work that would have to be done is something along the lines of taking 100 companies, randomly splitting them into two groups, 50 use technique X and 50 don't, and see which group of companies are the most profitable after 15 years. I see the medical community doing such with patient health, but not much in IT. SoftwareEngineering is still in the dark ages with regard to science.

{So you've been saying for, what, two decades now? For that to be a sustainable argument, you need to demonstrate -- via logical proof or empirical evidence -- that most characterisations are "written by consultants selling 'methodologies'". To be considered compelling or convincing, you'll need to establish rigorous definitions for both "consultant" and "methodology", and then perform a comprehensive literature survey. This is not unreasonable -- it's essentially the same process followed by researchers, and students doing MSc. (and sometimes undergraduate) dissertations and theses. If you feel SoftwareEngineering is still in the dark ages, then do something about it: contribute some genuine research and publish.}

I don't have the money and staff to do real studies. But the default is not that the methodology consultants are correct. The default is "unknown" or nil. I don't need to "establish rigorous definitions" of consultants or anybody for that to remain true. Lack of evidence for B is not necessarily evidence for A. If I don't have strong evidence that Bigfoot knocked over the milk, that doesn't mean that a flying saucer knocked it over.

{Real studies can be done with neither money nor staff. In academic terms, this is called "self-funded research", but it simply means you've taken a little time and made a little effort all by yourself.}

Without some credentials or reviewable history of such studies, it's difficult to just walk into companies to get such info, especially with somebody like me who lacks charm (ya don't say?). If it's so easy, I suggest you give it a try.


Here's a somewhat extreme example of the "don't target too high" pattern.

I've seen an org with 6 people with enough skill to edit basic HTML. 4 of these 6 are graphics experts who also know HTML, and the other 2 are power users who picked up HTML along the way. But there are only 2 "programmers" with knowledge of scripting or programmed templating.

For this reason the organization is reluctant to use content factoring techniques, such as scripting to avoid repetition. If there is an urgent change request, none of the 2 programmers might be available to make the changes. (Lack of availability problems have happened more than once.) If the org sticks with direct HTML, along with copy-and-paste repetition of many page elements and page patterns, then the chance of finding an HTML editor on staff is much higher since there are 6.

This org values the ability to make quick changes for specific pages but doesn't want to hire more programmers. Because the 6 HTML-only staff members are in scattered departments, training them in abstraction techniques is not a viable option, for at least political reasons related to the scattering.

If I was in charge of the whole org, I may shuffle around staff and position titles to better handle this situation, but I am not. Those calling the shots are not so technically savvy and that's not likely to change; thus they want PlugCompatibleInterchangeableEngineers (or experts) even if that means less use of abstraction.

In general, higher abstraction requires more expensive or less available experts such that companies tend to design staffing patterns around the lowest common denominator.

Twenty years ago, some companies were reluctant to use computers and at best would grudgingly outsource IT work to their accounting firm. Now it's exceptionally rare to find a viable firm without any computerisation, but the above is certainly the modern equivalent to the techno-Luddites of two decades past.

Not sure if those are equivalent. I agree the above firm should bite the bullet and get a real WCMS, but that would require a staffing increase, which they may not be ready to do. Maybe in a future boom they may finally think, "Let's see, now that we have money, what can we fix up that's been messy and neglected?".


See also: MindOverhaulEconomics, IfFooIsSoGreatHowComeYouAreNotRich, ArgumentByElegance, StaffingEconomicsVersusTheoreticalElegance, AreWeBiasedTowardLaborIntensive, WebStoresDiscussion, BlubParadox, HighDisciplineMethodology


CategoryEconomics, CategoryEmployment


EditText of this page (last edited August 18, 2014) or FindPage with title or text search