As soon as you attach yourself to the end of the human centipede, the immediate thought is "I won't rock the boat because I'll move up if I just eat it all without complaint."
At one theoretical company I know about, developers were required to create estimates for work on a project that has a hard deadline. The deadline was established before any of the developers were even hired. My guess is that when the team fails to deliver on time (and they will), management can then blame the developers for their "bad estimates".
I thought that's a rare culture that happened only in one of my ex companies 😬 Sadly, one of the engineering managers with genuine strong leadership and widely known track record, his progression somehow stuck, while other managers with high turnover rate and not so positive reputation got promoted very fast. It seems corporate bs not only impact talented engineers but also demoralised passionated managers.
I have become acutely aware of this at my current job. Im leaving my company because my current work environment is just horribly inefficient because my manager barely even cares.
According to the Coding War Games study in Peopleware, they really did find a 10x difference in productivity, i.e., some individuals got their task done 10x faster than others. The catch? They had actually measured that there was a 10x difference between organizations, not people. Within an organization, the average difference was about 20%. Your guess at 9:23 was spot on. Quote: "This is more than a little unsettling. Managers for years have affected a certain fatalism about individual differences. They reasoned that the differences were innate, so you couldn’t do much about them. It’s harder to be fatalistic about the clustering effect. Some companies are doing a lot worse than others. Something about their environment and corporate culture is failing to attract and keep good people or is making it impossible for even good people to work effectively."
I have seen really, really good performing programmers whose productivity fell off a cliff when their boss moved on and a new one came in, and I've seen a "problem employee" become a top performer after their old manager transferred them off to another group to get rid of them.
How do you only have 26k subscribers? Ive been in tech 20 yrs including senior leadership roles and I am so glad to find someone I agree with on many things and I can still learn from. Will be following along with you here. Thanks for sharing.
I think because the first video I published (on this channel or anywhere - aside from some conference talks I've given that got recorded) was March 4th, 2024 (not quite 7 weeks ago, as I type this). So I'm actually pretty surprised that as many people have found the channel as quickly as they have.
@@InternetOfBugs this channel sort of has the "maturity" if that is the right word, or feel of a channel that has been around a while and knows what it is doing. Thats what got my sub!
Every time I say his name to a large group, someone tells me I'm pronouncing it wrong, even when I pronounced it like the person that complained last insisted. So I just try to avoid pronouncing it at all when speaking in public.
@@InternetOfBugs It's "Lee-nus" like Bruce Lee and the "u" in "nus" is pronounced like the letter "u" but without the J sound. "Tour-valds", "Tor" is closer to how "Tour" is pronounced in english and "valds" has an "a" sound that is closer to how the first vocal in "out" is pronounced. I'm Finnish and that's how we say it, IPA would be useful here huh... edit: I guess the "ou" sound goes for both first and last name actually
You touched on the essential point that most people simply do not perform at their best (they stumble on every pothole in the road) whereas the fast and productive people seem to magically not do that. I agree that management contributes to this a lot but more of it to me seems to simply be a familiarity issue. We tend to forget that a lot of software, tools, techniques and "best practices" are kind of ad-hoc, change all the time and are not very well synthetized. This means that if you happen to think like the person who wrote the system/library/architecture/whatever, you will simply fly over all the bumps and potholes whereas if you are unlucky and you happen to think in a somewhat orthogonal way, you will hit all the snags. Because boy oh boy there are tons of them! This also compounds and builds momentum over time until you are either a superstar (everyone cheers you from you early successes) or a failure (everyone puts you down more and more reinforced by your past failures).
"When companies say that the Leetcode interview process is very very important and that they want to make sure that they go through that process because it makes for employees that perform better, I think that what they're actually saying is 'Our managers are really bad and our environment is miserable and we're trying to select for people with a temperament to perform well even when they're miserable'" So well said.
Yeah… leet code, white boarding and homework are signs for jobs that I simply turn down the interview. It’s tells me they have a bad process and plan to over work people.
I fall into a separate category of programmers. I am generally brought in to troubleshoot and modify existing legacy apps. So, I am more of maintenance programmer than building out new apps. It's a lot harder to track performance since it depends on the bug (issue) and it's complexity. Some bugs are easy squash and others take time to track down.
I also took a paycut and came back to be an individual contributor. That was the smartest decision I've made in my carreer. For the same reasons that you mentioned: I don't have the temperament to be a manager, I have nightmares with "managing up" and care too much about people underneath me.
I’ve managed to avoid getting “promoted” to manager my whole career. I’ve seen what that does to people, and I don’t want to go anywhere near it. As best as I can tell, being a mid-level manager consists of going to one meeting to report status to higher managers, and then going to another meeting to tell everyone what you were told to tell everyone by the higher managers. Sounds like a nightmare to me.
I think 10x devs exist - except that like everyone else, they operate in 0.2x mode for most of the time, then hit 10x during bursts of unusual creativity that may stretch for a few days. We have developed Agile and constant meetings as a sure fire method to make sure nobody can get creative anymore and fly off to 10x land.
If they discovers their full potential and have some soft skills (which might be difficult), they left companies to star their own business and after that they are stopping coding due to other duties.
Absolutely! Current agile process is a copy paste of big techs: squads, code reviews, etc. I work at 0.2x speed because I know that if I implement improvements or any extra thing I will have to explain it, have it reviewed by 2 or 3 individuals who don’t have the context, and setup for the most common mediocre implementation, and get no rewards for it but stress. So I limit myself to be a “ticket machine gun” and only implement what is explicitly asked in the requirements and what’s in my name in the board. In our org, there are only very senior developers who own a piece of the app. Code review just slows us down, it should be optional in most contexts. And edit: I only get compliments since I started doing this And edit 2: off course we already lost the deadline, by two months ago
@@alexxmde Great comment ! Yeah, I forgot all about the wonders of what they call "code review" in modern software development When I worked on big defence projects before all this agile crap, we used to have a really interesting and detailed code review process that was backed by proper cross referenced design and test plan documentation. Post agile, its just a bunch of green Javascript experts telling you that your C code is "wrong" because it doesnt use some functional design pattern that they like - which has nothing to do with the code, whilst another green Javascript expert tells you that your ASM code is "wrong" because it doesnt conform to their ideas on Dependency Injection, which is not needed by the program. Its a complete waste of time. Good job on being the ticket machine gun - belt fed, water cooled, love it !
Two of the companies I applied for jobs at over the past year have since closed down. I actually interviewed at one of them. I failed the interview due to not knowing the answer to a single trivia question about lock free and wait free in C++, which I'd never used nor heard of. I wasn't happy when I searched about it later and, after about 20 seconds of reading a blurb on it, understood the concept well enough to teach a class on it (basically, a technique for allowing shared resource access among multiple threads without using mutexes or locks by having each thread access the resource from some managed offset). In that same interview loop, one of the interviewers bragged about how one of their recs had been open for over 2 years with no hire (graphics engineer).
@@jshowao I get where you're coming from, but I would've happily taken their money for the month they lasted after rejecting me. Software engineer beggars can't be choosers. I just completed a 10-hour contract the other day. Things are... Tight
Years ago I had a coworker who use to brag about people who interviwed with him were not able to solve tree problems. Guess what! 3 years and he never use a TreeSet (java api). He just wanted to bust his ego and I can bet he discarded good candidates. Some of them would had been able to learn it in few weeks. Onboarding process was about 1 month generally. It was at verizon.
10x programmer needs 10x-compatible problems and 10x company. Standard corporate job has neither. If you hire a world-class mathematician to do long division don’t be surprised he might not be that good.
Thank you Carl. I felt every line of yours are facts and based on experiences. And I felt I learned a lot and filled in the gaps especially the doubts I had while I worked on my job as a manager. Good managers are hard to come by. And as you said, small company managers are a job easier to do vs big corporate. Just because there are distinct skill set to work as as a manager. I loved your take on 10x. It kind of answered why a team of mine used to fail at a product and needed an outsider to help and that dude would come and did it in a week. I know exactly what you meant and that isn't 10x it is just a comparison. Amazing vids keep it up! :)
I am a DE by profession, I feel like, though you are super senior to me, but much of my mindset matches with you [respectfully]. I wish I could be interviewed by you sometime in future(not for job, but for self reflection)
From my experience, those 10x (or more productive) developers in companies are the ones that they try harder to prove themselves to others. And in fact, they are just the louder people and shout any small thing that they do that will cause managers will see them more compare to the others. Unfortunately, I was one of those and couldn't believe how much easier my job became when I just tried to be louder than others and how others that even I knew that they had done a lot more than me, but my manager was telling me that they're not working good enough. And usually more (real) experienced developers are the ones who know a lot and can do a lot, but they choose to not do that, and instead spend more of their energy and their time on their personal life and goal, not for the company.
"Leet code dependant companies...Our managers are really bad and we're trying to select people with the temperament to perform well even when they are miserable" - I rarely proceed with leet code challenges because they don't measure anything but you're skill to solve toy puzzles, but I never thought of it like that and you make a lot of sense. 4/5 of the companies I worked for never presented me with a coding assessment and they were fantastic places. Even the one that did was a basic problem and they also turned out to be a great place to work. but most that require complex and long interview process are mostly shitty companies.
so the x in 10x implies multiplication? can a 10x developer do 40 hours of work in 4? will his boss let him come in half a day on Monday and take the rest of the week off? If you do 50 weeks of work in 5, do you get to go on sabbatical for the rest of the year?
I'm thinking this is sarcasm, but I'm guessing that there will be people (especially people unfamiliar with American language conventions) that might have this question for real. Yes, in the original paper that the "10x" idea came from (web.eecs.umich.edu/~weimerw/481/readings/productivity-performance.pdf - also linked in the description) they measured the ratio of the time taken by the fastest and slowest programmers to complete a toy problem. They concluded: "one poor performer consumes as much time or cost as 5, 10, or 20 good ones. Validated techniques to detect and weed out these poor performers could result in vast savings in time, effort, and cost." For what it's worth, I actually had someone say to me this weekend that they really liked Sprints, because they could crunch all their work the first couple of days and then coast the rest of the time.
Not all of the 40 hours is coding work and obviously no one thinks you can be 10x faster at sitting through meetings. Also the 10x is comparing fastest to slowest, not fastest to average. So you could imagine a developer that accomplishes the same amount of work coding 8 hours a week as a typical develop accomplishes in 24 hours/week (and a slow developer would take 80 hours). That doesn't seem too unreasonable to me, indeed I know of devs that work
I think you touch on of the biggest points. Companies want to treat developers as just another cog in the machine. The idea of leetcode style interviews and looking for 10x engineers is only sustainable because of bad labor laws and immigration. Big companies don’t have to do the hard work of finding good managers. They can implement pip quotas. I mean they have access 50-70k migrant workers desperate for visa every year, so why the hell not.
15:42 "The times that I was a manager were some of the most very miserable times of my life" - this is super relatable. Please do speak about it in a future video!
there is 100% a thing as a 10x programmer. They did 10x the work more than everyone else. He was insanely organized to the T and focused. Its not like our team were lazy either. He just figured shit out 10x faster. The dude also carried a laptop with him when he went everywhere and always had a notebook in his hands... He could never just turn it off and i would be miserable doing that but he seemed happy.
This helped so much! I am a new developer and was really nervous to start my new job. I had a terrible experience at my internship at a different company and felt like I was not good enough to be a SWE even though I was top of my class, great at interviews, and worked hard on projects. Looking back it was because I had a terrible manager AND I was actively looking for a new job. I went from a 1/10x developer to easily at or above the median. Managers can make such a big difference
Puzzle interview questions are a proxy for IQ. Every employer cares about IQ, but legal precedent makes them uncomfortable requiring an explicit test for it, or asking for other proxy results like your SAT score, so giving a roundabout IQ test that seems "justifiable" is where these interview puzzles have their roots. It's stuff that should be well known but the clown world we live in incentivizes obfuscating everything.
IQ tests themselves are generally a proxy for schooling. Puzzle questions likewise are more focused on stuff you'd do for a tricky problem set in a classroom.
Pretty much saying the quiet part out loud. Although puzzle questions allow candidates to prepare and potentially perform beyond their 'natural' aptitude to some extent in a way that's harder to do with proper IQ tests. Stuff like _Cracking the Coding Interview_ and LeetCode, etc. It may be that employers want some combination of intellect and/or other innate/deep-rooted traits like conscientiousness (example from the Big 5 model of personality traits). If they set a hard cut-off point for IQ instead, the pool of viable candidates at the price they want may shrink too much. And the problem with gauging something like conscientiousness through a personality test is that those, even the good ones, are not 'self-validating' in the way that IQ tests can be. So if you need to validate anyway, might as well do something that requires either very high innate talent, or moderate innate talent and very high work ethic, etc. Larger candidate pool, less 'problematic' to lawyers looking for lawsuits or journos looking to stir up a fuss, and last but not least: Much of programming is blue collar work disguised as white collar work. Unless you're a true genius, it's extremely difficult to improve on the results you will get from fast, disciplined, and carefully guided trial and error. Example: If you have an obscure legacy codebase needing 1 or 2 bugs fixed, dredged up by management to be used again, where no one's even gotten a debugger working correctly in years, with a ton of async state management code that involves network calls, you can: A. Build a mental model of the code, take it slowly, mentally masturbate over the codebase a bit, etc. Eventually you may get the right solutions, and even learn the codebase better! Which ceases to be useful when they move you to something else in a matter of weeks. All that time was mostly wasted. B. Insert some damn logs anywhere they might be even remotely useful, which is tedious, even with 1-keypress log statements for any variable, but results in far less thinking, much more time saved in the long run, and avoids having to learn codebase-specific quirks which are not transferable or useful beyond a certain point. I've seen so many people try something similar to A, or ask around, when B will take less than 30 minutes at most, and will resolve their only work task for that entire day more or less. You see where data may be missing, late, or in an unexpected shape, even when the control flow is non-linear. It's actually insane how often something like this can trip up even corporate engineers with years of experience, for hours. A lot of them would have gotten filtered out or forced to pick up a good bag of tricks if there was a litmus test similar to the LeetCode stuff the Bay Area uses. Even just a debugging test.
@@drno87 Correlation between IQ and schooling does not imply causation. Historical data like the stuff illustrating the Flynn effect (recent studies suggest this trend may be plateauing or reversing in some regions) shows that factors such as improved living conditions and healthcare contribute to (seemingly) rising IQ scores (at least pushing them to some kind of 'phenotypic maximum'), not merely education alone. High IQ may lead to better educational opportunities, and it also implies parents that are similarly high (which almost always means high earners, who may prize education for their children for reasons tied to status/signalling more than actual increases in competence), but the reverse impact of schooling on inherent IQ appears to be more limited than people tend to assume. We're talking single digit shifts here at most. IQ is distinct from domain-specific expertise and skill. Plus, what does schooling even mean these days? Almost anyone who can get a foot in the door of an employer will at least have gone through high school. These days, for education to stand out, you at least need a STEM degree, but when more and more people have that too, it's less and less useful as a filtering and sorting mechanism. Degree hyperinflation. You see employers shifting away from degrees in many fields (even technical ones) where they aren't hard requirements due to things like regulatory compliance. Though you're probably right that the puzzle tests are meaningfully distinct from an IQ test.
Largely agree with this. I believe that some developers are 10x more productive on a project. Usually its because they know 10x more about the project, perhaps they are the ones who wrote the bulk of it. Managers can definitely sabotage good developers. Also for some reason I find the people using vi/emacs are generally better than those using all the new hip tools.
Great stuff. Really thought-provoking. The categories are a really useful framing for understanding this. I always think of one additional category: the "specialist" programmer. This is the person who writes hardware drivers, language compilers, kernel modules, etc. -- things that require really deep knowledge. I think we often are thinking about people like that when we imagine a 10x programmer. A lot of the "10x" programmers I've met irl are what John Ousterhout (in _A Philosophy of Software Design_) called a "tactical tornado". They produce a lot of code very quickly, but usually make big messes that others end up having to clean up.
really glad that @CodingAfterThirty mentioned your channel, and this way I found all of these great videos. Good to see a content that is both based in reality and refreshing in the same time
"I have been a manager, but that was one of the most miserable times of my life" - let THAT sink it, and what this tells about management as a whole. It explains the for-ever mismatch between biz (driven by simple greed) and tech (driven by - guess what - tech curiosity). Very few people who can build a bridge between. It is miserable by design.
I was a manager for the last two years and I loved leading a team so much. But it felt like there was no reward in management for caring about the wellbeing of the engineers and the quality of the product shipped. my team was shipping high quality software on time, but because I was pushing back on the culture of shipping unfinished software and had reduced the velocity of the team in order to ship working software, I was eventually fired. I wish management felt like a viable path; I loved stewarding a team and growing engineers. But I am not sure it is possible to be a manager in this industry in a way that aligns with my values.
What companies need to do is accept the fact that they need to take responsibility for their company culture and foster environments where employees want to stay and then TRAIN them to the level they're looking for. The time spent vetting new candidates would be better served onboarding, training and doing actual work.
I think there are some devs which generate Nx output. However in teams this balances out and if they can communicate well they can raise the whole team's output. If they don't they usually bring the whole team's output down. And yeah leetcode does not test for this
10:06 This is a good point. At my previous job when I was asked to interview people I would ask them basic things about the garbage collector works (It was a C# shop) or about how they would structure a certain type of program or something similar just to get them talking to see how intelligently they could discuss a topic. Even if they didn't know something, how they reacted to not knowing can tell you about their personality.
Agree with most of what you said, but there definitely are 10x developers in corpo dev. Have met a few over my 25 years in software... It's usually those who know the existing code-base and maintain it (the stuff you mention you hate), know the architecture, frameworks and tools, patterns and customers/use-cases that are relevant by heart. And can implement a feature or fix a bug 10-100x faster and better due to that (usually highly proprietary) knowledge. But I've also met people who are 10x after a few weeks by going completely bananas learning that environment during their on-boarding, while the majority of people next to them are there for 2+ years and still fight the environment instead of learning it. If you haven't seen 10x devs in your jobs, it might be: (seen all of those) a) their hiring is total bs (what you mention), b) their turnover is crazy high and doesn't retain experienced people c) all the 10x-devs are over-employed or work 2 startups on the side, so the company is only getting 3x on their salary d) the job is 80% bs-meetings and nobody gets anything done.
Thank you. Especially about the part of being a manager. I went through the same thing. It was not for dev but for an ops position but the manager part was really horrible and after that I decided to never want to be a manager again.
Really nice video dude. thanks for this discussion, I really enjoy hearing you discuss these topics and give your 2 cents. Keep on pumping out the content!
I agree with almost all of this. Computer Science and Software Engineering jobs as a whole are pretty recent--lawyers, businessmen, civil engineers or politicians are ancient traditions that have slowly evolved through time, while a MERN stack engineering position will be born and completely die off during half the lifetime of a programmer. This is an industry that moves at a breakneck speed and it should definitely pause a bit to reiterate its recruiting process just as it did with its software engineering lifecycle practices. Sadly, right now there's a huge amount of unemployed engineers and so we have an "employer's market" in the US, but I hope that in a couple of years we'll have some books or TED talks or research papers that point towards fairer and more scalable recruiting practices--I know plenty of engineers that would be top performers at FAANG but have desisted of applying out of fear of leetcode questions and ruthless exams (aka "interviews"). Who knows? Maybe this channel will kick off that self reflection in the industry.
The best "manager" I've had was when I was an intern and my lead was not afraid to push back against his management. Later when a management position opened up he was not considered because he wasn't part of the "good ol boy" system.
When I did my math degree I really felt like there are 10x mathematicians. Mainly because I met some 14 year olds that had a deeper understanding of the material than I did. Not just more ability but they asked the right questions, and wrote cleaner proofs. The problem is people obsessing over it like nerds, and trying to rank everyone and create hierarchies over it. It's not a healthy social environment.
I've interviewed a lot of people. I've quickly been able to understand, just with a conversation, if they know what they are doing or not. There hasn't been an ambiguity in my mind where I needed to give them a ridiculous quiz to resolve my doubts.
Great video, you're looking at the root cause, the only thing would be great to have unwanted pauses cut out instead of micro rewinds, they instill some kind of fear :D
I think measuring volume of trivial work tasks that can be done by a “10x” developer does not paint the whole picture. There are inherently hard programming problems or areas where it takes a special person to be able to get things done. Some of these require a lot of knowledge and experience, others higher programming IQ. An average developer might be able to eventually solve same problems but would have to take lots of time to learn related things and fail at trying that sometimes it’s just impractical. I don’t know how to describe this in terms of a coefficient, rather we just know such people who can solve really difficult problems and get huge volume of work done day after day. Such skill takes long time to acquire and is definitely beyond 20% margin of improvement.
16:17 (about a few seconds ago) you mentioned about possibly talking more about why you didn’t enjoy being part of management. I’d like for you make a video about this topic. I think it’ll be interesting.
I love your videos. I am from Pakistan. I don't have the temperament to be a manager, freelancer, or create a startup. Furthermore, the market in Pakistan sucks. Therefore, I started working in remote companies (startups). I have a good record while working with startups. Once for a huge company. I cleared all leetcode, feature requests, and bug-fixing tests. It was around a week of work. Which I did for free as it was a selection process. Obviously, I use GenAI while working on bug fixes, feature requests, etc. Afterward, I cleared interviews as well. Received an offer on a condition that I have to clear CCAT test (50 MCQS in 15 minutes where I have to take 40+ correct.) The amazing thing is that the Aptitude test was proctored, and they forced me to use three cameras: one front, one mobile front to see my lap, and one mobile back camera (I have to borrow from friends) to see that everything in front of me (back of the laptop.) I messed up. As I am a programmer, I applied and was selected to be a programmer. I was rejected based on the Aptitude test (after clearing all the technical steps.)
Your point is taken. We don't need 10x programmers, we need 10x managers. Linus didn't write Linux. It was written by a group. What made and what makes Linux work is Linus was a good manager. He says this himself. "I don't code anymore". He manages the process.
I think "10x developer" is a misleading term, a "succsessful creator" is more appropriate, and by that I mean a person that was able to gain huge profit on covering human unknown or unsolved needs. Misleading comes from thinking that 10x means a huge productivity, but you just can't be a productivity machine and have 240 hours in a day to be 10x productive, and do no mistakes on the way. Good video
Agree about managers, agree about leetcode bullshit, disagree about skill not being an issue. Whether developers are good or bad can have a critical impact on the future maintenance of the project and sometimes can even determine whether the project ends up being success or a failure.
Quiet cutting is a thing - where employees get shuffled off into roles they hate, don't get inflationary pay rises so they're making less each year for the same job, get told they need to do extra to the job to make the same money, they burn out, end up working down to their shitty pay, start believing the narrative that they're useless, can't quit because now they believe they're just shitty programmers, and it becomes a kind of evil Pygmalion effect. They expect to be penalised for doing ok, and they expect all companies to just treat them like shit.
I'm in that weird corner case of a tiny group that survived all the froth of other 'devs' here at my company. I do have an awesome position of being my own team and having hundreds of people using my programs (and loving them much more than what is available as standard provided by my company!). But for me it was really a passion project and I've spend probably more than 40 hours of overtime per week for more than 5 years now. I do not recommend it for most people.
When I played football I always heard the story of Vince Lombardi who took average players, or at least players that were not exceptional, and won champions with them. A good coach or manager will always out perform a bad manager regardless of the talent they have on the team.
Scientific software developer here, It's really unfortunate that research code is throw away because it makes results hard to verify. This is something the research community has been spending many years trying to change
I am a 10x developer, but only when i work on projects that i am fully committed to and that i love to do and where no manager is forcing me timelines and outcomes. In other words. When i do my own stuff i am AT LEAST a 10x developer compared to corporate slaves.
Your point about how leetcode interviewing makes twisted sense if you want to find developers who will keep performing when they're miserable made me laugh out loud 😂 Great talk. I think that while 10x developers are a myth, 10x teams are possible. But managers put too much energy into interviewing new devs, instead of taking a hard look at the culture they've created
I’m starting to get the picture that there are a lot more 0.1x developers, unfortunately. If you see someone write in 10 lines of code what could easily be done in 1, that qualifies, in my opinion. For example, if you see someone write a classic “for” loop, I consider that to be a red flag these days. Most languages have much better built in options, and if someone doesn’t know about them or doesn’t know when to use them, they are going to take 10x longer than they should.
@@AftercastGames nothing wrong with doing a classic for loop. As long as they’re not doing a while loop with an increment at the end for no good reason
@@AftercastGames i feel as though if your biggest red flag is a for loop then you're looking way too low or 'little picture'. ill agree with your point that there are many 0.1x devs but the things they do aren't 10 lines, it's putting something together and not caring what the next dev is going to see when they read your code. it could be a few lines of something 'clever' or hundred of lines of something that requires immense effort to understand and make changes to. a real 10x dev might make only 1 line of code to do/fix something but, they should be making code that they know can be worked with easily again in the future.
@@AftercastGames What counts as "better" entirely depends on the context, depending on what you're working on even a triply nested for-loop could be the optimal solution. Rather than focusing on what abstractions a dev uses it's better to look at whether they have a sufficient variety of tools in their toolkit and if they can recognize the circumstances where those tools are best applied.
I like your content in fact I've subscribed! - there are many 10x programmers out there, I would not bother to pay these two guys the salaries of ten devs we all have proof of theirs skills: Linus Torvalds and Ryan Dahl.
If 10x devs don't exist, then x/10 devs definitely do. I've worked with them and it was extremely painful. You discount Carmack's success as 'just happened to turn out big' ignoring the fact he was churning out a game a month or faster, most of which none of us ever heard of. Good to know him and I are equally talented in your understanding of the world, I guess.
There are some edge cases, I believe Casey Muratori, Jonathan Blow, Sean Barrett and Fabian (ryg) Are easily 10x Developers. Watching Casey parsing PNG files while explaining it, was a crazy thing to me, That guy reads and explains and then code, faster than I would read the spec myself. (I am not really against having 10x developers, It always makes me want to be better than I am currently).
I have just enrolled in CSE (Computer Science Engineering) branch in a reputable college. Please guide me which books should I start referring not for coding but for strengthing the basics of computer science.
I call them "rubics cube" interviews, where the point is to solve relatively simple programming problems as fast as possible. It has virtually no bearing on if you can do the work, since, by definition, programming work is novel (otherwise companies would be just copying previous code). What it encourages is people going to web sites and practicing solving programming puzzles at speed. It works, but it doesn't teach real problem solving.
Thanks ever so much for starting this channel and making all these videos! It's incredibly valuable, for the whole industry, to hear from someone of your experience, and as articulate and thoughtful as yourself. Anyway, you make a great point about leetcode interviews. But do your criticisms apply equally to companies that also carry out System Design interviews? I wonder if some of the same best practises and approach to problem solving mentioned in your videos, are exactly what System Design interviewers are looking for. Or are these interviews just more expensive in terms of interviewer time, subjective, and no more reliable an indicator of a candidate's future productivity than anything else?
I feel like productivity isn't the most important metric for a developer, and is arguably a harmful one to focus on. I think in the majority of cases you want developers who write clean, maintainable code, and that is a mindset not a skill or experience issue. If person A takes twice as long to implement something as person B, but that implementation is easier for other developers to understand, and fits into the architecture in a cleaner fashion, that extra time has reduced the overall chronic impact of that feature/bug fix/whatever going forwards. The amount of careless developers who can implement something quickly, and then leave others to deal with it for years to come, is astounding, and is something I see more frequently as time goes on. Its quality, not quantity, innit. Ideally your code speeds up other peoples work, not your own, then you're in a good place I think.
"Productivity" is vague, and we don't have (IMNSHO) good ways to measure the quality of a developer in any quantitative fashion. So it means different things to different people. That said, I HATE the phrase "Clean maintainable code" It's so ambiguous and has been part of so many vehement, pointless, time wasting arguments other the years, with people on both sides claiming their way was the "cleaner" way. In my opinion, arguing about code cleanliness, beauty and aesthetics has taken up more time that could possibly have been saved by implementing any given set of code cleanliness rules. I'm sure I'll end up with videos about that at some point, although at the moment they aren't at the top of my list.
@@InternetOfBugs It is ambiguous for sure, and yeah I've seen (and been in) many discussions like that. It isn't about beauty, or aesthetics though, it's about the maintainability. As in the ability for someone to come in once the original developers have left, and understand/modify the code with minimal head scratching. That requires care, and empathy for those future devs, and I'd rank it top of the list of desired traits in a developer. Code can be taught, speed can be trained, but I think care is more a personality trait than anything else.
@@CallumBradbury How do you measure how "maintainable" a given codebase or code change is, though? How do you know what will or won't be understandable to the next dev? I'm not trying to imply it isn't important - just that most of the discussions I've seen on that topic have just led to disagreements. For example, I had a teammate who insisted that any method that was more than `n` lines long was too complicated and needed to be broken up (I don't remember what his `n` was - 20 or 30 maybe? - it's been a long time). For me, though, I'd rather have a longer method that linearly and clearly does a sequence of things that are easy to follow, and having to scroll or hit PageDown a few times is much better in my opinion than having to RightClick->GoToMethodDefinition (or the equivalent hot key) over and over and over again. Both of us thought our way was the more maintainable one.
@@InternetOfBugs Honestly I think the length of methods and stuff like that isn't the important stuff, that's not what makes it maintainable or understandable - not really. Anyone can understand a long method, and anyone can navigate through functions if they have to (though I also prefer the longer method in most cases). It's a bit trite to mention them, but I think the SOLID principles are a good start, as are unit tests. If a class can't be unit tested easily, it's probably an unmaintainable class, is my general philosophy (unless its dealing with a 3rd party API that doesn't have interfaces). Obviously you can go too far with that though, breaking down things too much, or even worse starting to religiously follow that 'TDD' plague that has been popping up everywhere lately. If you can write unit tests for a class, that means someone who wants to know how to use the class can look at the unit tests and they become their own form of documentation, one where the user can see what is supposed to happen when it's used in many different scenarios. They can see the edge cases, and when they modify the class they can check they haven't broken anything. I think the folk who say 'write the tests first' are insane, but I think at least writing the tests before committing the code is the best step towards a maintainable codebase, as it makes you think about not only what you're using it for *right now* but also the scenarios you might not have considered before throwing it into the repo for others to get their hands on. Does it take longer? Sure. Will less features get delivered? Absolutely. Will it save time in the long run? Probably, unless the project is a one-and-done throwaway thing. My background is .Net though, unit testing is pretty cohesive and advanced in the land of milk and honey, I don't really know what other languages do regarding that stuff.
The biggest problem with "productivity" is that we have to deal with tradeoffs a lot and some consequences may cause more maintenance work later, some bugs will cost time, etc.. We cause additional work for ourselves or our colleagues in the future and we have to split our limited time working on new features and the other work. Being busy thus doesn't mean we're productive. Doing overtime to fix bad tradeoffs isn't being productive either. To fix errors which could have been avoided in the first place isn't productive.
Is quite easy to be the 10x developer, just go to a company that hires bad developers. There are people who take 10x longer to fix a bug because they don't understand programming at a level that allows them to fix the bug. If you don't know gdb, then you can only print statement debug and try random things until it worked. The amount of "developers" who managed to get by that way is mind boggling.
Great video. You mention not staying too long at companies. It would be great if you could elaborate on that and what your heuristic is for moving. I am staying at a job at the moment because of the optics and perception (I have spent between 12-18 months at 3 jobs for what I think are legitimate reasons) so that insight would be interesting. Also the manager IC dynamic and path is fascinating Id be curious as to why you think the incentives are stacked in such as the way you described. Subscribed!
A good programmer knows how to find information that predicts other information. To judge a programmer on what they've memorized ignores what the skillset is.
Nail on the head! _So much of it_ (and the general “enshittification” process) ties back into management. From performance at the individual developer level, the team level and all the way up to the product level. Proper management is key. OKRs (objectives and key results) are important, but knowing _what_ to measure and not just counting lines of code, Jira tickets or whatever and quantifying what really matters is so important.
I think these would be better without the micro-editing out all the pauses. Not even because I think the pauses are valuable themselves, just that the editing makes the experience jarring.
Idea for another part of your series since you are discussing technical interviews and I am currently a grad student; with your history of interviewing many developers can you share any insights / opinions on viewpoints of prestigious university candidates vs lesser known universities or even bootcamp candidates.
Short version is for most roles it makes basically no difference unless the hiring manager has a prejudice one way or the other. There are exceptions, mainly for specific kinds of jobs/skills like Machine Learning and High-Frequency Trading (Quants) that are seen as more academic/theoretical. Longer version might be worth its own video. I'll put in on the list.
I'd like to see a video about job descriptions for open positions. You have one extreme where they toss in every nice-to-have skill possible, and the other extreme where, in an effort to not turn away potential candidates, are way too vaugue (specifically, there's been multiple roles at Hashicorp that I didn't apply to because I didn't understand if I was qualified or not).
@@InternetOfBugs They're generally broken and being concise in a way that will attract qualified candidates needs guidelines (edit: without also scaring off a different set of qualified candidates). I anticipate that you've written a few and have thoughts about what works and what does not. Edit: You need to get someone _to_ an interview before you can even put them through an interview process, broken as that interview process may be.
@@questionablecommands9423 So like "If you, the watcher of this video, are a hiring manager or recruiter and are going to be writing job descriptions for developers and would like some advice, then keep watching." would be the premise of the video? Or am I thinking of it from the wrong angle?
I would say there are different types of 10x, lets enumerate some of them! - 10x complexity dev: Everything he makes is extremely awful in complexity, only he can touch it, the code looks 10x as large as it should, and it takes 10x the amount of people to maintain his project - 10x worker dev: A normal speed dev who is willing to sacrifice all of their free time doing unpaid over time to appear 10x in front of everyone because this dev lives for the pats on the back. - 10x lazy dev: intentionally inserts bugs into the codebase, takes the day off, and then fixes the bug in a minute. Perceived as 10x because the bugs always get fixed. Usually talks a lot about how difficult it was to squash that last bug, this is essential to keep the reputation of 10x. - true 10x dev: doesn't code that much faster than an average dev, but implements the correct abstractions from the start. Never gets credit for being 10x because the code is so good that other people can work with it at a similar speed. Eventually leaves the company and the death timer of the codebase starts ticking while the normal devs try to keep it together.
George Hotz, who is by all account an amazing developer, did a very public one month internship at twitter right after its acquisition by Elon. Granted it was only one month but he really did not achieve much during that time. Whereas he is extremely productive otherwise.
Definitely a lot of over reliance on code tests and IQ-like test out there. I’ve never meet someone who lacked the skills to write good code, it usually is more to do with personality. If someone is passionate about coding and actively wants to continue learning how to do things better then that will probably be a good software engineer. That and the ability to finish projects. Leetcode is truely where the soul of devs goes to die, solve this arbitrary problem for the sake of solving it.
As a 0.3x developer im relieved to hear people aren't really over 30x better than me.
*33
33.3333333333333333333333
@emanuelfrazao6984 lmfao that's why he's a 0.3 developer 😂
@@SweepAndZone I said over 30x. Even 0.3 developers know how to define bounds :)
@@maxron6514h3 does python or js so must be 3.3333333333333332 or 3.333333333333334
"Managers as a whole almost never want to create or be part of a process that holds managers responsible for anything."
Preach.
As soon as you attach yourself to the end of the human centipede, the immediate thought is "I won't rock the boat because I'll move up if I just eat it all without complaint."
@@seinfan9that is a brutal yet apot on analogy. Well done.
At one theoretical company I know about, developers were required to create estimates for work on a project that has a hard deadline. The deadline was established before any of the developers were even hired. My guess is that when the team fails to deliver on time (and they will), management can then blame the developers for their "bad estimates".
I thought that's a rare culture that happened only in one of my ex companies 😬 Sadly, one of the engineering managers with genuine strong leadership and widely known track record, his progression somehow stuck, while other managers with high turnover rate and not so positive reputation got promoted very fast. It seems corporate bs not only impact talented engineers but also demoralised passionated managers.
I have become acutely aware of this at my current job. Im leaving my company because my current work environment is just horribly inefficient because my manager barely even cares.
If 10x developers are a myth how did I become one? It takes 10 developers to fix my garbage
🤣 that made me chuckle
ha ha ha
😂
😂
Hello fellow Prime viewer!
If I were a 10x developer I'd split my productivity up between 10 jobs and collect 10 salaries.
Gotta automate meetings with 1x normie coworkers
I mean, that’s consulting
The 10x programmers are just too dumb to manage expectations wisely
10 times the standup meetings isn't even 100 times the salary
If I was a 10x dev I would have already created devin myself closed source, patented it, and then automated myself 100 jobs and be a millionaire 🤣.
According to the Coding War Games study in Peopleware, they really did find a 10x difference in productivity, i.e., some individuals got their task done 10x faster than others. The catch? They had actually measured that there was a 10x difference between organizations, not people. Within an organization, the average difference was about 20%. Your guess at 9:23 was spot on.
Quote:
"This is more than a little unsettling. Managers for years have affected a certain fatalism about individual differences. They reasoned that the differences were innate, so you couldn’t do much about them. It’s harder to be fatalistic about the clustering effect. Some companies are doing a lot worse than others. Something about their environment and corporate culture is failing to attract and keep good people or is making it impossible for even good people to work effectively."
I have seen really, really good performing programmers whose productivity fell off a cliff when their boss moved on and a new one came in, and I've seen a "problem employee" become a top performer after their old manager transferred them off to another group to get rid of them.
How do you only have 26k subscribers? Ive been in tech 20 yrs including senior leadership roles and I am so glad to find someone I agree with on many things and I can still learn from. Will be following along with you here. Thanks for sharing.
I think because the first video I published (on this channel or anywhere - aside from some conference talks I've given that got recorded) was March 4th, 2024 (not quite 7 weeks ago, as I type this). So I'm actually pretty surprised that as many people have found the channel as quickly as they have.
@@InternetOfBugs this channel sort of has the "maturity" if that is the right word, or feel of a channel that has been around a while and knows what it is doing. Thats what got my sub!
3:15 "The guy that wrote Linux" is definitly one of the possible descriptions of Linus xD
Every time I say his name to a large group, someone tells me
I'm pronouncing it wrong, even when I pronounced it like the person that complained last insisted.
So I just try to avoid pronouncing it at all when speaking in public.
I recently read his surname for the first time in years and went "it ends with an S????"
Yeah, also you can describe him as the guy who created Git
@@InternetOfBugssmart man
@@InternetOfBugs It's "Lee-nus" like Bruce Lee and the "u" in "nus" is pronounced like the letter "u" but without the J sound. "Tour-valds", "Tor" is closer to how "Tour" is pronounced in english and "valds" has an "a" sound that is closer to how the first vocal in "out" is pronounced. I'm Finnish and that's how we say it, IPA would be useful here huh...
edit: I guess the "ou" sound goes for both first and last name actually
You touched on the essential point that most people simply do not perform at their best (they stumble on every pothole in the road) whereas the fast and productive people seem to magically not do that. I agree that management contributes to this a lot but more of it to me seems to simply be a familiarity issue. We tend to forget that a lot of software, tools, techniques and "best practices" are kind of ad-hoc, change all the time and are not very well synthetized. This means that if you happen to think like the person who wrote the system/library/architecture/whatever, you will simply fly over all the bumps and potholes whereas if you are unlucky and you happen to think in a somewhat orthogonal way, you will hit all the snags. Because boy oh boy there are tons of them! This also compounds and builds momentum over time until you are either a superstar (everyone cheers you from you early successes) or a failure (everyone puts you down more and more reinforced by your past failures).
"When companies say that the Leetcode interview process is very very important and that they want to make sure that they go through that process because it makes for employees that perform better, I think that what they're actually saying is 'Our managers are really bad and our environment is miserable and we're trying to select for people with a temperament to perform well even when they're miserable'" So well said.
Yeah… leet code, white boarding and homework are signs for jobs that I simply turn down the interview. It’s tells me they have a bad process and plan to over work people.
I fall into a separate category of programmers. I am generally brought in to troubleshoot and modify existing legacy apps. So, I am more of maintenance programmer than building out new apps. It's a lot harder to track performance since it depends on the bug (issue) and it's complexity. Some bugs are easy squash and others take time to track down.
I did that for 7 years at google. My time at any project fell just short of any hope of a promotion.
I also took a paycut and came back to be an individual contributor. That was the smartest decision I've made in my carreer. For the same reasons that you mentioned: I don't have the temperament to be a manager, I have nightmares with "managing up" and care too much about people underneath me.
I’ve managed to avoid getting “promoted” to manager my whole career. I’ve seen what that does to people, and I don’t want to go anywhere near it. As best as I can tell, being a mid-level manager consists of going to one meeting to report status to higher managers, and then going to another meeting to tell everyone what you were told to tell everyone by the higher managers. Sounds like a nightmare to me.
Keep going! Love hearing old school code guys being real. constant W takes
I think 10x devs exist - except that like everyone else, they operate in 0.2x mode for most of the time, then hit 10x during bursts of unusual creativity that may stretch for a few days.
We have developed Agile and constant meetings as a sure fire method to make sure nobody can get creative anymore and fly off to 10x land.
If they discovers their full potential and have some soft skills (which might be difficult), they left companies to star their own business and after that they are stopping coding due to other duties.
I always make sure to estimate thinking I'll have no distractions and get to my 10x zen state.
Absolutely! Current agile process is a copy paste of big techs: squads, code reviews, etc. I work at 0.2x speed because I know that if I implement improvements or any extra thing I will have to explain it, have it reviewed by 2 or 3 individuals who don’t have the context, and setup for the most common mediocre implementation, and get no rewards for it but stress. So I limit myself to be a “ticket machine gun” and only implement what is explicitly asked in the requirements and what’s in my name in the board. In our org, there are only very senior developers who own a piece of the app. Code review just slows us down, it should be optional in most contexts.
And edit: I only get compliments since I started doing this
And edit 2: off course we already lost the deadline, by two months ago
@@alexxmde Great comment !
Yeah, I forgot all about the wonders of what they call "code review" in modern software development
When I worked on big defence projects before all this agile crap, we used to have a really interesting and detailed code review process that was backed by proper cross referenced design and test plan documentation.
Post agile, its just a bunch of green Javascript experts telling you that your C code is "wrong" because it doesnt use some functional design pattern that they like - which has nothing to do with the code, whilst another green Javascript expert tells you that your ASM code is "wrong" because it doesnt conform to their ideas on Dependency Injection, which is not needed by the program.
Its a complete waste of time.
Good job on being the ticket machine gun - belt fed, water cooled, love it !
Two of the companies I applied for jobs at over the past year have since closed down. I actually interviewed at one of them. I failed the interview due to not knowing the answer to a single trivia question about lock free and wait free in C++, which I'd never used nor heard of. I wasn't happy when I searched about it later and, after about 20 seconds of reading a blurb on it, understood the concept well enough to teach a class on it (basically, a technique for allowing shared resource access among multiple threads without using mutexes or locks by having each thread access the resource from some managed offset).
In that same interview loop, one of the interviewers bragged about how one of their recs had been open for over 2 years with no hire (graphics engineer).
Bragging about not hiring people for a position?
Looks like you dodged a bullet there
@@jshowao I get where you're coming from, but I would've happily taken their money for the month they lasted after rejecting me. Software engineer beggars can't be choosers. I just completed a 10-hour contract the other day. Things are... Tight
Years ago I had a coworker who use to brag about people who interviwed with him were not able to solve tree problems. Guess what! 3 years and he never use a TreeSet (java api). He just wanted to bust his ego and I can bet he discarded good candidates. Some of them would had been able to learn it in few weeks. Onboarding process was about 1 month generally. It was at verizon.
As a software engineer in their second year in a corporate environment, your videos have been really helpful. Keep it up!
10x programmer needs 10x-compatible problems and 10x company. Standard corporate job has neither. If you hire a world-class mathematician to do long division don’t be surprised he might not be that good.
Excellent material. Appreciate you putting this together. So far this channel has been a gem.
Thank you Carl. I felt every line of yours are facts and based on experiences. And I felt I learned a lot and filled in the gaps especially the doubts I had while I worked on my job as a manager. Good managers are hard to come by. And as you said, small company managers are a job easier to do vs big corporate. Just because there are distinct skill set to work as as a manager.
I loved your take on 10x. It kind of answered why a team of mine used to fail at a product and needed an outsider to help and that dude would come and did it in a week. I know exactly what you meant and that isn't 10x it is just a comparison.
Amazing vids keep it up! :)
I am a DE by profession, I feel like, though you are super senior to me, but much of my mindset matches with you [respectfully]. I wish I could be interviewed by you sometime in future(not for job, but for self reflection)
This is the best analysis I've ever heard of how the industry really works.
From my experience, those 10x (or more productive) developers in companies are the ones that they try harder to prove themselves to others.
And in fact, they are just the louder people and shout any small thing that they do that will cause managers will see them more compare to the others.
Unfortunately, I was one of those and couldn't believe how much easier my job became when I just tried to be louder than others and how others that even I knew that they had done a lot more than me, but my manager was telling me that they're not working good enough.
And usually more (real) experienced developers are the ones who know a lot and can do a lot, but they choose to not do that, and instead spend more of their energy and their time on their personal life and goal, not for the company.
"Leet code dependant companies...Our managers are really bad and we're trying to select people with the temperament to perform well even when they are miserable" - I rarely proceed with leet code challenges because they don't measure anything but you're skill to solve toy puzzles, but I never thought of it like that and you make a lot of sense. 4/5 of the companies I worked for never presented me with a coding assessment and they were fantastic places. Even the one that did was a basic problem and they also turned out to be a great place to work. but most that require complex and long interview process are mostly shitty companies.
I love it. Not a single frame of time was wasted here. I love how you articulate the information.
so the x in 10x implies multiplication?
can a 10x developer do 40 hours of work in 4?
will his boss let him come in half a day on Monday and take the rest of the week off?
If you do 50 weeks of work in 5, do you get to go on sabbatical for the rest of the year?
I'm thinking this is sarcasm, but I'm guessing that there will be people (especially people unfamiliar with American language conventions) that might have this question for real.
Yes, in the original paper that the "10x" idea came from (web.eecs.umich.edu/~weimerw/481/readings/productivity-performance.pdf - also linked in the description) they measured the ratio of the time taken by the fastest and slowest programmers to complete a toy problem. They concluded:
"one poor performer consumes as much time or cost as 5, 10, or 20 good ones. Validated techniques to detect and weed out these poor performers could result in vast savings in time, effort,
and cost."
For what it's worth, I actually had someone say to me this weekend that they really liked Sprints, because they could crunch all their work the first couple of days and then coast the rest of the time.
Not all of the 40 hours is coding work and obviously no one thinks you can be 10x faster at sitting through meetings. Also the 10x is comparing fastest to slowest, not fastest to average. So you could imagine a developer that accomplishes the same amount of work coding 8 hours a week as a typical develop accomplishes in 24 hours/week (and a slow developer would take 80 hours). That doesn't seem too unreasonable to me, indeed I know of devs that work
I think you touch on of the biggest points. Companies want to treat developers as just another cog in the machine.
The idea of leetcode style interviews and looking for 10x engineers is only sustainable because of bad labor laws and immigration.
Big companies don’t have to do the hard work of finding good managers. They can implement pip quotas. I mean they have access 50-70k migrant workers desperate for visa every year, so why the hell not.
15:42 "The times that I was a manager were some of the most very miserable times of my life" - this is super relatable. Please do speak about it in a future video!
there is 100% a thing as a 10x programmer. They did 10x the work more than everyone else. He was insanely organized to the T and focused. Its not like our team were lazy either. He just figured shit out 10x faster. The dude also carried a laptop with him when he went everywhere and always had a notebook in his hands... He could never just turn it off and i would be miserable doing that but he seemed happy.
This helped so much! I am a new developer and was really nervous to start my new job. I had a terrible experience at my internship at a different company and felt like I was not good enough to be a SWE even though I was top of my class, great at interviews, and worked hard on projects. Looking back it was because I had a terrible manager AND I was actively looking for a new job. I went from a 1/10x developer to easily at or above the median. Managers can make such a big difference
Puzzle interview questions are a proxy for IQ. Every employer cares about IQ, but legal precedent makes them uncomfortable requiring an explicit test for it, or asking for other proxy results like your SAT score, so giving a roundabout IQ test that seems "justifiable" is where these interview puzzles have their roots. It's stuff that should be well known but the clown world we live in incentivizes obfuscating everything.
IQ tests themselves are generally a proxy for schooling. Puzzle questions likewise are more focused on stuff you'd do for a tricky problem set in a classroom.
No. Iq exists and many people who have outlier high iq hate school.
Pretty much saying the quiet part out loud.
Although puzzle questions allow candidates to prepare and potentially perform beyond their 'natural' aptitude to some extent in a way that's harder to do with proper IQ tests.
Stuff like _Cracking the Coding Interview_ and LeetCode, etc.
It may be that employers want some combination of intellect and/or other innate/deep-rooted traits like conscientiousness (example from the Big 5 model of personality traits).
If they set a hard cut-off point for IQ instead, the pool of viable candidates at the price they want may shrink too much.
And the problem with gauging something like conscientiousness through a personality test is that those, even the good ones, are not 'self-validating' in the way that IQ tests can be.
So if you need to validate anyway, might as well do something that requires either very high innate talent, or moderate innate talent and very high work ethic, etc.
Larger candidate pool, less 'problematic' to lawyers looking for lawsuits or journos looking to stir up a fuss, and last but not least:
Much of programming is blue collar work disguised as white collar work.
Unless you're a true genius, it's extremely difficult to improve on the results you will get from fast, disciplined, and carefully guided trial and error.
Example: If you have an obscure legacy codebase needing 1 or 2 bugs fixed, dredged up by management to be used again, where no one's even gotten a debugger working correctly in years, with a ton of async state management code that involves network calls, you can:
A. Build a mental model of the code, take it slowly, mentally masturbate over the codebase a bit, etc. Eventually you may get the right solutions, and even learn the codebase better! Which ceases to be useful when they move you to something else in a matter of weeks. All that time was mostly wasted.
B. Insert some damn logs anywhere they might be even remotely useful, which is tedious, even with 1-keypress log statements for any variable, but results in far less thinking, much more time saved in the long run, and avoids having to learn codebase-specific quirks which are not transferable or useful beyond a certain point.
I've seen so many people try something similar to A, or ask around, when B will take less than 30 minutes at most, and will resolve their only work task for that entire day more or less.
You see where data may be missing, late, or in an unexpected shape, even when the control flow is non-linear.
It's actually insane how often something like this can trip up even corporate engineers with years of experience, for hours.
A lot of them would have gotten filtered out or forced to pick up a good bag of tricks if there was a litmus test similar to the LeetCode stuff the Bay Area uses.
Even just a debugging test.
@@drno87 Correlation between IQ and schooling does not imply causation.
Historical data like the stuff illustrating the Flynn effect (recent studies suggest this trend may be plateauing or reversing in some regions) shows that factors such as improved living conditions and healthcare contribute to (seemingly) rising IQ scores (at least pushing them to some kind of 'phenotypic maximum'), not merely education alone. High IQ may lead to better educational opportunities, and it also implies parents that are similarly high (which almost always means high earners, who may prize education for their children for reasons tied to status/signalling more than actual increases in competence), but the reverse impact of schooling on inherent IQ appears to be more limited than people tend to assume. We're talking single digit shifts here at most. IQ is distinct from domain-specific expertise and skill.
Plus, what does schooling even mean these days?
Almost anyone who can get a foot in the door of an employer will at least have gone through high school.
These days, for education to stand out, you at least need a STEM degree, but when more and more people have that too, it's less and less useful as a filtering and sorting mechanism.
Degree hyperinflation.
You see employers shifting away from degrees in many fields (even technical ones) where they aren't hard requirements due to things like regulatory compliance.
Though you're probably right that the puzzle tests are meaningfully distinct from an IQ test.
This is my favorite channel. Please keep this up going as long as possible, this is pure gold!
Amazing video, would love a video expanding on the management issues that you touched on!
Largely agree with this. I believe that some developers are 10x more productive on a project. Usually its because they know 10x more about the project, perhaps they are the ones who wrote the bulk of it. Managers can definitely sabotage good developers. Also for some reason I find the people using vi/emacs are generally better than those using all the new hip tools.
Great stuff. Really thought-provoking. The categories are a really useful framing for understanding this. I always think of one additional category: the "specialist" programmer. This is the person who writes hardware drivers, language compilers, kernel modules, etc. -- things that require really deep knowledge. I think we often are thinking about people like that when we imagine a 10x programmer.
A lot of the "10x" programmers I've met irl are what John Ousterhout (in _A Philosophy of Software Design_) called a "tactical tornado". They produce a lot of code very quickly, but usually make big messes that others end up having to clean up.
really glad that @CodingAfterThirty mentioned your channel, and this way I found all of these great videos.
Good to see a content that is both based in reality and refreshing in the same time
writing bad code very rarely has anything to do about skill - and has a lot to do with culture, social skills, ethics and relationships.
You’re so right. I’ve seen leetcode gods plateau quickly in environments they aren’t familiar with in new contexts
I discovered you today and you make me think to much, thank you and great work!
"I have been a manager, but that was one of the most miserable times of my life" - let THAT sink it, and what this tells about management as a whole. It explains the for-ever mismatch between biz (driven by simple greed) and tech (driven by - guess what - tech curiosity). Very few people who can build a bridge between. It is miserable by design.
I was a manager for the last two years and I loved leading a team so much. But it felt like there was no reward in management for caring about the wellbeing of the engineers and the quality of the product shipped. my team was shipping high quality software on time, but because I was pushing back on the culture of shipping unfinished software and had reduced the velocity of the team in order to ship working software, I was eventually fired. I wish management felt like a viable path; I loved stewarding a team and growing engineers. But I am not sure it is possible to be a manager in this industry in a way that aligns with my values.
What companies need to do is accept the fact that they need to take responsibility for their company culture and foster environments where employees want to stay and then TRAIN them to the level they're looking for. The time spent vetting new candidates would be better served onboarding, training and doing actual work.
This guys has the best intro
I think there are some devs which generate Nx output.
However in teams this balances out and if they can communicate well they can raise the whole team's output. If they don't they usually bring the whole team's output down.
And yeah leetcode does not test for this
10:06 This is a good point. At my previous job when I was asked to interview people I would ask them basic things about the garbage collector works (It was a C# shop) or about how they would structure a certain type of program or something similar just to get them talking to see how intelligently they could discuss a topic. Even if they didn't know something, how they reacted to not knowing can tell you about their personality.
Agree with most of what you said, but there definitely are 10x developers in corpo dev. Have met a few over my 25 years in software...
It's usually those who know the existing code-base and maintain it (the stuff you mention you hate), know the architecture, frameworks and tools, patterns and customers/use-cases that are relevant by heart. And can implement a feature or fix a bug 10-100x faster and better due to that (usually highly proprietary) knowledge.
But I've also met people who are 10x after a few weeks by going completely bananas learning that environment during their on-boarding, while the majority of people next to them are there for 2+ years and still fight the environment instead of learning it.
If you haven't seen 10x devs in your jobs, it might be: (seen all of those)
a) their hiring is total bs (what you mention),
b) their turnover is crazy high and doesn't retain experienced people
c) all the 10x-devs are over-employed or work 2 startups on the side, so the company is only getting 3x on their salary
d) the job is 80% bs-meetings and nobody gets anything done.
Thank you. Especially about the part of being a manager. I went through the same thing. It was not for dev but for an ops position but the manager part was really horrible and after that I decided to never want to be a manager again.
So many good takes keep these coming man, super important topics to discuss to try to fix this sick industry we’re in.
Really nice video dude. thanks for this discussion, I really enjoy hearing you discuss these topics and give your 2 cents. Keep on pumping out the content!
I agree with almost all of this. Computer Science and Software Engineering jobs as a whole are pretty recent--lawyers, businessmen, civil engineers or politicians are ancient traditions that have slowly evolved through time, while a MERN stack engineering position will be born and completely die off during half the lifetime of a programmer. This is an industry that moves at a breakneck speed and it should definitely pause a bit to reiterate its recruiting process just as it did with its software engineering lifecycle practices. Sadly, right now there's a huge amount of unemployed engineers and so we have an "employer's market" in the US, but I hope that in a couple of years we'll have some books or TED talks or research papers that point towards fairer and more scalable recruiting practices--I know plenty of engineers that would be top performers at FAANG but have desisted of applying out of fear of leetcode questions and ruthless exams (aka "interviews"). Who knows? Maybe this channel will kick off that self reflection in the industry.
The best "manager" I've had was when I was an intern and my lead was not afraid to push back against his management. Later when a management position opened up he was not considered because he wasn't part of the "good ol boy" system.
If you fill your company with 10x devs then all the 10x devs will look like 1x devs and all th 1x devs will look like 0.1x devs.
Please do discuss the manager topic you mentioned.
My PM has a hands-off approach. We only speak when he wants to get or give feedback.
A manager that treats you like an adult? Amazing, we need more of those.
When I did my math degree I really felt like there are 10x mathematicians. Mainly because I met some 14 year olds that had a deeper understanding of the material than I did. Not just more ability but they asked the right questions, and wrote cleaner proofs. The problem is people obsessing over it like nerds, and trying to rank everyone and create hierarchies over it. It's not a healthy social environment.
I've interviewed a lot of people. I've quickly been able to understand, just with a conversation, if they know what they are doing or not. There hasn't been an ambiguity in my mind where I needed to give them a ridiculous quiz to resolve my doubts.
Great video, you're looking at the root cause, the only thing would be great to have unwanted pauses cut out instead of micro rewinds, they instill some kind of fear :D
I think measuring volume of trivial work tasks that can be done by a “10x” developer does not paint the whole picture. There are inherently hard programming problems or areas where it takes a special person to be able to get things done. Some of these require a lot of knowledge and experience, others higher programming IQ. An average developer might be able to eventually solve same problems but would have to take lots of time to learn related things and fail at trying that sometimes it’s just impractical. I don’t know how to describe this in terms of a coefficient, rather we just know such people who can solve really difficult problems and get huge volume of work done day after day. Such skill takes long time to acquire and is definitely beyond 20% margin of improvement.
16:17 (about a few seconds ago) you mentioned about possibly talking more about why you didn’t enjoy being part of management. I’d like for you make a video about this topic. I think it’ll be interesting.
I love your videos. I am from Pakistan. I don't have the temperament to be a manager, freelancer, or create a startup. Furthermore, the market in Pakistan sucks. Therefore, I started working in remote companies (startups). I have a good record while working with startups. Once for a huge company. I cleared all leetcode, feature requests, and bug-fixing tests. It was around a week of work. Which I did for free as it was a selection process. Obviously, I use GenAI while working on bug fixes, feature requests, etc. Afterward, I cleared interviews as well. Received an offer on a condition that I have to clear CCAT test (50 MCQS in 15 minutes where I have to take 40+ correct.) The amazing thing is that the Aptitude test was proctored, and they forced me to use three cameras: one front, one mobile front to see my lap, and one mobile back camera (I have to borrow from friends) to see that everything in front of me (back of the laptop.) I messed up. As I am a programmer, I applied and was selected to be a programmer. I was rejected based on the Aptitude test (after clearing all the technical steps.)
Now that's an INTRO!
Your point is taken. We don't need 10x programmers, we need 10x managers.
Linus didn't write Linux. It was written by a group. What made and what makes Linux work is Linus was a good manager. He says this himself. "I don't code anymore". He manages the process.
I think "10x developer" is a misleading term, a "succsessful creator" is more appropriate, and by that I mean a person that was able to gain huge profit on covering human unknown or unsolved needs. Misleading comes from thinking that 10x means a huge productivity, but you just can't be a productivity machine and have 240 hours in a day to be 10x productive, and do no mistakes on the way. Good video
Agree about managers, agree about leetcode bullshit, disagree about skill not being an issue. Whether developers are good or bad can have a critical impact on the future maintenance of the project and sometimes can even determine whether the project ends up being success or a failure.
Just discovered your channel. Really good content. Thanks.
Id argue we ran the experiment with John Carmack at Oculus post Facebook acquisition. His talent couldn't save the product from the corporate machine.
If I were a 10x developer, I’d say “It’s 10xing time” and 10x all over the place.
I love the intro
Quiet cutting is a thing - where employees get shuffled off into roles they hate, don't get inflationary pay rises so they're making less each year for the same job, get told they need to do extra to the job to make the same money, they burn out, end up working down to their shitty pay, start believing the narrative that they're useless, can't quit because now they believe they're just shitty programmers, and it becomes a kind of evil Pygmalion effect. They expect to be penalised for doing ok, and they expect all companies to just treat them like shit.
I'm in that weird corner case of a tiny group that survived all the froth of other 'devs' here at my company. I do have an awesome position of being my own team and having hundreds of people using my programs (and loving them much more than what is available as standard provided by my company!). But for me it was really a passion project and I've spend probably more than 40 hours of overtime per week for more than 5 years now. I do not recommend it for most people.
When I played football I always heard the story of Vince Lombardi who took average players, or at least players that were not exceptional, and won champions with them. A good coach or manager will always out perform a bad manager regardless of the talent they have on the team.
Scientific software developer here, It's really unfortunate that research code is throw away because it makes results hard to verify. This is something the research community has been spending many years trying to change
Intro is AMAZING! )))
I am a 10x developer, but only when i work on projects that i am fully committed to and that i love to do and where no manager is forcing me timelines and outcomes. In other words. When i do my own stuff i am AT LEAST a 10x developer compared to corporate slaves.
15:10 the talk on managers and management reminded me of the new fallout series. "It comes down to one word, management" 😄
Your point about how leetcode interviewing makes twisted sense if you want to find developers who will keep performing when they're miserable made me laugh out loud 😂
Great talk. I think that while 10x developers are a myth, 10x teams are possible. But managers put too much energy into interviewing new devs, instead of taking a hard look at the culture they've created
There definitely are 10x and 0.1x developers. I agree that a leetcode interview won't help you identify them
I’m starting to get the picture that there are a lot more 0.1x developers, unfortunately. If you see someone write in 10 lines of code what could easily be done in 1, that qualifies, in my opinion. For example, if you see someone write a classic “for” loop, I consider that to be a red flag these days. Most languages have much better built in options, and if someone doesn’t know about them or doesn’t know when to use them, they are going to take 10x longer than they should.
@@AftercastGames lol
@@AftercastGames nothing wrong with doing a classic for loop. As long as they’re not doing a while loop with an increment at the end for no good reason
@@AftercastGames i feel as though if your biggest red flag is a for loop then you're looking way too low or 'little picture'. ill agree with your point that there are many 0.1x devs but the things they do aren't 10 lines, it's putting something together and not caring what the next dev is going to see when they read your code. it could be a few lines of something 'clever' or hundred of lines of something that requires immense effort to understand and make changes to. a real 10x dev might make only 1 line of code to do/fix something but, they should be making code that they know can be worked with easily again in the future.
@@AftercastGames What counts as "better" entirely depends on the context, depending on what you're working on even a triply nested for-loop could be the optimal solution. Rather than focusing on what abstractions a dev uses it's better to look at whether they have a sufficient variety of tools in their toolkit and if they can recognize the circumstances where those tools are best applied.
I like your content in fact I've subscribed! - there are many 10x programmers out there, I would not bother to pay these two guys the salaries of ten devs we all have proof of theirs skills: Linus Torvalds and Ryan Dahl.
You caring about the people underneath you is probably what made you a good manager
If 10x devs don't exist, then x/10 devs definitely do. I've worked with them and it was extremely painful.
You discount Carmack's success as 'just happened to turn out big' ignoring the fact he was churning out a game a month or faster, most of which none of us ever heard of. Good to know him and I are equally talented in your understanding of the world, I guess.
There are some edge cases, I believe Casey Muratori, Jonathan Blow, Sean Barrett and Fabian (ryg) Are easily 10x Developers. Watching Casey parsing PNG files while explaining it, was a crazy thing to me, That guy reads and explains and then code, faster than I would read the spec myself. (I am not really against having 10x developers, It always makes me want to be better than I am currently).
Jblow is definitely not a 10x developer. He codes a lot but produces relatively little finished product.
I have just enrolled in CSE (Computer Science Engineering) branch in a reputable college. Please guide me which books should I start referring not for coding but for strengthing the basics of computer science.
I call them "rubics cube" interviews, where the point is to solve relatively simple programming problems as fast as possible. It has virtually no bearing on if you can do the work, since, by definition, programming work is novel (otherwise companies would be just copying previous code). What it encourages is people going to web sites and practicing solving programming puzzles at speed. It works, but it doesn't teach real problem solving.
Thanks ever so much for starting this channel and making all these videos! It's incredibly valuable, for the whole industry, to hear from someone of your experience, and as articulate and thoughtful as yourself.
Anyway, you make a great point about leetcode interviews. But do your criticisms apply equally to companies that also carry out System Design interviews? I wonder if some of the same best practises and approach to problem solving mentioned in your videos, are exactly what System Design interviewers are looking for. Or are these interviews just more expensive in terms of interviewer time, subjective, and no more reliable an indicator of a candidate's future productivity than anything else?
I feel like productivity isn't the most important metric for a developer, and is arguably a harmful one to focus on. I think in the majority of cases you want developers who write clean, maintainable code, and that is a mindset not a skill or experience issue. If person A takes twice as long to implement something as person B, but that implementation is easier for other developers to understand, and fits into the architecture in a cleaner fashion, that extra time has reduced the overall chronic impact of that feature/bug fix/whatever going forwards. The amount of careless developers who can implement something quickly, and then leave others to deal with it for years to come, is astounding, and is something I see more frequently as time goes on. Its quality, not quantity, innit. Ideally your code speeds up other peoples work, not your own, then you're in a good place I think.
"Productivity" is vague, and we don't have (IMNSHO) good ways to measure the quality of a developer in any quantitative fashion. So it means different things to different people.
That said, I HATE the phrase "Clean maintainable code"
It's so ambiguous and has been part of so many vehement, pointless, time wasting arguments other the years, with people on both sides claiming their way was the "cleaner" way.
In my opinion, arguing about code cleanliness, beauty and aesthetics has taken up more time that could possibly have been saved by implementing any given set of code cleanliness rules.
I'm sure I'll end up with videos about that at some point, although at the moment they aren't at the top of my list.
@@InternetOfBugs It is ambiguous for sure, and yeah I've seen (and been in) many discussions like that. It isn't about beauty, or aesthetics though, it's about the maintainability. As in the ability for someone to come in once the original developers have left, and understand/modify the code with minimal head scratching. That requires care, and empathy for those future devs, and I'd rank it top of the list of desired traits in a developer. Code can be taught, speed can be trained, but I think care is more a personality trait than anything else.
@@CallumBradbury How do you measure how "maintainable" a given codebase or code change is, though? How do you know what will or won't be understandable to the next dev?
I'm not trying to imply it isn't important - just that most of the discussions I've seen on that topic have just led to disagreements.
For example, I had a teammate who insisted that any method that was more than `n` lines long was too complicated and needed to be broken up (I don't remember what his `n` was - 20 or 30 maybe? - it's been a long time). For me, though, I'd rather have a longer method that linearly and clearly does a sequence of things that are easy to follow, and having to scroll or hit PageDown a few times is much better in my opinion than having to RightClick->GoToMethodDefinition (or the equivalent hot key) over and over and over again.
Both of us thought our way was the more maintainable one.
@@InternetOfBugs Honestly I think the length of methods and stuff like that isn't the important stuff, that's not what makes it maintainable or understandable - not really. Anyone can understand a long method, and anyone can navigate through functions if they have to (though I also prefer the longer method in most cases). It's a bit trite to mention them, but I think the SOLID principles are a good start, as are unit tests. If a class can't be unit tested easily, it's probably an unmaintainable class, is my general philosophy (unless its dealing with a 3rd party API that doesn't have interfaces). Obviously you can go too far with that though, breaking down things too much, or even worse starting to religiously follow that 'TDD' plague that has been popping up everywhere lately.
If you can write unit tests for a class, that means someone who wants to know how to use the class can look at the unit tests and they become their own form of documentation, one where the user can see what is supposed to happen when it's used in many different scenarios. They can see the edge cases, and when they modify the class they can check they haven't broken anything. I think the folk who say 'write the tests first' are insane, but I think at least writing the tests before committing the code is the best step towards a maintainable codebase, as it makes you think about not only what you're using it for *right now* but also the scenarios you might not have considered before throwing it into the repo for others to get their hands on.
Does it take longer? Sure. Will less features get delivered? Absolutely. Will it save time in the long run? Probably, unless the project is a one-and-done throwaway thing. My background is .Net though, unit testing is pretty cohesive and advanced in the land of milk and honey, I don't really know what other languages do regarding that stuff.
The biggest problem with "productivity" is that we have to deal with tradeoffs a lot and some consequences may cause more maintenance work later, some bugs will cost time, etc.. We cause additional work for ourselves or our colleagues in the future and we have to split our limited time working on new features and the other work. Being busy thus doesn't mean we're productive. Doing overtime to fix bad tradeoffs isn't being productive either. To fix errors which could have been avoided in the first place isn't productive.
Is quite easy to be the 10x developer, just go to a company that hires bad developers. There are people who take 10x longer to fix a bug because they don't understand programming at a level that allows them to fix the bug. If you don't know gdb, then you can only print statement debug and try random things until it worked. The amount of "developers" who managed to get by that way is mind boggling.
Perfect content! Finally someone talks real
Great video. You mention not staying too long at companies. It would be great if you could elaborate on that and what your heuristic is for moving. I am staying at a job at the moment because of the optics and perception (I have spent between 12-18 months at 3 jobs for what I think are legitimate reasons) so that insight would be interesting. Also the manager IC dynamic and path is fascinating Id be curious as to why you think the incentives are stacked in such as the way you described. Subscribed!
awesome videos man! It would be awesome if you did a video about some of the books you find valuable in you career as a software engineer.
A good programmer knows how to find information that predicts other information. To judge a programmer on what they've memorized ignores what the skillset is.
Nail on the head! _So much of it_ (and the general “enshittification” process) ties back into management. From performance at the individual developer level, the team level and all the way up to the product level. Proper management is key. OKRs (objectives and key results) are important, but knowing _what_ to measure and not just counting lines of code, Jira tickets or whatever and quantifying what really matters is so important.
I think these would be better without the micro-editing out all the pauses. Not even because I think the pauses are valuable themselves, just that the editing makes the experience jarring.
Idea for another part of your series since you are discussing technical interviews and I am currently a grad student; with your history of interviewing many developers can you share any insights / opinions on viewpoints of prestigious university candidates vs lesser known universities or even bootcamp candidates.
Short version is for most roles it makes basically no difference unless the hiring manager has a prejudice one way or the other.
There are exceptions, mainly for specific kinds of jobs/skills like Machine Learning and High-Frequency Trading (Quants) that are seen as more academic/theoretical.
Longer version might be worth its own video. I'll put in on the list.
Dziękujemy.
You're very welcome. Thank you. I appreciate it.
I'd like to see a video about job descriptions for open positions. You have one extreme where they toss in every nice-to-have skill possible, and the other extreme where, in an effort to not turn away potential candidates, are way too vaugue (specifically, there's been multiple roles at Hashicorp that I didn't apply to because I didn't understand if I was qualified or not).
I'm not sure what you'd want to know about that from me?
@@InternetOfBugs They're generally broken and being concise in a way that will attract qualified candidates needs guidelines (edit: without also scaring off a different set of qualified candidates). I anticipate that you've written a few and have thoughts about what works and what does not.
Edit: You need to get someone _to_ an interview before you can even put them through an interview process, broken as that interview process may be.
@@questionablecommands9423 So like "If you, the watcher of this video, are a hiring manager or recruiter and are going to be writing job descriptions for developers and would like some advice, then keep watching." would be the premise of the video?
Or am I thinking of it from the wrong angle?
@@InternetOfBugs yeah, that's a fair way to put it
@@questionablecommands9423 Ok. I'll put that on my list.
I wonder how many views that would get.
Really appreciate this insight
I would say there are different types of 10x, lets enumerate some of them!
- 10x complexity dev: Everything he makes is extremely awful in complexity, only he can touch it, the code looks 10x as large as it should, and it takes 10x the amount of people to maintain his project
- 10x worker dev: A normal speed dev who is willing to sacrifice all of their free time doing unpaid over time to appear 10x in front of everyone because this dev lives for the pats on the back.
- 10x lazy dev: intentionally inserts bugs into the codebase, takes the day off, and then fixes the bug in a minute. Perceived as 10x because the bugs always get fixed. Usually talks a lot about how difficult it was to squash that last bug, this is essential to keep the reputation of 10x.
- true 10x dev: doesn't code that much faster than an average dev, but implements the correct abstractions from the start. Never gets credit for being 10x because the code is so good that other people can work with it at a similar speed. Eventually leaves the company and the death timer of the codebase starts ticking while the normal devs try to keep it together.
George Hotz, who is by all account an amazing developer, did a very public one month internship at twitter right after its acquisition by Elon. Granted it was only one month but he really did not achieve much during that time. Whereas he is extremely productive otherwise.
Banger intro
Definitely a lot of over reliance on code tests and IQ-like test out there. I’ve never meet someone who lacked the skills to write good code, it usually is more to do with personality. If someone is passionate about coding and actively wants to continue learning how to do things better then that will probably be a good software engineer. That and the ability to finish projects. Leetcode is truely where the soul of devs goes to die, solve this arbitrary problem for the sake of solving it.
I love your presentation of nuance
Really good video I was enjoying listening to your good arguments about the field