
How Developers Stop Learning: Rise of the Expert Beginner - zerogvt
https://daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner/
======
Animats
What that tells us is to design development environments for the expert
beginner. Expert beginners are cost-effective. Competence and expertise in web
development is not cost effective. By the time someone reaches the expert
level, the technology in which they are an expert is obsolete. Like Java
programmers.[1]

[1] [https://www.infoworld.com/article/3195285/java-and-c-
continu...](https://www.infoworld.com/article/3195285/java-and-c-continue-to-
decline-in-popularity.html)

~~~
null000
> the technology in which they are an expert is obsolete

A lot of the principles, idioms, patterns, and instincts experts pick up
transcend technology. Sure, they won't be able to optimize a framework they've
never interacted with, and some bugs will probably require a trip to stack
overflow, but they know how different pieces fit together, where to go for
help, what it looks like when something isn't working, best practices for
avoiding a huge catastrophe, and - probably most importantly - the wetware
people skills required to get things done and done right.

Being a master software engineer, in other words, has almost nothing to do
with the particulars of the software.

~~~
namelosw
Sometimes their idiom works, sometimes not.

When I was working with a react code base, there are a lot of brittle and
bloated components, which didn't follow React idioms at all. Make a lot of
data flow out of sync.

It turns out there are a lot of senior programmers use their experiences from
Java or other background to build things. They've read some redux docs, but
they refuse to use follow those idioms just because it looks weird.

I don't about master software engineers. But I see front-end development or
WebSocket programming differs from plain old stateless HTTP back-end
programming because there's a major partaway from request response programming
model. For those scenario even typical hexagon pure domain model starts to
falling apart, because the model is simply not reactive.

------
zaptheimpaler
People get stuck in expert beginner land in no small part due to how shitty
the hiring/training process is in most places. Outside of big tech companies
and SV, no one hires generalists (past entry-level dev) and your resume gets
screened out if you don't tick all the right boxes for language/framework
(right down to exact framework..) or have a BigCo brand.

No one is willing to take on people who might need the slightest bit of ramp
up time on new tech. So if you don't get all the right chances early, the only
jobs you can even get hired into are those doing almost the exact same shit
you have always done. God forbid someone hires a Java developer without
experience in Spring into a _gasp_ role that requires Spring (I see this
constantly)!

I suspect managers like the authors basically fulfill their own prophecy. They
insist on putting people into boxes and pretending they cannot learn, provide
little opportunity to do so, and then blame the devs when they do not grow.

~~~
travoltaj
Your Java example hits too close to home. I know Java pretty well, and despite
several good interviews, I got rejected because I didn't know Spring. One
company even told me to learn Spring, build an independent project on it, and
come back to interview. They followed up with me for 3 months after that till
I told them not to anymore. At that time I was proficient in Java, Angular,
Typescript, C# & Jython.

Ironically - I got hired into a product company which mostly works on their
own internal java frameworks and didn't have a spring requirement. I figured
I'll have to give time to learning Spring on the side since most Java jobs
require it, but my first project here was on Spring Boot/Hibernate/Angular
because of a client requirement, and I was put on it purely because of my
Angular knowledge.

I'd understand if a company required complicated stuff done in
Spring/Hibernate, but most organizations use of Spring Boot is limited to
building rest APIs, for which no previous knowledge is necessary. I haven't
yet run into an issue I couldn't solve by less than an hour of googling
despite having no experience in it beforehand - even making interceptors and
adding Spring Security.

Because of its simplicity I do wonder if I've barely touched the edge of it,
and the usual usecase is much more complicated than this, but I'm planning on
learning spring on Udemy anyway, so I guess I'll find out.

------
fuball63
Perhaps professionally, being an "expert beginner" is bad, but in other
pursuits being content with competency can make them more enjoyable.

To build on the bowling example, it is ok to be an average bowler if you are
having fun with it. Anyone that's bowled casually with someone that is over
competitive knows how obnoxious it is. Accepting that improvement is not
always necessary to enjoyment is important.

~~~
shittyadmin
I think what you're more talking about is just sitting at what he considers
"advanced beginner" or "competent" phases, rather than calling yourself an
expert at something. And that's fine if it's what you're going for - you
definitely don't need to try to squeeze every last ounce of knowledge and
skill into every department in your life - just don't assume you know
everything!

~~~
ip26
Yeah, I'm with you. For example I'll never be a great skiier, and I'm content
with that, but at the same time in fact I derive a fair amount of enjoyment
out of the simple process of trying to get better.

------
Chris_Newton
This reminds me of the saying that you can have ten years of experience or you
can have one year of experience ten times. Unfortunately there several forces
in our industry that tend to push in the latter direction.

One such force is that compensation tends to increase more quickly, at least
in the early stages of a career, with rapid job-hopping. This leads to the
kind of title inflation mentioned in the article, and in the extreme case you
get the 27-year-old founder/CTO who has an impressive-looking list of former
employers on their résumé yet who has never built a substantial software
system from scratch nor maintained an existing system for more than a year or
two.

Another force pushing towards short-termism is that lot of new software simply
isn’t expected or intended to last. The commercial incentives to invest in
building robust, future-proof software are often outweighed by the commercial
incentives to deliver early and deal with any problems if and when you get to
v2. But then v2 has to be shipped early, and… Issues with reliability,
scalability, performance and security just get kicked down the road until the
next big rewrite, and writing maintainable code that can support ongoing
development for a long time is unnecessary if you’re going to throw it all out
and start over within a year or two anyway. Eventually, if the business hasn’t
failed along the way, it reaches a level of maturity where it’s worth
investing in these things more seriously, and then you do need developers who
know what they’re doing. But by then a lot of the cool kids have moved on to
throwing stuff at their next employer’s wall to see what sticks.

Of course there are parts of the industry that don’t follow this pattern and
do have serious quality and longevity requirements for what they are building.
However, they don’t tend to be in today’s fashionable parts of the industry
like web app and mobile app development. As a result they may not be so
attractive to the expert beginner, which is unfortunate because the expert
beginner is not then exposed to better ways of doing things that are used
routinely out of necessity in more demanding environments.

~~~
matt-snider
That quote was used in the article! I guess you missed it:

> 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.

I agree with the factors you listed. As always I think company culture plays a
big role too. If you're surrounded by expert beginners it's like an echo
chamber where everyone thinks they are rockstars. Being surrounded by people
who genuinely want to learn and improve instils the opposite mentality and
drives progress.

~~~
Chris_Newton
So it is… I must have managed to skip over that paragraph. In my defence, I’d
woken up in the middle of the night and just read all four articles in the
series while wondering whether I was going to get any more sleep. :o)

------
shittyadmin
I feel like I may have wound up on this path... I'm working in a government
role where I've been put as the lead developer on some major pieces of
software despite only being 5 or so years into my career because the people
I'm surrounded with seem to have some significant competency issues.

Not sure what I can do but quit and I just don't want to give up on the stuff
I'm working on yet and I'm relied upon quite a bit... but I'm almost
completely stagnating. Worst part is, I can probably just keep doing it for
another 20 years and retire, it's almost too easy to just go that route.

~~~
aphextron
>Not sure what I can do but quit and I just don't want to give up on the stuff
I'm working on yet and I'm relied upon quite a bit... but I'm almost
completely stagnating.

Don’t quit your job. The article is elitist nonsense. The reality is that most
of us are just plumbers, we’ll always be just plumbers, _and that’s ok_.
You’ll probably never do anything world changing or cutting edge in your
career. But you are among the most blessed human beings on the face of the
earth to be getting paid triple the median salary to sit in a chair typing on
a keyboard. Keep that in perspective and focus on pursuing meaning in your
life that doesn’t involve a manic drive to sacrifice more time for more money.

~~~
scarface74
It’s not about doing anything world changing. There are a few dangers in
burying your head in the sand and not keeping your skills in sync with the
market.

\- lack of optionality: If for some reason you don’t like your job, you’re
stuck because it’s harder to find a job if you don’t check at least some of
the boxes.

\- alternatively, your job lays you off after you’ve been at a company for 15
years doing ASP.NET Web Forms and you start looking for a job and you find
that you aren’t hireable. Then you start screaming “ageism” (I’m 45).

 _But you are among the most blessed human beings on the face of the earth to
be getting paid triple the median salary to sit in a chair typing on a
keyboard._

The median salary in the US is $56515 ([https://wallethacks.com/average-
median-income-in-america/](https://wallethacks.com/average-median-income-in-
america/)). The median salary for a software developer is $100,690
([https://money.usnews.com/careers/best-jobs/software-
develope...](https://money.usnews.com/careers/best-jobs/software-
developer/salary))

Also the best way to even get that is statistically to job hop at least early
in your career.

~~~
aphextron
$56k is the median _household_ income, according to your source. The median
salary in this country is $31k [0]

I also assumed most people here are bay area, where $100k is intern pay. That
means your average software developer out of college is earning more than
twice the median income of two working adults.

[0]
[https://www.ssa.gov/OACT/COLA/central.html](https://www.ssa.gov/OACT/COLA/central.html)

~~~
scarface74
HN ranks as the 955th most popular site in the US, that’s not because of just
the Bay Area...

[https://www.alexa.com/siteinfo/ycombinator.com](https://www.alexa.com/siteinfo/ycombinator.com)

------
jonnycoder
Golf is the same way. I know people who improve a little but it’s rare to find
a golfer who shoots high 90s and makes their way into the 70s. I went from a
15 handicap to a 5 in two years, and even now I am just starting to grasp at
my core weaknesses and faults. Software development has been similar in past
few years, in that the growth has come from facing my feers of talking to
people, communication, leading, etc.

~~~
blackflame7000
I think that as you get more towards the 70s golf becomes more of a mental
game and a battle of endurance to hit shots as crisp on 18 as you did on 1.
That being said, I jumped from 100s to around 80 from simple mental things
like instead of focusing on hitting the ball with the club, I instead tried to
hit the club with the ball. I found that helped me hit the sweet spot much
more.

~~~
geddy
Probably not the place for this, but your advice regarding golf: super spot
on. I used to think the same way with tennis.

------
mannykannot
In software development, there is currently no more certain route to this
state than to read 'Clean Code', take it as dogma, and stop there. Most of its
major prescriptions and proscriptions have important caveats that are either
glossed over or forgotten.

------
blackflame7000
I think this is where a good college curriculum is invaluable compared to say
a bootcamp. The reason being is that you get exposed to a lot more aspects of
computer science that show you just how much you don't know.

~~~
scarface74
Not really. Computer science curriculums don’t really teach you anything about
being a competent developer.

~~~
blackflame7000
No they definitely don’t you can only get that through experience. But instead
of learning one thing and thinking you’re the master of everything, in a fast
moving CS curriculum you don’t have time to move further than advanced
beginner and it will give you humility and wisdom to know what you don’t know

~~~
scarface74
I find just the opposite. For the jobs that I hire for when I am in a hiring
position, new CS grads are basically useless. At least the boot camp grads can
hit the ground running and do simple features.

------
yowlingcat
I fully believe that the Jack Welch style stack ranking school of management,
performance and skills acquisition was a very expensive cultural mistake in
modern corporate culture, perhaps one of the worst. The idea of stack ranking
or internal competition is so naive and practically ineffective that it's no
surprise it was an utter disaster in nearly every instance its been
implemented -- it's also no surprise that it has been broadly recanted from
most large tech firms that once implemented it, as well as disavowed by its
original inventor!

That's what makes this article (and series) frustrating. It ignores that
corporate software engineering is a team sport. Individual contributors need
and deserve coaching and constructive working environment to unlock their true
potential. But who is responsible for that? Is "everyone equal" or is it the
case that the executives highest in the hierarchy are also responsible for the
outcomes? I would say it's the latter. Are you a leader that's tired of expert
beginners on your team? Take a look in the mirror. You hired them (or chose to
retain them). You failed to provide them with the mentoring they needed to
grow. You failed to build a constructive environment for them to be an
engineer. And sometimes, most damningly, you failed to select the right kind
of company or industry for your professional working style, goals, or
preferred compensation. The truth is, if you didn't fail in any of these ways,
you would never see any of these things you complain about!

Being a leader is hard, but doing it properly makes such a disproportionate
binary impact on the ability of the organization to function properly that
it's almost always my first (and often my last) question I need to ask to
assess an organization. I'd like to see an end to these kinds of think-pieces
and I'd highly recommend that folks who want real solutions to these problems
(whether you're an IC or not) look elsewhere. By no means do I have the all
the answers here, but a great place to start is one of my favorite books about
engineering management: Camille Fournier's The Manager's Path.

------
zanydude
I've seen this (or variations of) this article before, but what is lacking is
how to resolve this problem. How to bring programmers out of the "expert
beginner" stage once they realize it. Is it just a heavy dose of mentoring?
Where do they find companies most fit to put programmers on the right path?

~~~
_zskd
I am by no means an expert programmer, but this is my strategy to stay
relevant and employable. Obviously I'm not perfect and break my own rules, but
this is what in my mind an optimal honkycat would get up to:

Read books, lots of them. Books about programming, math, computer science,
game design, user interfaces, graphic design, productivity, investing,
meditation, history, criminal justice, fantasy, science-fiction, and
everything else.

Watch conferences. Go to your local tech meet-ups. Meet people. Ask questions.

Take classes that interest you in your city.

If I get too bored at a job I find a new job. You can't stop learning. What
you are going to be good at is what you do for your day job.

Have a schedule. Work out frequently, keep my health in order. Wake up EARLY
in the morning and work on side projects BEFORE WORK. If I wait until after
work, I'm going to be too tired to actually get anything useful done. Turn off
the computer/tv for a few hours before bed every night, and read books instead
of surfing ( social media of choice ).

~~~
winrid
This is great advice.

If you want things to improve for you, you have to improve.

------
zczc
(2012)

