Hacker News new | ask | show | jobs
Ask HN: How is your company training you to become a better developer/engineer?
97 points by flavianh 1294 days ago
I’m interested in how companies create 10x engineers. To deepen the discussion, you can cover for example: - What skills - Training frequency - How is your next set of skills decided? Is it personalized? Are you involved in the discussion? - What are the biggest obstacles to your training?
47 comments

I always thought the term "10x engineer" was only used in job ads. Nobody I know refers to themselves (or even thinks of themselves) as a "?x engineer", unless it's for marketing purposes in which case you might as well put 100x for good measure.

The "best" engineer in the world would probably tell you that "the only thing that they know is that they know nothing". They may also say that the most valuable thing that they have learned over their career is humility. There is always going to be something new and shiny to learn, things will always be breaking around you, a fake prophet will push today's ideology to sunset yesterday's. The only thing that you can do is to always be resourceful, to grow holistically as a person, and help others grow as well. Avoid any company that tries to distill these virtues inside banal presentations and check-the-box training sessions. It is better to ask an unassuming looking person inside the company if they have grown as a person, who helped them, and whom are they helping do the same. Good luck!

I am a 10x engineer. I have the awesome capability to show you that a project is going to cost 10x the time/budget, and why you don’t need it, and should probably focus on the obvious 1x idea.
If you can quickly cope with reality and accept some of the surprising stuff out there, I believe then you can be a 10x. Although this makes the scope 2x and you are just 5x then
I always go with 11x engineer. It’s even better than 10x
11x abs…. What are you, crazy? Nobody can work out their abs in 11x.
But if you claim to be a 10x you’d be able to finish their 1x idea in 1/10th of the time wouldn’t you?
It is 1/10th the time of the original idea...
I don’t mind calling myself a 10x engineer, but it’s of course better when others do so. ;)

Honestly I’m quite tired of this false humility norm. Seems to me it’s mostly about redistributing the fruits of common labors from those that focus on the craft and try to improve their productivity, towards the socially focused “humility experts”. I much prefer working with cocky 10x engineers rather than these humility policing 1x ones…

> Honestly I’m quite tired of this false humility norm.

It is a matter of where you focus your humility.

Your accomplishments and deliveries? Absolutely market how they are 10X impacts than the norm. No need to label them "10X" of course. Point out their impacts, and the impact craters on problem spaces label themselves. And thereby you get labeled.

How much you rely upon everyone around you and they in turn rely upon you? Absolutely show humility here. These days, 10X impacts don't happen frequently until entire teams are coordinating together over long periods of time.

The knowledge tree in our industry is effectively infinite in all directions now. No matter how broad your reach, there are always more topics you haven't been exposed to. No matter how deep your "T" stem areas, there is always more depth to plumb even if you are at the cutting edge, for the fundamental limits of physics is the only true bottom of that trench.

Humility is absolutely essential when offering to help others and organically receive help from others to mutually cover everyone's gaps across this functionally infinite canvas of knowledge when taking down objectives together.

> Humility is absolutely essential when offering to help others and organically receive help from others to mutually cover everyone's gaps across this functionally infinite canvas of knowledge when taking down objectives together.

I don't know... Humans have a very strong tendency to promote cultural norms that will make them successful. So the socially focused "humility experts" want to make the game about humility. One of their IMHO less ethical moves is to sabotage others who do not want to play their game.

I'm good at writing software and leading software teams. I want the game to be about that: the software. I have no problem what so ever with people being proud of their work. I'm not going to refuse to help someone because I don't think they are humble enough. It would never even cross my mind. It would defeat the purpose: creating great software.

> One of their IMHO less ethical moves is to sabotage others who do not want to play their game.

Oh, those are straight up assholes in a different clothing of the week. Yeah, once I identify one of those, I route around them if I can, or they find that my teams and I will only work with them on a very formalized, documented in the open, by the book, unfailingly positive and polite basis. If I have to, the juniors I advise will see their work that is unavoidably interfacing with such people championed by other managers and me.

It vastly slows down the delivery velocity around said person, but I've found no other solution when I'm forced to work with them as they're utterly toxic to work with otherwise. Such a person will find the Nash equilibrium adjusts the more they give up said behavior, but in my experience I've never seen one of these types turn completely around (but that might just be a function of only consulting and not sticking around long enough to find out).

The problem in my experience is that cocky attitudes have a tendency to spread and it creates a really difficult work environment.

You also have to take the Dunning-Kruger effect into account, where most developers aren't able to evaluate themselves correctly. In our work we have a tendency to view thing as "right" and "wrong". I often find people with a few years of experience to be the worst. They have enough experience to recognise that they are more knowledgable than juniors, but lack the overall picture.

Some even come out of studies this way, because they are used to being the smartest in their class and have built up their egos. "Why is the old shitty code written this way, they must have been stupid? We need to rewrite it in the framework I read about in the blog last week". Only experience will teach them that things are not that simple. If they are not exposed to the right working environments in their first jobs, they will spread this negativity for years until they (hopefully) grow as persons.

Pro tip: If something looks unnecessarily complex, there may actually be a reason for it. In the case where you need to rewrite/refactor working stable code, don't try to negatively push down others to enhance your own feeling of superiority. Keep the arguments as objective as possible. If you have tracked the code to specific individuals, at least talk to them in private first to get their input instead of assuming you know best.

Thanks for this. These are all real problems. But why is the solution that I change my behaviour?

This is exactly what I'm tired of: Because other people are assholes with big frail egos who do not understand their place in the world... I have to change? No, they have to change.

Putting this on me just glosses over and prolongs the real problem: That a lot of people with frail big egos need to realize they are not all that and come down to earth.

honestly from reading how you write about yourself, I would immediately drop you into the "thinks more highly of themselves than they ought". Bucket. People who call themselves high performing rarely are in my experience. It's the humble people who learn and grow for the joy of it who truly shine.
Being proud of your abilities and accomplishments is not mutually exclusive with curiosity and joy of learning.

More generally: Your perceived correlations are not necessarily causal relationships.

Thanks for this. There’s too much of me in this than I would like..
There's a difference between cocky and confident.
I agree with this, one of the things I absolutely hate seeing (on this site, no less) is the whole "imposter syndrome". It's basically humble bragging.

This is my strength and I'm absolutely better at it than most. There's lots of things I'm completely inadequate at, this aint one of 'em.

The lie that being humble is a virtue is something you have to unlearn.

In reality if you won’t shout about how great your work is how can you expect anyone else to care about it.

I think it's a marketing thing. I'd call myself that if i were attending a job interview perhaps and trying to sell myself.

I wouldn't call myself that if I were speaking to a junior developer and helping him with something that's difficult enough to sap his confidence.

A smart 10x engineer would use his special power to do 1/10 the work everyone else does.
As a dumb 10x engineer, I once tried being on the job 1/10th the hours of my colleagues and I still ended up outproducing them by an order of magnitude. I failed to account for the fact that they waste a lot of time doing unrelated tasks, like meetings, leaving only a fraction of their day to get anything done.
For some of us meetings are 90% of the job.

I mostly integrate with other teams' services. Most of my time is talking with them (in "Meetings") about their API and reading through their documentation.

Code is like 10% of my week, maybe 20-25% if I'm starting with a fresh service.

Mine too these days. Further proof of my dumbness.

It's amusing that we can integrate with open source APIs without any trouble, even when there is often much more complexity involved, without ever talking to the person/people behind it, but as soon as its within a single organization it becomes a game to find pointless busy work to fill the hours.

It’s not pointless, look at all the cross functional work you can put on a few engineers’ perf reviews.
how is that dumb of you? even as a salaried employee your time is ultimately what you’re selling to your employer. you just reduced your cost of goods by 10.
Well, I could have also put in 1/10th of the work, not just 1/10th of the hours, and matched their output. Also, I'm just naturally dumb.
lowering the quality effects the perception of the quality of your product. i don’t think it’s smart to do that.

i’m curious if you’re being facetious, though, due to a possible resentment of your co workers. IF you’re doing that, remember you’re just being paid to do YOUR job. management knows who the performers are.

Or they would try to work as much as possible, earning 10-10000x more than everyone else does.
The term doesn't come from people calling themselves 10x engineers.

It was from a study that showed vast differences in performance across software engineers, up to 10x.

The study has been criticized somewhat since then but I think the critics miss the point. Regardless if it is 2x or 10x, or somewhere in between, these differences do exist.

The suits seem to think it's about how quick they type or how focused they are, but this is of course nonsense. Some engineers have such deep knowledge of their tech stack they avoid making costly mistakes, or use features in their stack that would otherwise get re-implemented in the codebase. This can make them more like 100x developers.

For example, we had slow query performance in Postgres. I (a 1x engineer) couldn't optimise the query, so I suggested building out a caching layer, with an estimate of 2-3 weeks. My colleague (a 10x engineer) used a window function that took about an hour.

Perhaps from their perspective, I'm a -10x engineer.

> It was from a study

In case anybody is curious, here’s the study from 1968:

https://web.eecs.umich.edu/~weimerw/481/readings/productivit...

I thought it was from Peopleware. They claimed they found the result by performing coding wargames among professional programmers in the 80s.

They claim that the best are 10x better than the worst but only 2.5x better than the median. Additionally programmers from the same organizations had very similar performance. I.e. there probably isn't a 10x difference in performance within your company.

The book claims similar distributions when you measure many kinds of human performance, so I wouldn't be surprised if there were many studies that replicated the general idea.

The study was of students, no one has a strong idea of how that actually correlates to professional work.

Myself personally, I don't think it does, not because some people aren't naturally better at programming than others, but because at some point the important decisions are unrelated to programming and are more about systemic decisions at a wholistic level.

I've seen -1x engineers too (and probably have been one).
I think the -10x engineer is more common, and therefore this type has has more overall impact, than the +10x type.
Don’t be so small minded. I’ve seen -infinity project managers and architects.
> The "best" engineer in the world would probably tell you that "the only thing that they know is that they know nothing"

This just tells me that the engineer in question is very good, but also has imposter syndrome.

You can't "create" 10x engineer. You either have work ethic or you don't. If you have the work ethic, if you're disciplined, if you genuinely enjoy programming and the feature/software you work on - then you have the capacity to be better than engineers who enter this line of work purely and only for the money.

That's what makes the difference. And no company can make you like the software you're making, to be disciplined if you don't train yourself so and to genuinely like and enjoy what you produce. It'd be equivalent to brainwashing.

>no company can make you like the software you're making

But it's worth mentioning that a company can make you dislike the software you're making.

I can confidently say some sort of friendly but firm "work trainer" could 2-3x my performance.
> I distinguish four types. There are clever, hardworking, stupid, and lazy officers. Usually two characteristics are combined. Some are clever and hardworking; their place is the General Staff. The next ones are stupid and lazy; they make up 90 percent of every army and are suited to routine duties. Anyone who is both clever and lazy is qualified for the highest leadership duties, because he possesses the mental clarity and strength of nerve necessary for difficult decisions. One must beware of anyone who is both stupid and hardworking; he must not be entrusted with any responsibility because he will always only cause damage.[32]

from https://en.wikipedia.org/wiki/Kurt_von_Hammerstein-Equord#:~....

As someone with ADHD, it’s kind of sad that I’ll hit some career ceiling because I can’t get myself to put in the work.
ADHD isn't really an excuse. I have ADD. The only thing that separates me from someone who doesn't is it takes 20-30 minutes or so of being distracted before getting into "hyper focus" mode and getting things done. Yeah, it took some more time to find a gig I liked because I can't focus on bullshit, but now that I have it I am able to get the some work done by the time standup hits as any other individual.
> ADHD isn't really an excuse. I have ADD. The only thing that separates me from someone who doesn't is it takes 20-30 minutes or so of being distracted before getting into "hyper focus" mode and getting things done.

This works for some things but not all for me. Also there is no universal add or adhd experience.

For me the difference between work ethic on adhd meds versus without is night and day.

I'm not lazy without them, it's just all of my energy can get consumed by a million other things than the task at hand.

That sounds like quitting before even trying. If I were you, I'd first exhaust every possible option I have at my disposal to become better before calling it quits.

You might have ADHD but you can also adjust to it and work around it. Don't call it quit until you literally exhaust everything you can.

> You might have ADHD but you can also adjust to it and work around it.

Most can't really work around it in the sense I think you mean.

If everyone else prioritizing and doing work us like walking, for someone with ADHD it's like walking underwater.

Not only is it much harder but:

- it looks and feels ineffective

- you have to stop progress to come up for air iften

- when comparing to others it's easy to feel lazy and get demotivated

As someone with ADHD, find a job that works for you.

For me, the way teams are structured where I worked there where 2 sides, build and support.

Build focuses on new builds. One project, until it's launched. That didn't work for me.

Support is projects that are already launched that need new things built out, maintenance, etc.

New builds is usually backend dev, front end and one that can do a bit of both. Support usually has a dev per 5 clients.

I loved being in the support side and floating to new build as needed for my expertise. While most other teams have a dev per 5 clients, I was able to automate parts of the maintenance and by myself I handled 35 clients.

I worked with the leadership at the company. I was able to create my own department afterwards. I had the ears of everyone.

With 35 clients, I was switching all the time. Priorities shift. Goals shift. It was great for my ADHD brain. Blast some fast paced music and start my day.

-----

Find what works for you. Do you need to switch it up often? Do you need things written out and longer projects? How does your ADHD brain work?

My wife has ADHD and does really well with the jobs she's had. I'd easily call her a 10x engineer in her field. I'm not sure how well you can translate this to an arbitrary job, but one thing that seems to help her is doing classified work. She still gets distracted, but she doesn't get distracted by Reddit and Hacker News, because they're not available on the network she's working on. She gets distracted by old documentation troves, reading more of her own product's code base, studying test cases, actually looking at the logs of all the overnight regression test failures that other developers ignore. Absorb all of that tribal knowledge that usually takes years or even decades to accumulate. (It's also a very old government program she's involved in, so tons of history and context to absorb.)
It's not as much about putting in the work, but it's about putting in the right work and at the right moment. I've know some brilliant programmers with ADHD. They were perhaps not always the most active behind their computer, but when it mattered they got more work done than everybody else.
> It's not as much about putting in the work, but it's about putting in the right work and at the right moment.

A lot of truth here. Many times it's nigh impossible to work at 8am, but at 2pm I can nearly always be productive.

I might have something that might help. (I'm really not sure, but no harm in mentioning it.)

I'm kind of in the same boat. I don't really like the open-source software I'm paid to develop. Some combination of that, my ADD, and maybe burnout, make it really hard to plug away at developing that software. I have no doubt the ennui seriously dings my productivity.

Then a few weekends ago, I started working with some open-source software that's adjacent to my day job. I get to work at my own pace, focus on the parts that interest me, etc. I'm really enjoying myself.

I see two possible benefits to this weekend activity:

(1) It's helping me to enjoy programming again.

(2) If I'm really lucky, the knowledge and/or software I'm developing will become relevant to my day job. I think that would make my day job a lot more fun.

It's still possible, just the path is different to most. There are career/executive function/ADHD coaches who specialise in technology. Finding one is the hard part, but ask around for recommendations and look in to ADHD support groups. A good coach will be able to point you in the right direction and you can always change who you see.
Being a 10x engineer has basically nothing to do with your career ceiling
Taylor Hunt, who says he has ADHD, has written a series of very in-depth posts about website performance, and how, after a lot of research, he created a super fast site demo while working at Kroger [0]. His example demonstrates that ADHD is no barrier to being a 10x developer

[0] -https://dev.to/tigt/making-the-worlds-fastest-website-and-ot...

> You can't "create" 10x engineer. You either have work ethic or you don't.

I don't think that anyone who believes in the "10x engineer" (myself included) thinks it has anything to do whatsoever with how much they work, or their attitude toward the work. "Work ethic" suggests that it's about how much effort they choose to put into it, and that's nothing to do with it. 10x engineers will do more per hour than median engineers, whether they work one hour or ten in a day.

While I agree with all you said, I hold the belief that intelligence is mostly determined by birth (probably genes).

So that may be a limiting factor even when your work ethic is high.

But there are plenty with average inteligence with good work ethic and good productivity. I think work ethic is something to be cultivated individually and has mostly no bearing in genetics.
I have been a part of training sessions in my previous organisations, but in my opinion, training will not create a 10x engineers.

Why?

Most of the training sessions I attended or used to happen in my organisation were on very general topics. All these topics can be easily learnt via any other medium like youtube.

Instead, I have seen pair programming or code-reviews making better engineers. The organisation used to change the pair programming partners every sprint making us understand new ways of working every time. Plus reading other's code in code reviews exposes you to new patterns making you better at writing code.

I'm actually curious about this, so I've just asked one of the best developers at Google. If you want to tag along and make some noise: https://twitter.com/FlavianHautbois/status/15972300521436733... (he has not replied yet)
Yup. For almost anything, modeling behavior is far more effective than training. Hiring well and having complex problems to solve is what makes engineers better.
pair programming is definately the way to go. Even Software Legned Uncle Bob Martin is a strong advocate for it. Listen to what he said about it in this podcast - https://alphalist.com/podcast/58-uncle-bob-martin-the-clean-... (about 10-15 minutes in)
He’s mostly a legend in his own mind.
I agree that training, in general, is not really effective. You have to actually use the things you've been training for immediately afterwards to gain any benefit. If 2 - 3 weeks go by, you've already forgotten a lot of the training.

How my company is trying to deal with that is by creating a library of self-paced training modules maintained by software engineers, and facilities to help anyone do that. I'm not sure it's going to achieve exactly what the OP is asking about, but I think it's better than alternatives.

We also have a private Stack Exchange server, frequent tech meetups, internal support slack channels and a bunch of other ways to interact with internal platform teams that help quite a bit.

Still, you have to walk the walk and figure things out on your own at the end of the day.

The companies I have worked at did nothing to train people to become better. It was all about being lucky to have a manager or lead who mentored people. A lot of people have these programs on paper but I haven’t seen them implemented effectively.

I strongly believe if you want to make it in this industry you have be self motivated to educate yourself and develop relationships with potential mentors. Nothing will come from your employer.

No training in over 3 years via company channels, all self-driven & self paid & after hours.
I've been called a 10xer before, and I'm the only one in my company currently at that level. We're a data company first and software second.

Trainings don't work. What does work is pair programming but you have to do this effectively. Say you have 3 buckets, frontend, backend and infrastructure. Ideally, you want to pair someone who has very full infrastructure and backend buckets, with someone who has an overflowing frontend bucket. Mix and match. There's no value in pairing two more backend oriented engineers together.

There's also no value in categorizing things in frontend and backend, if you just have a frontend engineer that throws things over the hedge to the backenders garden, you're going to have a shit shoveling contest and this doesn't work. Of course, you should still have people specialized in certain domains, but you should try to share knowledge within your team as much as possible and try to broaden's people experience instead of having people work on their own little islands. Pair someone with a backend background on a big frontend ticket with an experienced frontender and before you know it you'll have two full stack engineers that'll possibly grow to become a "10x" or whatever that means.

Code reviews are critical and it's important to have someone in your team that carries a big stick and isn't afraid to use it. This is a sensitive thing I've noticed, I've worked at companies where I wasn't the only 10x engineer, and the code reviews there were a joy because I was getting very valuable feedback. It wasn't so much that my code was wrong, but more something like `{} as MyInterface` could also be written as `<MyInterface>{}`. There were a lot of style related comments. What I notice in my current team is that people feel like this is unnecessary, but I always felt like it is valuable when another engineer suggests something like "maybe you could abstract this?" because it introduces a bigger picture that I may not have thought of before. It's very loathsome to carry the big stick, but I feel like if I dont, we're going to go back to the old patterns of not writing tests, not thinking about architecture.. Those kinds of things.

You said a lot of things, many I agree and have experienced as well, but never answered OP. How do you create 10x engineers? Well you can’t. And you probably shouldn’t try. If you’re 10x somewhere it means you’re at a place with a significant (I.e. 10x) skills mismatch between people in the team. It’s not fun for anyone, the company and team become too dependent on you, and you skew any ability to project how long work would take on both sides by your presence.

The best bet for both parties would be they find places “where they belong” - if you consider yourself 10x ie the smartest person in the room, you need to seek a better room for yourself where that’s not the case.

But that is the answer, in that there is no answer :) And agreed, it is always a mismatch. But I do think that with what I said, that'd be the foundation to create a 10x engineer. That's how I became one, because I was matched with people of that skill level and got to work directly together with them for years. And if I'm 10x by my company's standards, go figure how good those guys were ;)
You're right in a way, but you're missing the "10x compared to what?". Consider the 1x baseline as being the median productivity of your development team (which is definitely hard to approximate, but for the sake of the exercise let's take 'value-added tickets per developer' [which excludes bugs/rework]). Then the goal is to do 10x on this median in a reasonable amount of time. Rince and repeat.
My current company tries but does it very poorly.

I work for the so-called "software house". They keep on asking if I want to do a cloud cert yet they don't really provide any course materials nor allow me to take time off to focus on learning. This is a very common pattern for these certs and I've seen the same in other places as well; there's always someone who wants you to get that certificate but you're never really provided with anything to help you reach that goal. It makes it feel like the entire ordeal is pointless to begin with.

Recently the client I work for started moving to Kubernetes, which we did not use previously. It took my company 6 months to organize a Kubernetes course for us. The person who prepared that course was a relatively inexperienced engineer from an another team that never used Kubernetes in production. The engineer himself tried his best but in the end that person was not a very good teacher (which I feel is the natural outcome, this person was not hired to organize course work) and we never moved past the tutorial level knowledge-wise. Personally I got nothing out of attending these sessions aside from the liability of having to work on tasks related to Kubernetes (previously we didn't work on them as it was understood that we have no training, but now that we have "training" we are supposed to pick up that work). I feel like I was tricked.

Any discussion on why this was an inhouse training? Why not just buy a couple of udemy courses for everyone? For that matter they can just give you a youtube playlist and then have doubt solving sessions. Would have been cheaper than paying an engineer for half a year.
They did it because the company policy is to provide in-house training if possible. At first we were to get it ASAP, but then ASAP became "soon" and "soon" became "6 months". The engineer in question is just a regular engineer, they just handed him the additional responsibility.

Either way, they could have just paid an another company to get us a real course but they'd rather pretend they have competent devs rather than actually have competent devs.

Don’t worry, your intuition that the cloud cert is useless is spot on.
Unfortunately it's also tied to corporate politics. If I get this useless cert it will get listed as an "accomplishment" which helps in getting a raise / promotion.
We hired some Agile consultants and we’re heavily invested in whatever fad the C Suite read in a management book or HBR this week.

I’m expecting awesome results any time now

We also hired some Agile consultants, but a couple of months ago. Unfortunately, it took our C-suite only 3 months to abandon the path of the samurai, erhm, I meant: the path to Agility.

1. The experience

The experience with the consultants was really eye-opening. I will try to describe it below.

Since day one, without having much understanding of how and why we are organized, the consultants started seeing problems, and, oh what coincidence, they had the solutions for every-single-thing that they noticed. They tried to convince us, in no particular order, that our problems were:

- Not following Scrum well enough. That continued until we asked for specifics what part of Scrum we are not following well enough. Surprisingly, they didn't have a ready answer for that and then dropped it.

- Not following SAFE. Scaled Agile For the Enterprise sounded good to our C Suite, but the consultants played themselves by saying they can help us implement it. Our management, just like a gazelle seeing an encroaching predator, avoided the trap.

- Not having Agile coaches on a fulltime payroll. Guess who is an agile coach that can work fulltime for us? That was easy to see through, our C Suite will turn their nose at anything that implies spending more money, so they were naturally immune to that approach.

- Some Miyagi-Do level stuff about communicating better which was a bit fuzzy to me. I guess the Agile coaches have to...communicate better? One can think of that experience as a lesson, and that by communicating badly, surely on purpose, the agile coaches showed us the value of good communication! That is some black-belt level stuff!

2. Cracks begin to show

Things started souring in the 3-rd month, when our management started getting impatient seeing any results in performance. Occupying all your engineering teams for days each week surprisingly had the opposite effect on performance that our C-level hoped for. Then management also got wind of the agile coaches' vision of a "perfect Agile company". According to them, to be Agile (capitalization intentional), each of our teams needed to have:

- A Product Owner

- A Scrum Master (a dedicated person who ONLY does Scrum Master-ing)

- Agile Coach

- Team Lead (responsible for developers' growth)

- Tech Lead (responsible for tech decisions)

- Developers, if the budget allows

While we had only POs and Developers, with rotating Scrum Master role, with one developer being the Tech/Team lead. The prospect of having to hire more people to fill all these Agile roles spooked our C suite to such extent so they completely abandoned the whole Agile idea and let go of the coaches. And just like that, Agility was not spoken about since.

3. The results

Three months later, thousands of $$$ and people spending their time in meetings, the results can speak for themselves:

- we have spent thousands of $$$

- people spent their time in meetings

Based on what you wrote, I think you will see similar exciting results! Onward to Agility!

We have an in-house psychologist who does regular _confidential_ 1:1 chats with people. More often if they need.

The difference between them and a run-of-the-mill external psych is that they can actually influence company policy (for real - hiring them was the CEOs idea). They also know the company and the people there, which helps a lot in understanding people's chemistry and habits.

In addition the company reimburses for all external training courses taken which you can even in some way say are connected to what you are doing - or want to do at work.

Does this make everyone 10x? Nope. Has it made a huge difference in the way I work? Yes.

Becoming a 10x engineer is more about psychology than it is about IT skills. It is about doing the right thing in the right context, about communication and about planning. Put a 10x engineer in a new company where they use different languages and frameworks, and eventually he/she will become a 10x engineer again.

So I don't see much benefit in training, what works much better is learning by example. Put junior engineers in a team with a 10x engineer and if they are open to it, they can quickly acquire the same mindset. But ofc this only works if the 10x engineer is a good tutor and coach as well.

Expectations also matter. If you expect nothing from people, if you infantilize them, if you spoon feed them everything, if you never expect them to figure something out that is more complicated than what you already explained to them, then you will never get people to be 10x engineers. You will get the worst quality.

Set the expectation right, treat people like adults, expect that the person you are paying and employing as an adult engineer is an adult engineer capable of solving their own problems, and they will figure out how what they need to do to meet expectations and acquire the knowledge they need, whether that be training, or just google, or just looking at existing code.

Also, there needs to be an incentive to be 10x, or at least not a disincentive (like hordes of 1x:ers seeing “brilliant assholes” everywhere).
By having no pure managers.

Everyone who is a manager actively makes independent contributions for a not-insignificant portion of their work-week.

So, when we have 1-on-1s with them, we can actually discuss improvement avenues from the same vantage point. Not some spreadsheet pushing manager who has no clue how to measure engineer-productivity or performance.

When they do code reviews, their comments serve as an important learning opportunity, pointing out good practices/conventions, etc.

And finally, when you disagree, it's backed by the validity of your points as 2 engineers, rather than their authority as a manager vs you, their direct report.

As a manager I typically let the employee lead the 1:1 discussion and we are agile so status of work isn't really useful since that's done at standup. What would your ideal frequency and topics be for a 1:1? Do you expect productivity or performance for software engineering to have measurements?
My ideal 1:1 is about once a month. Especially in high-ownership teams, you could go days without actually talking to people aside from a 10-15 min check in call.

So, it's sometimes nice to have periodic validation that you're keeping true to the course / indication that you need to make a few minor adjustments, etc. That's on your side.

From your manager's side, if they find something isn't working, they don't need to wait 3/6 months to bring it up at which point there isn't much you can do to get back the lost productivity.

This. I genuinely think this is one of the best comments in this thread!
This 100%. Don't accept a manager position unless you get to continue being an engineer.
> I’m interested in how companies create 10x engineers.

How do professional sports clubs create 10x athletes? I expect the answer is that they don't. They seek out 10x athletes who were most likely born with certain qualities that allow them to stand out above the typical player. It would be a lot simpler for them if they could simply choose any person at random, put them through a training program, and output a star athlete but the world does not appear to work that way.

I imagine engineering isn't a whole lot different.

* Teaching me SQL

* Providing us the training and paying for a cloud vendor certification

* It’s a small company so team discusses all major tactical decisions

* Providing me the opportunity to implement and document a new but super fast approach to architecture that I have developed over the past three years in a personal project

* This is only the second time in my career that I am engaged all day (been in the corporate world nearly 20 years). In prior jobs I went to meetings and maybe did 1 hour of work a day. That was either because task assignment was in competent or because they were not training developers which me a 10x developer only because I do work on personal projects outside the office

It looks like your company is ticking a lot of boxes, they're a keeper for sure. Would you share their name?
Educe Group
Companies simply don't. If you want to become a "10x engineer" you have to have the ability and the drive yourself.
Most don’t, I’m wondering if they should.
The question is whether they can and, if so, whether it is beneficial to them.

As hinted in my previous comment, I don't think they can and I am also not convinced that it would be beneficial to them if they could.

They need good engineers. That is achieved through hiring and compensation policies. Then, it is also beneficial to retain and keep engineers up-to-date through a level of training as needed.

A large part of being 10x is the motivation. You can't train motivation.
And environment. If you have to attend meetings or don't have an office with a door you can close when you need to, it's a lot more difficult to do deep work.
answer is they shouldnt,

the less effort exerted globally by the workers the less expectations will be placed on them by managers. God forbid people find their meaning outside of drudgery on their lords fief.

100x developer is better goal.
10x doesn’t buy you what it used to!
Pah, all VCs know that the real goal is 1000x.
It is inflation, the central Xer bank keeps printing better developers.
Companies cant create 10x.

It is the people who make themselves 10x

Dropping me in the middle of a confusing, convoluted code base and tasking me with finding my own way. lol

Seriously, though, even if the code itself has lots of room for improvement, the product is great and the team is competent and laid back; they trust me to take my time and do the right thing, and aren't breathing down my neck to get features out by end of sprint.

So give me the spaghetti code base with a non-toxic work environment where everybody is dedicated to incrementally fixing and improving it, any day.

My current company does tons of training. The devs are trained in project management, team building, project leading.

Individual team members suggest trainings on a topic, and if enough people are interested they schedule a time and do it. We have book clubs, and regular developer discussion group. All of this is encouraged and on company time.

There are also more extensive multi day trainings and certifications I haven’t been part of.

We also have a monthly training stipend which accumulates.

Etc.

I assume some of the skills you're trained on are technical too. Your organization sounds like it does a lot to develop engineers, do you think it's paying off regarding competition or other tech companies?
Well, for one thing it allows a flatter organization, which makes for (imo) a really great quality of life.
So how do you use that training stipend?
I haven’t used it much yet, so I’m not sure. Books, courses.
If my company wants me to be a project manager, team builder of project leader, they should have hired me to be those things.
I wish people would stop using the "10x" term, as it is meaningless. Nobody can articulate what x is or even what units x should be in. I won't even start--and nor should I need to--on "engineer."

The value of a person engaged in software development is highly context dependent. In the last year as an "engineer" in my previous role, I made a single code commit. A one line configuration change as part of an ops rotation. When I announced I was leaving, my supervisor (and his supervisor) was sad. They threw me a party with a customized cake. How was my contribution being measured? I wasn't managing people. I wasn't coding. But I had "built" multiple products.

Someone once asked me "how do you explain to your parents what it is you do at work?" I replied "I can't even explain it to my boss."

People regarded as 10x in one situation will enter another situation and appear to fail miserably.

The main help is that any even vaguely job-related training can be fully expensed. Exam fees for certs can be expensed.

> What skills

Currently focusing on the cloud.

> Training frequency

Whatever I want to outside working hours (expensed), 10-15 percent of working time for long term training (over months), 100% of working time for short-term training (say a 5 day course).

> How is your next set of skills decided?

By me and my manager. Long and short term trainings need to be approved by manager, but I never heard of anyone getting denied for that.

> Is it personalized?

> Are you involved in the discussion?

Yes, I need to find and register for the courses myself.

> What are the biggest obstacles to your training?

Lack of time. For AWS - corp policies are very restrictive so it's easier to bankroll my own AWS account for training, rather than use company's accounts.

"10x engineer," in my experience, is typified by "hyper-focused engineer who works 16 hour days 7 days a week and is the darling of upper management."

In my entire career (spanning 20 years by the year, 16 years of active time), I've only met one engineer who astonished me with his prodigious amount of _correct and clean_ output. But the downside was that engineering was his entire life; you couldn't hang out with him, because all he ever wanted to talk about was engineering.

There's a tradeoff for that kind of output.

I usually don't like the trainings companies provide to engineers to make them grow. The trainings are focused 100% on the tools the company is using (makes sense), but I may not want to learn the hype tools my company is using at the moment, but instead focus on more long-term useful knowledge. For instance:

- my company is using DataDog and they offer us training on that. Well I don't care much about DataDog; I care more about how metrics work and what's behind the curtains (e.g., time-series dbs). Chances are that DataDog will be gone soon or, most probably, it won't be used when I switch companies. So, I prefer to focus on non-hype stuff

- same for specific frameworks we use at work. In one of my past companies we were using Laravel. They offered us training on Laravel... but I just couldn't care less. I don't use Laravel anymore (not even PHP). I would have preferred trainings on more agnostic stuff like architecture/design/algorithms

And like this, tons of similar examples. So, the way I become a better engineer is by studying by myself mostly during working hours but also a bit during my own free time. I read "the classics" (i.e., books every software engineer should read), I keep myself updated with releveant technologies and work on personal projects to solidify my knowledge. It's a win-win for both myself and my current company (even if my company doesn't realize).

I agree; I think we can use others but we're 'recommended' to use Udemy, which seems to me like a cross between the worst of Youtube scream faces et al. and some kind of visa/language/entrance exam cram school. And yes, it's all really specific Here's how to point and click in the AWS (or whatever) console sort of stuff.
>What skills?

When I've been through the interview process, it's been very obvious that I have strong backend skills but lack on cloud and DevOps stuff, so that's what I'm focusing on now.

>Training frequency?

As of now, most of my tasks are related to cloud and CI/CD and, to be honest, I'm enjoying it a lot, it's more fun than backend to me as there's plenty of new things to explore and learn. I even feel like I might switch from backend development to Developer Experience Engineer, exploring new ways to make development, testing, deployment and initial setup faster, easier and more enjoyable, since I like to think that I know how developers feel about our current processes and what can be improved.

>How is your next set of skills decided?

I just tell my manager that there is some stuff I'd like to learn and tell them what is it.

>Is it personalized?

Yes.

>Are you involved in the discussion?

I start it.

>What are the biggest obstacles to your training?

Sometimes, when I meet a new task I have no clue how to even approach it, I feel a bit overwhelmed and unmotivated, so I take my time preparing for it and asking around for initial problem study.

I know it's not very productive, but it's an enjoyable pace for me and my company promised me a raise if I get better at cloud, DevOps, Docker and AWS stuff while I'm on my probation.

Usually developers trained the company
Now that's a bit too negative. Of course the company provides training, mostly for the unusal internally defined processes and internally developed tools or tool extensions that bend standard tools in a way to fit to internal definitions.
thats true, most devs ask other devs for help
Literally nothing. I've never received any kind of fornal training that wasn't my own pursuit outside of work, even if it stood to benefit my employer. I've received more training at Starbucks than any job doing programming. Except for 2 days of Agile training at a corporate gig, which was obviously worthless.
To use the term "10x" and have it actually mean something requires recognizing that's it's an exceedingly rare phenomena.

It's one of those things that is so rare that there is little in common across actual 10xers. To cherry pick any aspects of "common" 10xer backgrounds and try to apply these to "grow" a 10xer makes about as much sense, in the business domain, as finding out what Warren Buffet eats for breakfast and then doing the same expecting some kind of results-- or maybe wearing turtlenecks like Steve Jobs (people have tried).

It it far more realistic, I think, to simply strive-for and train-for valuable skills/capabilities, to seek out effective people around you and learn from them at a "ground-level" and solve problems collaboratively and thus learn their approaches, developing an intuition of how to proceed against challenges.

Not sure how well my company does at this - our software division is quite small - but I think more than training the special sauce is a high-trust environment. I think that mostly because while I've never seen a 1X programmer become a 10X programmer, I have seen the reverse when trust between colleagues soured.

Here's my reasoning why the reverse would work also: Most comments on here that acknowledge the 10X programmer is a real phenomenon agree it's not about speed of writing but understanding the business's needs and finding the optimal solution, not coding the obvious one 10X as quickly. That requires a workplace where people feel safe thinking outside the box.

Much of this idea comes from this speech by John Cleese: https://www.youtube.com/watch?v=Pb5oIIPO62g

Move to better tech: going from building apps on Drupal to Ruby on Rails got a big team to understand what they were doing (MVC, web applications, migrations, DDD, fat-model, separating concerns, REPL-based development, deployments-wihtout-migrations in one command, ssh, and more).

Then going from Groovy to Kotlin (using types in your advantage, functional-style where it makes sense, IDE comprehension of code, fear-less refactoring).

Now we are using Elm to replace some brittle React/Litelements/jQuery mess (sum-types, strong typing, currying, etc.)

Also I believe we should regularly discuss bad code examples, code style improvements and evolving the processes. We do this in a "retro" session at least once a month.

One of the best thing I learned is to accept to be a "bad programmer", hence I like strong typing, defensive coding styles, and smart IDEs.

We can do SANS training as part of a company security program. They’re actually fairly intensive and useful, but it’a hard to make the time when you have so many other things to do.

My previous company had bi-weekly presentations by some engineer on a technical topic they enjoyed.

The "individual 10x engineer" who stands out among their peers is a bit of a myth. And a bit of a useless thing, the team's performance matters so much more than one individual on it - in fact it's possible to make the team less effective overall by e.g. raising 10x the usual rate of PRs and waiting for others to deal with them.

"great teams make great engineers", not vice versa

https://www.youtube.com/watch?v=XppRCB99djw&list=PLuAItjWV4p...

I have worked with a "10x" engineer.

How do you think a team of ordinary (1x) engineers will function if you add a 10x engineer to it?

I'm my case it was like putting a car driving 100 mph where the speed limit is 10 mph. A disaster.

I think that a 10x engineer could work alone in isolation.

Base in my experience a 10x engine would also not function in a team of other 10x engineers. You need to have complete disregard for what others think and do if it's anything like my experience.

This is currently my top concerns with my career/job.

Biggest obstacle; time/energy. 40 hours with 10 hours a day invested in the job leave me with zero motivation to further do training. Risking burnout here, I need to get away.

My employer current and past has no problem teaching me what I need to know to do my present job but zero involved in progression, that's 100% on me. Obviously that's their prerogative. They all do generally pay for things I take electively, I just need to figure out what I want to do and figure out when to do it.

I think I've trained myself to become better, by proactive in picking task, asking question and reading business requirements. It helps me know a lot of techninals and non-techinal things.
Very interesting thread, and something I’ve wondered about. My (very profitable) employer does very little. I get conference attendance every 3rd year and whatever management think is valuable knowledge to share internally (random coworker doing a talk on something they’re good at).

After having looked for opportunities for a while, I suspect being independent/in a co-op, or at least in a very employee oriented/owned shop is required to take care of your own long term development.

Being independent or in a co-op, what would be your training system?
As a developer/business owner who cares deeply about our staff’s long term growth, I started reading this thread looking for ideas we could use.

Right now our strategy is some combination of mentoring/pairing time, teaching concepts and how to apply them, encouraging devs to take ownership of their work and rewarding them by having them present their work to clients.

Is it working? Staff seems generally happy with that way of doing things but we aren’t measuring it.

Will continue to look for ideas here.

This is one of the grossest series of discussions on work and life that I've ever seen. OP, please stop shilling for corporations. 10x isn't real and training for any end is completely subjective person to person when it comes to technical skills. Do a good job on whatever you do and focus on improving things while accomplishing your goals both in work and personal life.
Most of them won't. In 2022-2023, that's not going to happen. 2011-2015 was a good time companies were helping workforce grow together by willing to train engineers who are eager to learn.

Today? You need 5 years of specific tools to get a job. 10 years of total experience. There are exceptions as always..

If you want to create 10x engineers, be sure to start with 10x management, a 10x culture, 10x hardware and software resources, and a 10x physical environment. Otherwise, you may not be able to recognize the 10x engineers you have because they won't be able to do 10x work.
> how companies create 10x engineers

They don't. All the ones I can think of appeared before getting paid. I'd hesitate to say they are born but they're certainly not made in the corporate world.

Also to answer your first question: my company isn't.

By giving me enough guidance and help, along with a challenging training project and a pretty tight feedback loop. There's also a pretty generous budget for training, after I am cought up to speed. (Recent switch in what I work with)
Working as a team. Pairing on tasks and learning on the job goes a long way.
I found it to be very challenging to deep-dive into harder subjects when doing pairing
Why?

To me, pairing is exhausting, so I don't like to do it too often but I almost always feel more than twice as productive and I feel like I am better able to dig into the hard stuff easier.

Don't get me wrong, pairing has merits. Let me give you an example. I'm in the middle of going through type challenges in Typescript (https://github.com/type-challenges/type-challenges). If I knew absolutely nothing about types, pair-programming would have helped me get started. But some of these challenges teach me important insights about the Typescript typing system that take time to wrap my head around. You don't get this amount of system 2 focus when pair programming because pair programming is (to a large amount) communication.
Your comment got me curious, so I've just asked one of the best developers at Google. If you want to tag along and make some noise: https://twitter.com/FlavianHautbois/status/15972300521436733... (he has not replied yet) [FYI, I sent this comment to another thread as well]
I'd take a 1x engineer over a 10x any day of the week https://1x.engineer/
Ours is requiring everyone to take security, Docker, and web development classes.

It's about 10 years late, but it's an improvement...

1. companies don't "create" engineers, if they could...10x would be the new 1x

2. let people have time to spike WHILE working

1. Yes, that's the point. 10x doesn't say "compared to what", but hints at "compared to now" 2. For sure. My 3 former companies let people spike while working, and I've seen mediocre engineers (lots of bugs, rework) become ok (barely any rework, a few bugs from time to time)
10x's don't waste time to things like trainings.
Fully agree, they learn by doing, nothing beats experience with brain
£1k and 1 week training allowance per year
10x engineers create themselves.