The Greatest Developer Fallacy Or The Wisest Words You’ll Ever Hear?

Wisdom"I will learn it when I need it"! I've heard that phrase a lot over the years; it seems like a highly pragmatic attitude to foster when you're in an industry as fast-paced as software development. On some level it actually IS quite pragmatic, but on another level I am annoyed by the phrase. It has become a mantra for our whole industry which hasn't changed said industry for the better. The problem is this, in the guise of sounding like a wise and practical developer, people use it as an excuse to coast. There is too much stuff to know, it is necessary to be able to pick certain things up as you go along – part of the job. But, there is a difference between having to "pick up" some knowledge as you go along and doing absolutely everything just-in-time.

The whole industry has become a bunch of generalists, maybe it has always been this way, I just wasn't around to see it, either way I don't like it. Noone wants to invest the time to learn anything really deeply, not computer science fundamentals, not the latest tech you're working with, not even the language you've been coding in every day, for the last few years. Why bother, it will be replaced, superseded, marginalised and out of fashion before you're half way done. I've discussed this with various people many times, but noone seems to really see it as a problem. "Just being pragmatic dude". In the meantime we've all become clones of each other. You want a Java developer, I am a Java developer, you're a Java developer, my neighbour is a Java developer. What differentiates us from each other – not much! Well, I've got some jQuery experience. That's great, so you know how to build accordion menu then? Sure, I Google it and steal the best code I find :). In the meantime, if you need to hire a REAL expert (in anything, maybe you're writing a fancy parser or need to visualise some big data), I hope you've stocked up on beer and sandwiches cause you're gonna be here a while.

Ok, there are ways to differentiate yourself, I have better communication skills, which is why I do better. That's important too, but, developers differentiating themselves based on soft skills rather than developer skills – seems a bit twisted. We all communicate really well but the code is a mess :). Hell, I shouldn't really talk, I am a bit of a generalist too. Of course I'd like to think of myself as a T-shaped individual, but if we're completely honest, it's more of a dash-shaped or underscore-shaped with maybe a few bumps :). To the uninitiated those bumps might look like big giant stalactites – T-shaped indeed. You seem like an expert without ever being an expert, just one advantage of being in a sea of generalists.

Investing In Your Future

I don't want to preach about how we should all be investing in our professional future, everybody knows we should be. Most people probably think they are infact investing, they rock up to work, write a lot of code maybe even do some reading on the side, surely that must make them an expert in about 10 years, and a senior expert in 20 (I keep meaning to write more about this, one day I'll get around to it :))? But, if that was the way, every old person would be an expert in a whole bunch of stuff and that is emphatically not the case. Maybe it is just that people don't know how to build expertise (there is an element of truth to this), but I have a sneaking suspicion that it's more about lack of desire rather than lack of knowledge. What was that saying about the will and the way – totally applicable in this case?

I've gone completely off-track. "Investing in professional future" is just one of those buzzword things, the mantra is "I will learn it when I need it". It was good enough for my daddy and it has served me well so far. Let's apply this thinking to finance, "I will invest my money when I think I need the money". Somehow it doesn't quite have the same kind of pragmatic ring to it.

You Don't Know What You Don't Know

We've all had those moments where you're going through major pain trying to solve a problem until someone comes along and tells you about algorithm X or technology Y and it makes everything fast and simple. It was lucky that person just happened to be there to show you the "easy" way, otherwise you would have spent days/weeks trying to figure it out and it would have been a mess. You can't be blamed for this though, you don't know what you don't know. For me, this is where the "I will learn it when I need it" mentality falls over. You can't learn something if you don't know it exists. Google goes a long way towards mitigating this problem, but not all the way. There are plenty of problems you will encounter in the wild where you can beat your head against the wall ad infinitum unless you know what class of problem you're looking at (e.g. if you know a bit about searching and constraint propagation, solving sudoku is easy, otherwise it's really quite hard). You can't learn about an algorithm if you're not aware of it or its applicability. You can't utilise a technology to solve a problem if you don't even realise it has that capability. You're not going to always have someone there to point you in the right direction. I am willing to bet there is a billion lines of code out there right now which can be replaced with a million lines of faster, cleaner, better code simply because whoever wrote it didn't know what they didn't know.

I seem to be making a case for the opposite side here, if knowing what you don't know is the ticket then surely we should be focusing on breadth of knowledge. Superficial awareness of as much stuff as possible should see us through, we'll be able to recognise the problems when we see them and then learn what we need more deeply. Except it doesn't work like that, skimming subjects doesn't allow you to retain anything, our brain doesn't work that way. If we don't reinforce and dig deeper into the concepts we quickly page that information out as unimportant, it is a waste of time (think back to cramming for exams, how much do you remember the next day?). However if you focus on building deeper understanding of a subject – in an interesting twist – you will gain broad knowledge as well (which you will actually be able to retain). My grandad is a nuclear physicist, several decades of working to gain deeper knowledge of the subject has made him an expert, but it has also made him an excellent mathematician, a decent chemist, a pretty good geologist, a fair biologist etc. Just some empirical evidence that seeking depth leads to breadth as a side-effect.

Can You Learn It Fast Enough

Learn fast

Some stuff just takes a long time to learn. I am confident I can pick up an ORM framework I haven't seen before without even breaking stride, I've used them before, the concepts are the same. But what if you need to do some speech to text conversion, not quite as simple, not enough background. Hopefully Google will have something for us to copy/paste. That was a bad example, only research boffins at universities need to do that crap. How about building a website then, we all know how to do that, but what if you need to do it for 10 million users a day. We just need to learn everything about scaling, I am sure the users will wait a month or two for us to get up to speed :). Yeah, I am just being stupid, all we need to do is hire an expert and … errr … oh wait, we're all out of beer and sandwiches.

Why Should I Care

Working with experts is freaking awesome. You may have experienced it before, everything they say is something new and interesting, you learn new tricks with every line of code, you can almost feel your brain expanding :). You want to learn from the experts, so it's really sad when you can't find any. Since everyone is only learning when they "need it", noone can teach anything to anyone. The chunk of wisdom here is this, you want to work with experts, but the experts also want to work with experts, so what are you doing to make sure the experts want to work with you? Being able to learn something when you need it is a good skill to have, but you can not let it be your philosophy as a developer. Yes it is a big industry you can't learn everything, so pick something and make sure you know it backwards, if you're curious enough to follow up on the interesting bits, you'll find you have a decent grasp of a lot of other stuff at the end. And if you do a good enough job, other super-awesome-smart people are going to want to come and hang around you cause they'll be able to learn something from you and you'll be able to learn much from them. Everybody will be a winner.

Image by SamueleGhilardi and SpecialKRB

  • Pingback: Tweets that mention The Greatest Developer Fallacy Or The Wisest Words You’ll Ever Hear? -- Topsy.com

  • James Pollock

    Good to see you writing again Alan! Agree with you very strongly about the working with experts thing, although it can be both inspiring and deflating meeting someone who knows an order of magnitude more than yourself about something!

    • http://www.skorks.com Alan Skorkin

      Hey James,

      Yeah, I promise myself I’ll be more consistent with it and then some interesting things take over my attention for a week or 7 and it all goes out the window :(. I really should make the time, since writing helps me reinforce and internalize concepts – order out of chaos and all that :).

      I think it is a little deflating at first but then it spurs me on to learn more and get better and if they hang around long enough, by the time they leave you find you’ve picked up so much stuff from them you know an order of magnitude more than you did before, definitely good stuff.

  • http://reshefmann.com Reshef Mann

    It reminds me this article – http://www.infoq.com/articles/better-best-practices.
    The author says that most people will remain in a competent level but won’t go further.
    Just learn the minimun to get the job done.

  • Nick

    Life is too short – do whatever you enjoy the most.

    • http://www.skorks.com Alan Skorkin

      Agreed if you don’t enjoy your work you should consider doing something else, if you do enjoy it, you should want to be good at it.

  • http://www.greenlemon.com.au Age

    I, unfortunately, am a jack of all trades… I’ve often thought about what it would be like to be an expert. I’ve never been passionate enough about a particular subject (maybe other than Business) to focus my undivided attention at becoming an expert in that subject.

    However, being a jack of all trades gives me the ability to be on the move constantly. I don’t have to pigeon hole myself into any type of career.

  • Pingback: “I will learn it when I need it”! | .Net

  • Ahmed

    Excellent post Alan.
    As you said, no one will wait you till you understand what’s going on. Alot of experts will eat your lunch. So you have to be prepaired.
    I think “I will learn it when I need it”! should be changed to “I will learn it BEFORE I need it”!
    Ahmed.

  • Pingback: XNA/WP7/.NET/Tips&Tricks/and more… | CactuarJ's NotePad

  • http://www.jacobsingh.name Jacob Singh

    Okay, you are absolutely right, but the problem is less w/ the developer than it is with the industry. Specifically the startup industry. When I started out, I dove deep because there was so much to learn to make myself employable at a company making a good wage working on interesting stuff.

    Now, I am there. And I work 50hrs a week to keep our product humming, cramming in new features as fast as executives can make buzzwords for them and fixing bugs as fast as people can tweet them and embarrass us. I don’t know about you, but I don’t get a quota of time when the product stops being used that I can go dig into Hadoop (something I’d love to do).

    Therein lies the problem. If you’re building deep knowledge you don’t immediately need, you are probably are an apprentice or scrapping consultant or you’re in college for computers. They are kinda the same thing. Or you have no family and spend 18hrs a day on the comp.

    How do we resolve this?

    • http://www.skorks.com Alan Skorkin

      Hi Jacob,

      Yeah I hear you, this is one of those eternal trade-off questions. The key to those is always to find a balance. The first question you have to ask yourself is, are you working at a sustainable pace, if the answer is no, then you have bigger problems than finding time to learn. Other than that, you have to identify a balance that will work for you, you won’t be able to spend as much time as you want building your skills if you have a family and a social life, but neither should it mean you totally abandoning your self-study efforts.

      I find that it often helps to narrow your area of interest. Hadoop is a big topic, just to get started in it could me intimidating enough to make you give up. How about looking at some of the algorithms it employs in detail, or studying some of the problems it might be used to solve. Break it down into bite-sized chunks, then even if you have half an hour here and there you can use it productively. All those half-hours add up eventually.

      • Eggspurt

        Very nice article. I always like taking jobs where I am the dumbest guy in the room (even if just marginally so).

        To those worried about their skills becoming obsolete, that just reinforces the value of a good education. There are many skills (especially in math) that cannot become obsolete (i.e. 2+2 == 4 yesterday, today and tomorrow).

        On the trade-off question, I have two engineering degrees and currently work as a software engineer. Having a solid fundamental science and mathematical background is important for good software (especially if the software solves hard problems). However, having had my nose stuck in books or in front of computer for most of my life has definitely hurt my social life (unmarried, no kids).

  • Lin

    I absolutely agree with everything you’ve written here – but I hope nobody’s surprised at the situation in this industry. I got laid off? Well, if I’m broadly competent but not an expert, I have a lot of choices: I can look at listings for Java developers, RoR developers, etc, maybe non-developer/management things using those soft skills. As an expert, I’d have one choice: whatever it is I’m an expert in. No one’s hiring for that? SOL. Of course, if someone is hiring, I might be in a better position than in the first case.

    The fact is that it’s frankly scary to consider dedicating the time, effort, sweat, tears, money, etc. that’s required to become an expert, especially when the payoff is far from certain (being compensated accordingly, respect of your peers, etc). Ever talk to a grad student? :) So for most people who are simply most interested in (a) a steady paycheck and (b) doing something that doesn’t bore them out of their gourds, it really does make a lot more sense – yes, in the sense of being pragmatic – to go in the other direction and be competent in enough areas to have a reasonable assurance of maintaining (a) and (b) despite the vagaries of business.

    So overall it’s a toss-up, and with how fast things go obsolete I’m not the least bit surprised that as an industry we’ve collectively decided to chuck expertise for “I’ll just Google it”.

    Sorry for the long comment … but as someone just starting my career & trying to figure out what the hell is the best thing to focus on from here on out, it’s inevitable this subject would get me fired up. Always glad to see another post from you!

    • http://www.skorks.com Alan Skorkin

      Hi Lin,

      And that’s exactly the issue. I don’t really mind if people study different areas, nothing wrong with being broadly competent, but you have to actually make sure that you’re competent. And even if you’re not competent at least learn enough to be able to fake it with anyone except a real expert. Most people don’t do either of those, so it comes down to “I don’t know much about anything, but I still want to get paid for it”, the reason it all works is that the industry is willing to put up with it. It’s a great mystery of the universe :), not really we can identify many reasons for this, but you’d need way more room than a single comment.

  • http://www.dan-menard.com Dan M

    Great post!

    To me the big problem with this is that it makes us reactive. If we only learn as we go, we’ll get caught in a loop where all we do is figure out the next thing we need to learn, and learn it, and repeat. Our projects will coast along the bare minimum forever.

    It’s much healthier to be proactive: find something that intests you, learn it, and apply it to something you’re working on. Now you’re innovating, doing work that matters, and making the industry better.

  • David

    I believe that saying you were looking for was: “where there’s a will, there’s a way”.

    You really should have googled this. Lazy writing. *tsk tsk tsk*

    ;)

    • http://www.skorks.com Alan Skorkin

      Hi Dave,

      Good to see that you can still unerringly zero in on the heart of the matter :P. How San Francisco treating you?

      • David

        It’s good. Good to see you writing again. Keep it up, buddy!

  • subramanian.g

    Wow This is amazing. I know this is going to sound cliched but this is exactly what I feel and a source of eternal confusion for me depth vs breadth.

    I try to follow a general rule of thumb, being in an image processing based desktop application development.
    1) Try to get a hang of the technology in terms of the formula and an intuitive grasp of the scope of the technology and what it does.
    2) The various architectural features that I can leverage in order to optimally implement the technology.

    Consequently, I am trying to opt a breadth wise approach to the technology and a in depth approach of Computer Architecture specifically the performance enhancing paradigms. But as always, I get caught up in the midst of a mad result, delivery oriented schedule. :(

  • http://www.hackinghat.com Steve Knight

    Hmm, yes. Some good and interesting points here, I’ve been actually been thinking about blogging something on breadth vs. depth of experience recently so this is really helpful!

    Anyway, in answer to one of your points. I started my career when the internet wasn’t as ubiquitous as it is now (about 1995). I was a C++ programmer and everything I learnt came from books or courses. When Java happened I probably would have declared myself a UNIX/C++ expert but since then, thanks to the Internet, I have used a wide-range of technologies and languages on a ‘pick-it-up-as-I-go-along’ basis and haven’t done any C++ for a very long time.

    It’s hard to keep up and stay on top of so many languages and technologies, so I’m not really an expert in anything any more. So it would be fair to say my ‘T’ / ‘I’ look much more like a very long Weetabix. But having solved the same problem in many different ways I think I know a thing or two about technology in general.

    So perhaps this is just a question of dimension, by which I mean perhaps my I am an expert generalist?! The proverbial jack-of-all-trades?

    • http://www.skorks.com Alan Skorkin

      Hi Steve,

      You don’t need to know the API’s off by heart to be considered an expert (although it does look impressive :)), as long as you know enough to have an informed opinion and be able to back it up you’re doing well. There is nothing wrong with being an expert generalist, most people are surface generalists, you put them side-by-side, you can really tell the difference.

  • Edin

    Great post and very interesting topic. I’ve struggled with it myself and came to the conclusion that having a systematic learning approach is a way to go. How that ‘systematic approach’ will look like is completely up to you. Whatever works for you is good. For me, it’s reading books. Say, for example that my goal is to become expert in .NET and C#. Just by reading following three books would differentiate me from large number of .NET developers:

    1. CLR via C#
    2. C# in Depth
    3. Advanced .NET Debugging

    I’m pretty convinced that one can read these books in 3-4 months period. “When there’s a will there’s a way.”. The key for achieving it is to be persistent. Imagine what can be done in few years of applying such approach.

    Thanks for great post.

  • http://codosaur.us Dave Aronson

    Great post as always. The rules I’ve long tried to follow is to always be learning something new, that would probably be useful in the near future. I take a look at what’s popular (or at least gaining traction), that I think I might like. That’s why I originally learned C++, HTML, Java, Javascript, Perl, and Python, and why I dove deeper into Ruby than was required for the job at the time, including learning Rails. (Well, okay, that one was mainly ‘cuz I *liked* it, balanced by not voluntarily getting much beyond beginner stage in Perl ‘cuz I *dis*liked it, as you may recall from our exchange re http://www.skorks.com/2010/05/why-i-love-reading-other-peoples-code-and-you-should-too/.)

    At work I’m currently getting up to speed on Actionscript, Flex, Flash, etc., plus honing my fancy Javascript effects. At home, I’m also checking out the newer versions of Ruby both on and off Rails (having finally bought an *Intel-based* Mac) and more of the Ruby ecosystem (like getting good with Cucumber tests, and assorted other gems, plugins, etc.). After all that, next up is probably to finally get an iPad or iPhone or iPod Touch, and learnObjective-C (of which I’ve actually written a few lines before), and the whole IOS ecosystem. Whatever. In any case, always *something* not-yet-obsolete and likely to be fun (for geeky values of “fun”).

    • http://www.skorks.com Alan Skorkin

      Hi Dave,

      Yeah I do recall our exchange on that post :).

      I actually quite like your approach, you learn what you would enjoy but tempered with a bit of practicality (i.e. what might be useful in the near future), and I totally agree that always learning something new is key. Once you stop learning new things, you’re just waiting to get old enough to retire :).

  • http://www.jeremyhutchings.com Jeremy Hutchings

    “I will learn it when I need it”

    It has become a mantra for our whole industry
    ——————
    I disagree the “whole” industry, that’s basically condescending and some what holier than thou.

    There are a lot of cowboys out there, and even more inept managers pushing for development and zero learning.

    There are a lot of us that aren’t and as for the opening line, I hate it as well, most of what we do as a job revolves around investigation and learning not coasting.

  • http://cyberfox.com/blog Morgan

    Greetings,
    I want to agree…I _really_ do. But…

    I’ve been an expert; I’ve been ‘The Guy’ you hire for a particular problem. I was an expert on Netware Loadable Modules. I was an expert on DOS viruses. I was an expert on eBay’s system (and to some extent I still am, with a sniping program that’s around 11 years old and still actively maintained). I’ve got a very few other areas of expertise historically, but those will suffice for now…

    Expertise has an expiration date, and not just because the field changes; sometimes entire areas of skill Just Go Away (NLMs, DOS-style viruses). It becomes meaningless, something to provoke blank looks from younger developers when they read your resume. Would you want to be a RATFOR expert right now? (I wanted to say COBOL, but you’ve probably at least heard of COBOL.) I bet there are a few out there. Sure, in a lot of cases you can leverage your expertise into a related field. I leveraged NLM development into being knowledgable about threaded software development before most folks had heard of threads (ooh, that was hipster-esque of me). Being in the DOS anti-virus field (disassembling hundreds of viruses by hand and writing removers for them) gave me a lot of insight into assembly code and computer security, and I certainly believe that knowing assembly makes me a better programmer, but the field of actual expertise is _gone_.

    It didn’t make me a threading expert, a computer security expert, or an assembly language expert. It made me aware of related fields, which is great, but not the level of depth to call myself an expert.

    Generalists survive and change. Specialists ossify.

    Or: {epic list of what someone should be able to do, followed by: } Specialization is for insects. -Robert A. Heinlein

    Maybe at any given time you should have something you’re an expert in. But be a generalist first, because if you don’t, your field of expertise may just plain go away, and then…then you’re in very deep trouble.

    – Morgan

    p.s. A last image; imagine general knowledge as a wide plain, and expertise as a mountain jutting up from that plain. Over time (geologic eras expressed in Internet Time) the mountain will wear down until it’s just a hill. The plain remains. You can keep throwing up mountains, but in the end…the plain remains.

    • http://www.skorks.com Alan Skorkin

      That’s a great comment, I do agree with you, the point I was making was as you said, you should always strive for expertise at any one point in time (whatever area you’re in), but it would certainly be stupid to narrow your field of vision just to that area, software can be very unforgiving that way.

  • http://jc-blatherings.blogspot.com/ Julio C. Villasante

    Very well put. Agree with you in almost every word. Always felt that way, deep first knowledge is almost always better than bread first knowledge, and it is interesting that story of your father in which the first led him to the latter.
    We need more experts in the industry, is a pleasure to work with them, period, at first they can seem too much to us but with time you can’t imagine how is like working without them, I kown ’cause I’ve been there and miss it a lot nowadays, experts give out solutions without much ado.
    Anyway, keep up the good writing, I’m recently found your blog and immediately added you to my feeds.

  • http://theprogrammersparadox.blogspot.com/ Paul W. Homer

    Yep. In that sense, programming is too easy. You just slap a list of instructions together, and keep slapping until it mostly works. If you’re lucky, you’ll never have to learn what’s going on underneath, or above.

    If you do understand however, you can elegantly construct more with less, while making it significantly less fragile and more reusable. But that depth isn’t mandatory to making a living, isn’t appreciated and it seems to be getting rarer and rarer (as the wanton complexity gets worse and worse).

    Paul.

  • http://developmentality.wordpress.com Nick Dunn

    Very good blog post. I think the most salient point out of all of it is “You don’t know what you don’t know.” So the developer who claims to be pragmatic by doing “just in time” learning is probably going to end up spending more time by naïvely implementing features than one who’s spent a little longer up front learning some of the theory behind the domain and using some of the established algorithms in the field.

    I think my biggest problem is that by exposing myself to new technologies / stories every day (via Hacker news, for instance), it distracts me from focusing on any of the number of things I’ve already started to learn about. It’s a lot easier to start a side project or start learning about a new thing than continue to work on it or gain more expertise in that area. But that’s slightly tangential to the point of this post.

    You might like the work of Chad Fowler; he writes a lot about investing in yourself as a knowledge worker in The Passionate Programmer (http://www.amazon.com/Passionate-Programmer-Remarkable-Development-Pragmatic/dp/1934356344/ref=sr_1_1?ie=UTF8&qid=1300810707&sr=8-1) and in his columns in the Pragmatic Bookshelf magazine (http://pragprog.com/magazines).

    • http://www.skorks.com Alan Skorkin

      Hi Nick,

      I tend to have the same issue sometimes with Hacker news and my feeds :). I’ve read the passionate programmer (more specifically I read the first edition, with the less politically correct title :)), everyone should give it a quick read, well worth it.

  • Julien

    Hi,
    I agree that ‘just in time learning’ can be problematic and this is why I think that one should never stop learning or practicing (even notice that even the world’s best orchestra still rehearse).

    For some reason most ‘experts’ have met where just people that at some point decided that they knew enough in their field and then stop learning (i.e expert SCJP java programmer that have been using frameworks for the last 10 years …).

    I, for one, feel the needs to always know more about more so I guess I’m a broad π-shaped person and I consider myself lucky to have both a photographic memory and a decent deductive skill. Both help a lot when you want to quickly learn a lot.

  • Self-serving crap from an egotist

    Sorry mate, whilst there is undeniably some truth in the generalisations you make about learning, this whole thing is nothing but a massive self-serving advertisement cum ego trip.

    Look at the title. Look at your stupid grin. Look at your words like “thats why I succeed”, as if you are obviously doing better at life than other people. Here’s a notion: you’re not succeeding. You’re tripping over your own fucking ego, and walking around with blinkers on.

    I wholeheartedly suggest that you go climb a mountain, eat a magic mushroom, race a yacht, learn scuba diving or something you’ve NEVER DONE BEFORE, with NOTHING to do with computers or business, preferably something YOU ARE TERRIBLE AT. Maybe oil painting?

    Even out your brain – you need some time away from the machines.

    • http://www.skorks.com Alan Skorkin

      Gee, thanks for the …. whatever that was. I have done many things in my life that had nothing to do with machines. I was terrible at most of them at first, but then I did them for years and got much better, see where I am going here. Anyways, long story short, my name is right there at the top of everything I say, I don’t see yours though.

  • Damian

    Please let me share a comparison with you …

    In the Health and fitness world the comparable example would be – How do I become fit? For comparison sake we’ll say that being fit is like being an expert.

    To me “being fit” means that you have a really deep base fitness built up over many years, so when a challenge arises you know you can achieve it after undertaking a short period of conditioning training.

    To me “being an expert” means that you have a really deep base knowledge built up over many years, so when a challenge arises you know you can achieve it after undertaking a short period of learning.

    Example – A world class boxer normally trains 12 weeks for a specific title fight. This is because they have a very deep base fitness which they have built over many years of training. If they didn’t have this base behind them then this 12 week period would balloon to maybe years.

    A world class software developer without specific knowledge of a technology could become considered a expert in that technology very quickly because of their base knowledge. In fact they could become an expert in this technology maybe quicker than someone who has worked for many years in this specific field. And if they didn’t have this base knowledge behind them then this could also balloon out to maybe many years.

    Now if you go over to many fitness/running/cycling blogs they’ll be arguing “how you go about building a base fitness”….. So I guess how you build that base knowledge or fitness is a much debated topic. But one thing I know that holds true – If they have practised in their field since they were young then there is a great chance that they will be well ahead of others who have come to the party late (as in age). And if you have come to the “tech party” late (maybe without a degree behind you) then you are going to find catching up a real struggle even if you are more gifted than most.

    So something I guess I have always wanted (having come to the party late myself, although not that late) is a syllabus that someone in the development field could go through and learn. I find it very frustrating trying to learn things from the internet because I think that articles can be either factually incorrect or misleading. While much of the information you can uncover via google is written for people with either more knowledge or less knowledge than yourself, which makes things very difficult to “get”.

    I guess you’ll know my frustrations if you talk to a person who has tried to get fit after a lifetime of doing nothing…. It aint easy!

  • Pingback: 转载:这是给开发者的弥天大谎还是至理名言? « kongxiantao's Blog

  • Pingback: 程序员的谎谬之言还是至理名言? | 酷壳 - CoolShell.cn

  • Pingback: 高兴的一天 « Flyer's Blog

  • Shaochen Huang

    Great post, but I still have to say, even though you did well in pointing out the issues/fallacy many developers have in common, you did not really point out the direction developer should follow to avoid it.

    Being pragmatic is considered virtue in the engineering world, as engineer, we are to solve problems using skills needed to solve them. We are very precise about what the problem is and what skills are needed. Anything irrelevant is considered waste of time. This is also reflected at the time when MBA-like sales guys try to sell something to an engineer. Engineers get very easily pissed off when they hear floated or irrelevant shit.

    I remember in the book , stories were told how little patience and tolerance Hackers have when premature questions with little research/self efforts were made before the question were raised to them.

    As an engineer, I tend to agree with this attitude, even with some respect about this. As I hate much more so with the non-practical bullshit approaches embraced by politicians, lawyers, a handful of consultants and sales man, so on and so forth. And I cannot agree more with you on the fact that “skimming subjects doesn’t allow you to retain anything, our brain doesn’t work that way”.

    My take on this is that, as daily jobs/tasks overwhelm our brain with near term requirements, sometimes, we should pause and step back or rise higher to get an overview of all the technologies, the code we are writing, the framework that wire components above. And pull learning experience of data structure and algorithm from antiqued memory, revisit the principles of computer sciences, the philosophies behind the scene, and try to find the common fundamentals of all detailed works.

    Anyways, really great post, I just hope there are some more comments on topics like “how to decide what new technologies to learn”, “how to step back and find common fundamental principles between all the different technologies learnt along the way”

  • Pingback: 这是给开发者的弥天大谎还是至理名言? | longda

  • googya

    hi,SKORKS, I read this article from http://coolshell.cn/articles/4235.html, and the web site’s owner translated it into Chinese. your opinions are very nice and profound. cause I am a beginner of IT knowing little about what’s the right thing to do, I maybe makes many mistakes if nobody who is like you tells the rules of doing the right thing…..

    BTW , the words in the first pic means there is nothing to worry about!!!!
    “心无罣碍”,meaningful….

  • shaohaizhou

    “I will learn it when I need it” the chineses means “当我需要它的时候就去学习它”,but it no efficiency

  • Pingback: 这是给开发者的弥天大谎还是至理名言? | Article2 Web

  • Pingback: 这是给开发者的弥天大谎还是至理名言? | buptghost

  • Pingback: Luna Links – Backflips, Work Schedules and | Luna Tractor – Lunokhod

  • Pingback: 这是给开发者的弥天大谎还是至理名言? | 枫林火山

  • Pingback: This is for developers of the big lie or wisdom?Blogger (highly recommended)

  • Pingback: 程序员的谎谬之言还是至理名言? - 黑色 | 黑色

  • Pingback: 程序员的谎谬之言还是至理名言? | Krains'blog|程序人生|励志经典

  • Pingback: 这是给开发者的弥天大谎还是至理名言? - 闲了吧-程序员创业邦

  • Researcher

    Some of the author’s comments are biased. “That was a bad example, only research boffins at universities need to do that —crap—.” Real researchers don’t just search and copy; they re-re-re-search, thunk, create, and verify. The author’s statement is an insult of researchers, and he must apologize for this biased comment. Note that researchers like me DON’T USE TERMS LIKE “CRAP” to describe others; only gangsters and idiots do that.

  • Pingback: 疯言疯语 » 这是给开发者的弥天大谎还是至理名言?

  • Pingback: 程序员的谎谬之言还是至理名言? | multiprocess