“People who can’t or won’t think for themselves” is how a friend of mine characterised his customers as a freelance Windows NT admin (a very good one—and good NT admins aren’t cheap). “There’s a lot of money in sewage.”
Outsourcing thinking to anyone who can be convinced or coerced into doing it seems quite common to me. People will so often do things just because someone else demands it of them. I have commented before on how my ridiculously charming daughter [1] is remarkably creative in intellectual laziness, and how I have to be sure not to let her get away with it. She will damn well learn not to be lazy just because she can!
I blank on programming, which is not so good for a sysadmin to a development team. I don’t write anything more than shell scripts and I have the algorithmic insight of someone who doesn’t. I suppose I should learn more.
Too many people consider computers malevolent boxes of evil completely unamenable to any rational consideration, even in theory. Your “Sandra” example is many programmers I’ve worked with.
[1] and it works on people other than me, e.g. the man in the coffee shop at 5pm yesterday she asked to get her a babycino (frothy milk with chocolate on top). He switched the machine back on after he’d switched it off and cleaned it just because the cute little girl asked for a 50p drink.
I’m a researcher in programming languages, and I’ve dabbled a little in discrete math and algorithms research. Though my advice may be a little slanted, “algorithmic insight” is what I’m most expert in. Perhaps, then, the following is right.
If you “blank” on programming, but already know system administration and shell scripts, then the “lack” you’re describing is probably pretty small.
I strongly believe that what might look like “algorithmic insight” is mostly the product of obsessively picking apart designs and implementations—not just computer programs, but any engineered mechanism. It’s a great habit to inculcate, and (I think) leads naturally to gradually understanding how everything works.
I bet, though, that you could massively boost your own algorithmic insight by the following program of reading and practice:
First learn (if you haven’t already) a worthwhile programming language. C has a certain simple charm, but most industry-standard languages are pretty horrible. Java is mediocre, but limiting. I suggest starting with Python, and learning C, Racket, and either Haskell or OCaml. (Again, though—I’m a PL researcher, so this is possibly biased.)
Actively, carefully read CLRS. It’s detailed, doesn’t assume much prior knowledge, and covers 98% of the algorithms any good programmer ever uses outside specialties like graphics or scientific coding. By “actively read”, I mean to actually do some of its exercises, and actually implement some of its algorithms. Rephrase its ideas in your own words; stop and review whenever any idea is unclear.
Work some of the exercises on Project Euler or SPOJ. These are excellent sources of small, algorithmically-rich problems. You can do them in essentially any language you like, and they give good feedback.
As a sysadmin, you’ve probably already learned some of the pragmatics of managing complex systems. Other than algorithms, as above, and the most core-basic ideas about computers, good programming is about managing system complexity. Thus, implement at least a full program or two that you’d like to see exist. Games and toys are nice, as they’re rich with creative opportunities, and so the work you’re duplicating isn’t so irritating. Demand of yourself the freedom to fiddle with and re-implement that program until the code feels clean—until it feels like solid mathematics, where every piece connects to every other piece for only sound, solid, logical reasons with fairly short descriptions.
I’d mix these activities all together. Learn algorithms and languages by implementing with them; learn the techniques of good implementation by implementing interesting algorithms and programs that you want to exist, and (eventually) solving problems with code.
fiddlemath originally sent this as a private message, and I suggested they post it publicly because it is an excellent comment! I might even do some of the stuff in it …
[1] and it works on people other than me, e.g. the man in the coffee shop at 5pm yesterday she asked to get her a babycino (frothy milk with chocolate on top). He switched the machine back on after he’d switched it off and cleaned it just because the cute little girl asked for a 50p drink.
Good customer service? Regardless of the ‘cuteness’ of the customer, I think most employees wouldn’t say ‘no’ unless the shop had already closed.
I wouldn’t purport to be able to write a full post of sufficient quality!
But I can say the obvious is true: I become aware just what a soft touch I am, even when I realise it’s a bad idea; I have to keep in mind what I’m supposed to be doing and what’s a good idea and why I’m not doing the thing that’s a good idea; I occasionally come to awareness carrying a Hello Kitty balloon and a fairy princess sticker book and a drink and an ice cream and then doing a stack trace to work out precisely how I got there, while the small child is demanding more things.
Keep the sensible thing firmly in mind as much as possible, and don’t put up with tantrums. The child wants candy all the time, but your job is actually raising her properly. Children are highly evolved manipulators, for really obvious reasons. Mine appears particularly charming, based on how others appear similarly susceptible. It helps if I channel her mother, who is not a soft touch at all because this is her third rather than her first. Stuff like that.
I thought that was the definition of a parent’s job, and the arguments come in the details. Perhaps that’s dodging the question. I’d think it reasonably uncontroversial to say that the answer wouldn’t involve giving in to the child’s every demand for physical or mental candy, though.
I haven’t read the Caplan book, but I can say that having a child is way cool. Watching a small intelligence grow.
Seems any such post would be hampered by the factor that makes Poker a both a good test of rationality, and a dubious way to develop rationality: Large variance in outcomes despite identical efforts, and (partly because of that) delayed and noisy feedback on the quality of your efforts.
“People who can’t or won’t think for themselves” is how a friend of mine characterised his customers as a freelance Windows NT admin (a very good one—and good NT admins aren’t cheap). “There’s a lot of money in sewage.”
Outsourcing thinking to anyone who can be convinced or coerced into doing it seems quite common to me. People will so often do things just because someone else demands it of them. I have commented before on how my ridiculously charming daughter [1] is remarkably creative in intellectual laziness, and how I have to be sure not to let her get away with it. She will damn well learn not to be lazy just because she can!
I blank on programming, which is not so good for a sysadmin to a development team. I don’t write anything more than shell scripts and I have the algorithmic insight of someone who doesn’t. I suppose I should learn more.
Too many people consider computers malevolent boxes of evil completely unamenable to any rational consideration, even in theory. Your “Sandra” example is many programmers I’ve worked with.
[1] and it works on people other than me, e.g. the man in the coffee shop at 5pm yesterday she asked to get her a babycino (frothy milk with chocolate on top). He switched the machine back on after he’d switched it off and cleaned it just because the cute little girl asked for a 50p drink.
I’m a researcher in programming languages, and I’ve dabbled a little in discrete math and algorithms research. Though my advice may be a little slanted, “algorithmic insight” is what I’m most expert in. Perhaps, then, the following is right.
If you “blank” on programming, but already know system administration and shell scripts, then the “lack” you’re describing is probably pretty small.
I strongly believe that what might look like “algorithmic insight” is mostly the product of obsessively picking apart designs and implementations—not just computer programs, but any engineered mechanism. It’s a great habit to inculcate, and (I think) leads naturally to gradually understanding how everything works.
I bet, though, that you could massively boost your own algorithmic insight by the following program of reading and practice:
First learn (if you haven’t already) a worthwhile programming language. C has a certain simple charm, but most industry-standard languages are pretty horrible. Java is mediocre, but limiting. I suggest starting with Python, and learning C, Racket, and either Haskell or OCaml. (Again, though—I’m a PL researcher, so this is possibly biased.)
Actively, carefully read CLRS. It’s detailed, doesn’t assume much prior knowledge, and covers 98% of the algorithms any good programmer ever uses outside specialties like graphics or scientific coding. By “actively read”, I mean to actually do some of its exercises, and actually implement some of its algorithms. Rephrase its ideas in your own words; stop and review whenever any idea is unclear.
Work some of the exercises on Project Euler or SPOJ. These are excellent sources of small, algorithmically-rich problems. You can do them in essentially any language you like, and they give good feedback.
As a sysadmin, you’ve probably already learned some of the pragmatics of managing complex systems. Other than algorithms, as above, and the most core-basic ideas about computers, good programming is about managing system complexity. Thus, implement at least a full program or two that you’d like to see exist. Games and toys are nice, as they’re rich with creative opportunities, and so the work you’re duplicating isn’t so irritating. Demand of yourself the freedom to fiddle with and re-implement that program until the code feels clean—until it feels like solid mathematics, where every piece connects to every other piece for only sound, solid, logical reasons with fairly short descriptions.
I’d mix these activities all together. Learn algorithms and languages by implementing with them; learn the techniques of good implementation by implementing interesting algorithms and programs that you want to exist, and (eventually) solving problems with code.
fiddlemath originally sent this as a private message, and I suggested they post it publicly because it is an excellent comment! I might even do some of the stuff in it …
Good customer service? Regardless of the ‘cuteness’ of the customer, I think most employees wouldn’t say ‘no’ unless the shop had already closed.
It had just closed. But they know her, so yes. And she’d just burst into tears.
Having a daughter is a serious live-fire exercise in how to think rationally despite your cognitive biases.
I would be deeply interested in a post on that subject.
I wouldn’t purport to be able to write a full post of sufficient quality!
But I can say the obvious is true: I become aware just what a soft touch I am, even when I realise it’s a bad idea; I have to keep in mind what I’m supposed to be doing and what’s a good idea and why I’m not doing the thing that’s a good idea; I occasionally come to awareness carrying a Hello Kitty balloon and a fairy princess sticker book and a drink and an ice cream and then doing a stack trace to work out precisely how I got there, while the small child is demanding more things.
Keep the sensible thing firmly in mind as much as possible, and don’t put up with tantrums. The child wants candy all the time, but your job is actually raising her properly. Children are highly evolved manipulators, for really obvious reasons. Mine appears particularly charming, based on how others appear similarly susceptible. It helps if I channel her mother, who is not a soft touch at all because this is her third rather than her first. Stuff like that.
It’s not at all obvious what this means. Have you read Bryan Caplan’s book? Or, at least, a selection of his blog posts?
I thought that was the definition of a parent’s job, and the arguments come in the details. Perhaps that’s dodging the question. I’d think it reasonably uncontroversial to say that the answer wouldn’t involve giving in to the child’s every demand for physical or mental candy, though.
I haven’t read the Caplan book, but I can say that having a child is way cool. Watching a small intelligence grow.
Seems any such post would be hampered by the factor that makes Poker a both a good test of rationality, and a dubious way to develop rationality: Large variance in outcomes despite identical efforts, and (partly because of that) delayed and noisy feedback on the quality of your efforts.
As would I.
Thirded, especially because I have daughter on the way!