Stories about Software


How Developers Stop Learning: Rise of the Expert Beginner

Beyond the Dead Sea: When Good Software Groups Go Bad

I recently posted what turned out to be a pretty popular post called “How to Keep Your Best Programmers,” in which I described what most skilled programmers tend to want in a job and why they leave if they don’t get it. Today, I’d like to make a post that works toward a focus on the software group at an organization rather than on the individual journeys of developers as they move within or among organizations. This post became long enough as I was writing it that I felt I had to break it in at least two pieces. This is part one.

In the previous post I mentioned, I linked to Bruce Webster’s “Dead Sea Effect” post, which describes a trend whereby the most talented developers tend to be the most marketable and thus the ones most likely to leave for greener pastures when things go a little sour. On the other hand, the least talented developers are more likely to stay put since they’ll have a hard time convincing other companies to hire them. This serves as important perspective for understanding why it’s common to find people with titles like “super-duper-senior-principal-fellow-architect-awesome-dude,” who make a lot of money and perhaps even wield a lot of authority but aren’t very good at what they do. But that perspective still focuses on the individual. It explains the group only if one assumes that a bad group is the result of a number of these individuals happening to work in the same place (or possibly that conditions are so bad that they drive everyone except these people away).

I believe that there is a unique group dynamic that forms and causes the rot of software groups in a way that can’t be explained by bad external decisions causing the talented developers to evaporate. Make no mistake–I believe that Bruce’s Dead Sea Effect is both the catalyst for and the logical outcome of this dynamic, but I believe that some magic has to happen within the group to transmute external stupidities into internal and pervasive software group incompetence. In the next post in this series, I’m going to describe the mechanism by which some software groups trend toward dysfunction and professional toxicity. In this post, I’m going to set the stage by describing how individuals opt into permanent mediocrity and reap rewards for doing so.

Learning to Bowl

Before I get to any of that, I’d like to treat you to the history of my bowling game. Yes, I’m serious.

I am a fairly athletic person. Growing up, I was always picked at least in the top 1/3rd or so of any people, for any sport or game that was being played, no matter what it was. I was a jack of all trades and master of none. This inspired in me a sort of mildly inappropriate feeling of entitlement to skill without a lot of effort, and so it went when I became a bowler. Most people who bowl put a thumb and two fingers in the ball and carefully cultivate tossing the bowling ball in a pattern that causes the ball to start wide and hook into the middle. With no patience for learning that, I discovered I could do a pretty good job faking it by putting no fingers and thumbs in the ball and kind of twisting my elbow and chucking the ball down the lane. It wasn’t pretty, but it worked.

It actually worked pretty well the more I bowled, and, when I started to play in an after work league for fun, my average really started to shoot up. I wasn’t the best in the league by any stretch–there were several bowlers, including a former manager of mine, who averaged between 170 and 200, but I rocketed up past 130, 140, and all the way into the 160 range within a few months of playing in the league. Not too shabby.

But then a strange thing happened. I stopped improving. Right at about 160, I topped out. I asked my old manager what I could do to get back on track with improvement, and he said something very interesting to me. Paraphrased, he said something like this:

There’s nothing you can do to improve as long as you keep bowling like that. You’ve maxed out. If you want to get better, you’re going to have to learn to bowl properly. You need a different ball, a different style of throwing it, and you need to put your fingers in it like a big boy. And the worst part is that you’re going to get way worse before you get better, and it will be a good bit of time before you get back to and surpass your current average.

I resisted this for a while but got bored with my lack of improvement and stagnation (a personal trait of mine–I absolutely need to be working toward mastery or I go insane) and resigned myself to the harder course. I bought a bowling ball, had it custom drilled, and started bowling properly. Ironically, I left that job almost immediately after doing that and have bowled probably eight times in the years since, but c’est la vie, I suppose. When I do go, I never have to rent bowling shoes or sift through the alley balls for ones that fit my fingers.

Dreyfus, Rapid Returns and Arrested Development

In 1980, a couple of brothers with the last name Dreyfus proposed a model of skill acquisition that has gone on to have a fair bit of influence on discussions about learning, process, and practice. Later they would go on to publish a book based on this paper and, in that book, they would refine the model a bit to its current form, as shown on wikipedia. The model lists five phases of skill acquisition: Novice, Advanced Beginner, Competent, Proficient and Expert. There’s obviously a lot to it, since it takes an entire book to describe it, but the gist of it is that skill acquirers move from “dogmatic following of rules and lack of big picture” to “intuitive transcending of rules and complete understanding of big picture.”

All things being equal, one might assume that there is some sort of natural, linear advancement through these phases, like earning belts in karate or money in the corporate world. But in reality, it doesn’t shake out that way, due to both perception and attitude. At the moment one starts acquiring a skill, one is completely incompetent, which triggers an initial period of frustration and being stymied while waiting for someone, like an instructor, to spoon-feed process steps to the acquirer (or else, as Dreyfus and Dreyfus put it, they “like a baby, pick it up by imitation and floundering”). After a relatively short phase of being a complete initiate, however, one reaches a point where the skill acquisition becomes possible as a solo activity via practice, and the renewed and invigorated acquirer begins to improve quite rapidly as he or she picks “low hanging fruit.” Once all that fruit is picked, however, the unsustainably rapid pace of improvement levels off somewhat, and further proficiency becomes relatively difficult from there forward. I’ve created a graph depicting this (which actually took me an embarrassingly long time because I messed around with plotting a variant of the logistic 1/(1 + e^-x) function instead of drawing a line in Paint like a normal human being).

This is actually the exact path that my bowling game followed in my path from bowling incompetence to some degree of bowling competence. I rapidly improved to the point of competence and then completely leveled off. In my case, improvement hit a local maximum and then stopped altogether, as I was too busy to continue on my path as-is or to follow through with my retooling. This is an example of what, for the purposes of this post, I will call “arrested development.” (I understand the overlap with a loaded psychology term, but forget that definition for our purposes here, please.) In the sense of skills acquisition, one generally realizes arrested development and remains at a static skill level due to one of two reasons: maxing out on aptitude or some kind willingness to cease meaningful improvement.

For the remainder of this post and this series, let’s discard the first possibility (since most professional programmers wouldn’t max out at or before bare minimum competence) and consider an interesting, specific instance of the second: voluntarily ceasing to improve because of a belief that expert status has been reached and thus further improvement is not possible.. This opting into indefinite mediocrity is the entry into an oblique phase in skills acquisition that I will call “Expert Beginner.”

The Expert Beginner

When you consider the Dreyfus model, you’ll notice that there is a trend over time from being heavily rules-oriented and having no understanding of the big picture to being extremely intuitive and fully grasping the big picture. The Advanced Beginner stage is the last one in which the skill acquirer has no understanding of the big picture. As such, it’s the last phase in which the acquirer might confuse himself with an Expert. A Competent has too much of a handle on the big picture to confuse himself with an Expert: he knows what he doesn’t know. This isn’t true during the Advanced Beginner phase, since Advanced Beginners are on the “unskilled” end of the Dunning Kruger Effect and tend to epitomize the notion that, “if I don’t understand it, it must be easy.”

As such, Advanced Beginners can break one of two ways: they can move to Competent and start to grasp the big picture and their place in it, or they can ‘graduate’ to Expert Beginner by assuming that they’ve graduated to Expert. This actually isn’t as immediately ridiculous as it sounds. Let’s go back to my erstwhile bowling career and consider what might have happened had I been the only or best bowler in the alley. I would have started out doing poorly and then quickly picked the low hanging fruit of skill acquisition to rapidly advance. Dunning-Kruger notwithstanding, I might have rationally concluded that I had a pretty good aptitude for bowling as my skill level grew quickly. And I might also have concluded somewhat rationally (if rather arrogantly) that me leveling off indicated that I had reached the pinnacle of bowling skill. After all, I don’t see anyone around me that’s better than me, and there must be some point of mastery, so I guess I’m there.

The real shame of this is that a couple of inferences that aren’t entirely irrational lead me to a false feeling of achievement and then spur me on to opt out of further improvement. I go from my optimistic self-assessment to a logical fallacy as my bowling career continues: “I know that I’m doing it right because, as an expert, I’m pretty much doing everything right by definition.” (For you logical fallacy buffs, this is circular reasoning/begging the question). Looking at the graphic above, you’ll notice that it depicts a state machine of the Dreyfus model as you would expect it. At each stage, one might either progress to the next one or remain in the current one (with the exception of Novice or Advanced Beginner who I feel can’t really remain at that phase without abandoning the activity). The difference is that I’ve added the Expert Beginner to the chart as well.

The Expert Beginner has nowhere to go because progression requires an understanding that he has a lot of work to do, and that is not a readily available conclusion. You’ll notice that the Expert Beginner is positioned slightly above Advanced Beginner but not on the level of Competence. This is because he is not competent enough to grasp the big picture and recognize the irony of his situation, but he is slightly more competent than the Advanced Beginner due mainly to, well, extensive practice being a Beginner. If you’ve ever heard the aphorism about “ten years of experience or the same year of experience ten times,” the Expert Beginner is the epitome of the latter. The Expert Beginner has perfected the craft of bowling a 160 out of 300 possible points by doing exactly the same thing week in and week out with no significant deviations from routine or desire to experiment. This is because he believes that 160 is the best possible score by virtue of the fact that he scored it.

Expert Beginners in Software

Software is, unsurprisingly, not like bowling. In bowling, feedback cycles are on the order of minutes, whereas in software, feedback cycles tend to be on the order of months, if not years. And what I’m talking about with software is not the feedback cycle of compile or run or unit tests, which is minutes or seconds, but rather the project. It’s during the full lifetime of a project that a developer gains experience writing code, source controlling it, modifying it, testing it, and living with previous design and architecture decisions during maintenance phases. With everything I’ve just described, a developer is lucky to have a first try of less than six months, which means that, after five years in the industry, maybe they have ten cracks at application development. (This is on average–some will be stuck on a single one this whole time while others will have dozens.)

What this means is that the rapid acquisition phase of a software developer–Advanced Beginnerism–will last for years rather than weeks. And during these years, the software developers are job-hopping and earning promotions, especially these days. As they breeze through rapid acquisition, so too do they breeze through titles like Software Engineer I and II and then maybe “Associate” and “Senior,” and perhaps eventually on up to “Lead” and “Architect” and “Principal.” So while in the throes of Dunning-Kruger and Advanced Beginnerism, they’re being given expert-sounding titles and told that they’re “rock stars” and “ninjas” and whatever by recruiters–especially in today’s economy. The only thing stopping them from taking the natural step into the Expert Beginner stage is a combination of peer review and interaction with the development community at large.

But what happens when the Advanced Beginner doesn’t care enough to interact with the broader community and for whatever reason doesn’t have much interaction with peers? The Daily WTF is filled with such examples. They fail even while convinced that the failure is everyone else’s fault, and the nature of the game is such that blaming others is easy and handy to relieve any cognitive dissonance. They come to the conclusion that they’ve quickly reached Expert status and there’s nowhere left to go. They’ve officially become Expert Beginners, and they’re ready to entrench themselves into some niche in an organization and collect a huge paycheck because no one around them, including them, realizes that they can do a lot better.

Until Next Time

And so we have chronicled the rise of the Expert Beginner: where they come from and why they stop progressing. In the next post in this series, I will explore the mechanics by which one or more Expert Beginners create a degenerative situation in which they actively cause festering and rot in the dynamics of groups that have talented members or could otherwise be healthy.

How Software Groups Rot: Legacy of the Expert Beginner

Edit: The E-Book is now available. Here is the publisher website which contains links to the different media for which the book is available.

  • Priscilla Oppenheimer

    This is great. The “rise of the Expert Beginner” happens in course development and technical writing also (my fields). I have many colleagues who have very limited skills or training in those areas, but assume that they are experts. In my fields, unlike software development (I think), we also have to deal with the attitude of non-skilled practitioners that there’s “nothing to it” and anybody can do it. That’s just not true. (You are a great writer, by the way. Most software developers are not. πŸ™‚

    • Hi Priscilla — thanks for reading and for the kind words. I imagine that this phenomenon is broadly applicable in some form or another, though I limited it to software development since that’s my main area of familiarity. I don’t envy you having to deal with laymen considering themselves experts. You’re correct in that software developers don’t have to deal with that much (though we do deal with the “pointy haired bosses” of Dilbert fame who give orders and make estimates without having much understanding).

  • Pingback: How Software Groups Rot: Legacy of the Expert Beginner | DaedTech()

  • Anilkumar GT

    Great Post Erik ….. i completely agree with you…. our industry, especially the service providers are filled with big titled “managers” who know nothing about software development…. and as you rightly said they do not even know what they don’t know or are just hanging back in the same company because they are too afraid (rightly so) to even try for a job outside….
    the additional step in the DK effect makes perfect sense… excellent…

    • PM

      It has nothing to do with “managers” as you call them. It is more about “programming prima donnas” who are a mix of arrogance and incompetency. The managers who try to influence development’s details without appropriate domain/technical knowledge are something else (maybe more destructive, but still different). Basically, lack of humility is bad, whoever you are and whatever is your role in the organization.

    • Thanks — glad you enjoyed. As PM suggests, I was really thinking more developers (though generally more senior/tenured ones) than line managers, though I think that the kind of managers you describe are sometimes plucked from the ranks of Expert Beginners in some discipline or another and tasked with running a team in reporting fashion. I don’t know that I’m enough of a cynic to believe that upper management promotes according to the Dilbert Principle (http://en.wikipedia.org/wiki/The_Dilbert_principle ), but I’m not surprised that you’ve encountered the sorts of managers you describe. That is definitely a parallel and probably related phenomenon to the one that I’ve sought to describe here.

  • Great article. I now see that for years I was an “Expert Beginner” myself. I thought I knew everything I needed to know and that there was no task I couldn’t tackle with my existing skills. Thanks to the influence of close friends and the rise of Twitter I became aware of a much larger world. I am still on my journey and feel that I have a long way to go yet.

    One minor oversight in your article and in the state diagram perhaps is that you don’t mention any way to escape the “Expert Beginner” loop. My own experience demonstrates that this is possible and we can progress to the “Competent” stage once we realise and admit that there is a bigger picture.

    • Agreed about the possibility of progressing out of the Expert Beginner state. I think this is the problem representing something sort of fuzzy like human nature with something clear cut like a state machine diagram. The reason I opted to depict it the way that I did is that I think your situation is less common (especially since the rise of social interaction tools that you mention) than the situation of many who are content simply to advance some in their careers and call it quits on learning for good. The Expert Beginner that most people will encounter will forever be cycling back to the same level.

      Kudos to you, by the way, for embracing those techs as an opportunity to learn and broaden your horizons. I think that’s really the key to continued improvement in craft. And thanks for reading and for the feedback πŸ™‚

  • Pingback: A Blog Grows Up: DaedTech Year in Review for 2012 | DaedTech()

  • Pingback: Programming | Annotary()

  • Pingback: The Council of Elders Anti-Pattern | DaedTech()

  • Pingback: How Stagnation is Justified: Language of the Expert Beginner | DaedTech()

  • Ceryni

    This is indeed a dangerous place be, the “expert beginner”. However, I would point out that at times, todays companies unconsciously incourage advanced beginners towards expert beginner. Being in this situation myself, newbies are often pressured into stepping up and taking charge in an effort to be noticed, climb the ladder, etc…If a company wants to cultivate a graduation path to competency, they will need to make sure their newbies know that its okay to be unsure. 2 cents πŸ™‚

    • Angus McIntyre

      Worse still, at smaller development shops, very little time (if any) is actually provided to grow those skills because every single requirement is critical and needs to be finished yesterday.

  • Mordecai.M

    I am afraid that complacency in my work environment has derailed my progression (which was quite healthy at the beginning) and led me into Expert Beginner territory. My question is will it be easier to break free of this here or do I need a more encouraging environment? I fear I fall under the premise set forth in your linked article about mediocre talent sticking for longer periods because of this, as well. I am an important piece of our team here but am pretty sure I am not at the level I should be for such a senior position (even if my compensation is below-market for my skill AND my position).

    I guess I just painted a picture of a company that I shouldn’t want to work for, huh?

    • P

      Well, there are people who want to work in a great environment, and people who want to make an environment great… If you came to a better environment would it become an even better place because of you? Work on yourself first.

      • Mordecai.M

        I do feel like a bright spot in our company but our leadership focuses on efficiency more than on personal growth. So while I would love to be able to take time every week (day?) to work on side projects that interest me it’s not condoned within the company. All of my growth has to happen in line with projects we are working on. I am regularly assigned very similar work and am not asked to tackle drastically different ideas very often.

        I feel like I have a great personality for the environment, I just get frustrated with management more than anything. But I do understand I need to take steps to make myself the best I can be (which I work hard on in personal life but realize have diminished recently in a developer sense). This article (and the mediocrity one) just got me really reflecting on my own situation/worth.

  • Drew H.

    As a young developer setting forth into this territory freshly out of college, i find your words bracing and inspiring. I’m currently working as the lead Android developer for a startup (having ~2years of personal experience, and 1 year of professional experience) and already feel vaulted to a position of value, to a position where my skills may be valued a lot higher than what they actually are.

    However, i understand that i know nothing, and that i have whole fields and methodologies i have yet to comprehend or explore. I have large thanks to this perspective through one of the channels you talked about, developer communities, which i actively try to take part in and follow. I hope to never lose sight of this cold hard fact, and to never lose my ambition to explore beyond what i currently know.

    Thanks for this insightful post.

    • I’m glad that you liked the post, and I think you have a great attitude. Odds are that if you’ve spent a year programming professionally and are already a lead, it’s through a combination of fortunate circumstance/good opportunity and you probably demonstrating a lot of aptitude for learning and getting things done, both of which are likely to serve you well.

      Hang on to that humility, and I say that not so much because I find humble people appealing (though I do), but because with the humility and ambition comes a hunger and a refusal to be satisfied. If you’ve never seen it, this is a great post from a very prominent and accomplished member of the development community:


      If a voice in the back of your head is always whispering that you’ve got to keep proving your worth, Expert Beginner status is the last thing you’ll have to worry about.

  • Fernando

    great article. thanks for the insights!

  • Great post – I had thoughts around this subject previous to reading this article and it really hit home. Lets hope being self-aware makes it possible to escape from the Expert Beginner oubliette.

    • I meant to reply to this a few days ago, but I wanted to thank you for teaching me a new word (oubliette). I’m always pleased when I get a new word to use. πŸ™‚

  • Pingback: How Developers Stop Learning: Rise of the Expert Beginner | DaedTech | StuffThatSpins.com()

  • orukusaki

    Great article, it puts into words nicely why I’m leaving my current job and “down-titling” in the process.

  • It’s relative. In absolute terms, there may never be experts. Only expert beginners as there are almost always higher levels.

    • Well, I’d certainly agree that expertise in a field tends to be measured (in most fields) relatively, but I don’t know that there can’t be actual experts. One can avoid being an Expert Beginner simply by recognizing that meaningful self-improvement and learning from others is possible.

  • jsonmez

    Just reading this now, but this is awesome! So much great information in this post!

    • Thanks — glad you liked. And by the way, I hope the switch to full time self-employment is off to a good start for you.

      • jsonmez

        So far so good. Lots of work, but I am glad to be doing it.

  • It is frustrating when you are in a “rotting” environment filled with expert beginners in that these people don’t necessarily realize they are in this state, and the organization as a whole formulates their own standards and definitions of “common sense”. At that point, one’s efforts to improve the whole for the sake of the whole is then looked at as dissension or being argumentative.

    I think that’s a major motivator for “those who can” to move on – the place with greener pastures just (hopefully) offers a higher potential that is more inline with the reality they know to exist, albeit not in their current environment.

    • The point about the whole group adopting and following their own (increasingly divergent from the industry) way of doing things is an excellent one. As you point out, it becomes really hard to take because you start to doubt yourself a bit and wonder if you aren’t, in fact, the real outlier. That’s a phenomenon that I’ve heard a lot of people describe over the years.

  • Pingback: Weekly links | Vaibhav Gupta()

  • Pingback: Gervais / MacLeod 23: The shodan programmer | Michael O. Church()

  • Rob Myers

    Appreciated that you point out how we can get trapped in that Expert Beginner state, and how to avoid it: Socializing with others in the industry, and always trying to learn new things about your industry.

    For developers, I recommend pair-programming. Nothing makes two developers realize that they both have a lot to learn than to work together when creating a solution. That was how I got out of my 13-year rut as the “Unix/C Development Guru.” I’ve since become a much better developer, coach, and teacher using the same technique: Seek out and work with people who are experts at a particular skill. A little humility, patience, and listening goes a long way.

  • Pingback: Guerilla Guide to Developer Interviews | DaedTech()

  • erikhollensbe

    Thank you for writing this. I see this a lot, especially among programmers and operations professionals in their mid-30s (I too am in this age group).

    It frequently feels like I’m the only one that feels this way, heh.

  • Your article resonates alot with what I have been fighting all this years, now at least it has a name. Over my early years as a developer I was trying to be a jack of all trades, seemingly master of none … which seems to be paying off now as I progress up the stack to Project Management from a technical background.

  • Pingback: Expert Beginner | Luke's Lessons()

  • Pingback: Most interesting links of April ’13 « The Holy Java()

  • Pingback: 103 RR Ruby Gems()

  • Bill

    You mention the Dead Sea Effect as an influence, but is there any objective, quantifiable studies that prove that it is a real thing?

  • Pingback: Issue 52 – Sometimes You Have To Be Your Own Hero | TLN()

  • Rohit5

    In truth, there are lot many expert beginners than beginners itself :), especially in field of Java, C++, PHP and JavaScript.

  • John

    “This serves as important perspective for understanding why it’s common to find people with titles like β€œsuper-duper-senior-principal-fellow-architect-awesome-dude,” who make a lot of money and perhaps even wield a lot of authority but aren’t very good at what they do.”

    I don’t think they care since they’re making good money. But seriously good doctors, lawyers, athletes all make good money and won’t be satisfied with anything less for their services. The problem with the IT industry is that the “I don’t care what I’m paid as long as I get to code monkey for 12 hours a day” attitude prevails. I’m sorry but if I’m a top of the line programmer and you’re offering me a pathetic $50K/year but lots “self rewarding work”, I’m going to look elsewhere. Why would I work myself to death for less money while doctors, lawyers etc would never dream of doing that?

  • Pingback: Notes On Job Hopping: You Should Probably Job Hop | DaedTech()

  • Pingback: How Developers Stop Learning: Rise of the Expert Beginner()

  • Pingback: How Developers Stop Learning: Rise of the Expert Beginner()

  • Pingback: UX training was a good idea » sanlive()

  • Pingback: Links – October 2013 | Ninad's Blog()

  • Pingback: How Developers Stop Learning: Rise of the Exper...()

  • Pingback: A Blogger Grows Up: DaedTech Year in Review for 2013 | DaedTech()

  • Pingback: One thing a month: my 2013 in projects » sanlive()

  • Pingback: Less Than Dot - Blog - Awesome()

  • Pingback: The right place at the right time | Novi's()

  • Pingback: As A Junior Software Engineer Should I Say That Something Has Been Done Wrong If I Feel So? | Click & Find Answer !()

  • Pingback: Help Yourself To My Handy Extension Methods | DaedTech()

  • Pingback: Intro to Unit Testing 7: Overcoming Inertia and Objections | DaedTech()

  • Pingback: Learning & Skill Acquisition Theories | Pearltrees()

  • Pingback: Less Than Dot - Blog - AngularJS vs Knockout – Final Thoughts (9 of 9)()

  • Pingback: The Larger Significance of the Royal TDD Rumble | DaedTech()

  • johnnyanonymous

    I suspect this happens, especially often in software, because of it’s a hierarchical group of skills rather than a single skill. You need to master a single skill in order to move on to the larger community. The ones who move on do well. The ones who don’t become “expert beginners.”

  • Neal Bamford

    Have seen this happen in enclosed environments such as banks and government in my “IT consultant” roles, where they have self imposed IT islands shut off from everywhere else so that although they know internal process very well they might not know the best trends, practices etc. or be in a mindset to seek them out and introduce them. Having said that that’s where (as an independent and veterrend practitioner) I can add value and be employed. Loved the article

  • Pingback: Honesty and the Workaday Blogger’s Connundrum | DaedTech()

  • Pingback: I’m on a mission to overcome my “repeat beginner” status | livi.erickson()

  • 1. Most people are expert beginners. If you’re not continuously improving, you’re an expert beginner. That means creating new knowledge when you reach the edge of the clouds, not just standing there with your “I was at the edge of the clouds” t-shirt.

    2. A lot of great programmers don’t have the human skills or the balls to leave their jobs. A lot of bad programmers do, so trying to identify the good ones with those who leave is likely to be counter-productive.

  • Pingback: Quora()

  • I’ve just realised, thanks to this article, that I have done myself a great service to my level of competency by working on hundreds of different projects as a contractor. Because of that, I’ve gone through the whole application development lifecyle hundreds of times, have been involved with huge codebases I had no part in designing, and have quickly learned what does and doesn’t work in terms of tools, processes and design. By quickly, I mean 4 years.

    However, it has stunted me in other areas. Namely, working with large teams, and working on very long-term projects, of which I have not much experience.

    You’d have to be mind-numbingly ignorant to fall into Expert Beginnerism. All you have to do to illuminate your ignorance is read a blog or book by highly experienced software engineers. If you’re an Expert Beginner in software, you’re likely an Expert Beginner in every area of your life.

    • Moving around a lot definitely makes it hard to reach the kind of local maximum required for thinking that one’s on top. The last sentence of your post here especially intrigues me, though. I’ve added a draft placeholder to write about this concept, once I’ve mulled it over. If you’re interested, stay tuned.

  • Very well written. I enjoyed reading this.

  • Brodie Capel

    I feel that I am currently in the expert beginner loop, but I think by acknowledging that I am able to do my best to jump across to the more important path.

    • It could be, but in my experience, the Expert Beginner archetype tends not to be very introspective or interested in self-evaluation. In other words, the fact that you’re acknowledging that you could be falling into this trap almost seems to indicate that you’re not.

  • Chris Dowsett

    I see this in analytics too – where expert beginners know a lot of tools and some good analysis techniques. But it stops there. They often don’t move to innovation, don’t try new things by breaking old techniques and don’t improve measurement programs.

    • As I wrote this, what was in my head was observations of people in my field. After I posted it and reflected a bit, it struck me that this probably applied to a lot of fields, at least to varying degrees. So that makes sense to me.

  • Interesting, I hope we do not take this as a scientific guide though as everyone goes through a learning curve even when they are familiar with coding, and, there are humanistic aspects as well such as memory, recall and preferred learning style.

  • Greg Jorgensen

    Thank you. Great article, and well-written. You have described something that was only a vague idea in my own mind in a very clear and thoughtful way.

    I can confirm your conclusions and analysis from my own (long) career as a programmer. Moving up through the ranks was not so easy back when programming was almost always supporting of a “real” business division; the rise of software development as an independent activity, often with no domain expertise or supervision, has made the problems you describe worse.

    In many programming environments expert beginners are the majority, so peers reinforce the idea that there is nothing more to be learned. New technologies (or old successful ones) are dismissed very casually if they aren’t cool today on Hacker News (this sucks, that sucks, that’s old, etc.).

    I work pretty much exclusively on fixing and maintaining legacy code written by other programmers, and it’s very rare for me to see code that conforms to even 1970s-era principles of good software design. The Daily WTF is a great example, and Jeff Atwood has observed and illustrated this problem for a while.

    I feel like maybe I’m an expert beginner in some ways since I just today found your article after someone pointed it out to me based on similar comments I was making in an online discussion.

    • Glad you liked, and thanks for the kind words! The notion you mention of software development evolving into something besides a cost center is an interesting point to consider. Seems like this would have given sudden ‘legitimacy’ to people for no particular reason, and there’d have been a sudden rash of newly minted expert beginners.

      Incidentally, I offer this piece of feedback a lot, but I always feel that anyone introspective enough to wonder whether he or she might be an expert beginner most likely isn’t one πŸ™‚

      • Greg Jorgensen

        I noticed that as software development moved out of individual business units (as a cost center) and turned into an activity of its own it seemed that there was less predictability, less domain expertise, more job hopping, and even fewer women in the profession. When I started programming (1978) I worked with women programmers, analysts, managers and didn’t think anything of it. Now when I’m in a development shop I wonder what happened to them

        I hope I’m not an expert beginner at this point, I was kidding. But for just a second reading the article I had that thought. I also suck at bowling.

  • Florain

    hmm… made me think quite a bit, very interesting to reflect on one self. I have gone done down this road for sure, some time in my developer life ( I hope i really left it behind). As frontend-developer, i found it very helpful to broaden my view by looking into stuff like various UX/UI, databases/concepts, docker, nodejs to get behind the big picture. I think knowing about the dunning-kruger effect and one of my fav. quotes, helped me quite a bit to stay humble and continue trying to progress:

    “It is not good to settle into a set of opinions. It is a mistake to put forth effort and obtain some understanding and then stop at that. At first putting forth great effort to be sure that you have grasped the basics, then practicing so that they may come to fruition is something that will never stop for your whole lifetime. Do not rely on following the degree of understanding that you have discovered, but simply think, “This is not enough.”
    – Tsunetomo Yamamoto

    Thx, for the great read!

  • Great post. I referenced it a couple of years back when talking about creative fields: http://www.genjipress.com/2013/04/learning-curveball-dept.html

    • Interesting stuff — and thanks for the link/mention there!

  • Lincoln Maurice

    I think there’s a range of factors which you neglect which is that some people don’t know their market value, some people get comfortable, regardless of toxicity, some don’t realise their worth, some think what they can learn is more valuable than what they can earn, while some just don’t feel confident with their interview and negotiation skills, in spite of ninja-level status in general dev competencies.

    You’re definitely right, when you take the human elements out of the whole thing. But it can somewhat render the situation moot.

    • Josh

      Ironically all of those points you mentioned would probably reflect someone who really has no drive or motivation to learn or research the things they should be learning and researching at a > Expert Beginner level. I was one of those people who didn’t know my worth so I started interviewing to get a better idea of what the market in my area was really willing to pay me. I ended up realizing that I was seriously underpaid after 3-4 interviews, none of them blinked an eye when I asked for 25k more than what I was making and I rejected 2 offers before accepting a third for even more. If you want to be an expert, you need to get out and obtain it, you wont become one without putting in serious effort.

      Also, Interviewing is a skill like any other. Without practice you probably wont be very good. I know I wasn’t until my last couple interviews, By the time I interviewed at my current job, I was more prepared and educated on what employers really wanted, and more importantly what I really wanted out of a company.