It's a definite time sink to learn these lessons, but it's of real value to me personally.
... I'm still a dumbass...
I wonder... if after 10 years... will I stop being one after 20? 30?
I hope you find that place in your life too. It's a lot of relief when it happens
While that may be true, you're less of a dumbass now, thanks to experiences. If you were to guide a junior developer now, you'd probably walk them back from a dozen sharp edges, thanks to your experience, but we tend to discount that.
This will have taken your younger self , twice or more to understand the problem and come up with solution
Last Friday learned that Postgres (and apparently MySQL) will effectively ignore an index in a column when combining “ORDER BY … LIMIT …” and “WHERE some_column IN some_array”. I had introduced a query that timed out on a critical prod table , fixed it by removing the limit, and turned it into a teaching moment to others who could have made the same mistake: https://stackoverflow.com/questions/8909163/avoid-full-table...
But the feeling of being a dumbass may never leave you entirely. You will need to learn to control that some, and not always let on to everyone around you how dumb you feel at all times. But... honestly, the folks I've worked with who never ever admit to feeling dumb or doing dumb things - they STILL make the same mistakes, often more, and seem to have no capacity for self-reflection or skills improvement. So... understand your "I'm a dumbass" feeling may just be part of you pointing out that you can get better, and help you find opportunities to improve.
As you say, self reflection and skill improvement.
I honestly think it's why I'm a good programmer...
That... and being lazy. I'll work for weeks to make processes easier. IE: a release process that used to be manual and fraught with mistakes is now, more or less, button clicks and powershell scripts.
This forum is the closest thing I get to coworkers and I don't even understand what half of you are saying. I'm fortunate for the opportunities that I have, but my antisocial tendencies and lack of professional peers can make progress a bit of a bear on occasion.
I have often thought about trying to build a network of like-minded individuals. Of course, it doesn't come naturally. If it did, there wouldn't be a need for it!
My contact info is in my profile, feel free to reach out.
> when I'm going to either stop cutting myself on things
Never. You (should) get better at recognising some of the themes and danger signs, but the field evolves so fast that at some point you are going to work with something so new that literally nobody knows what the sharp edges are.
> land a position with some people who can show me their cool scars for a while.
Meetups, slack, discord, IRC, forums. Find the one that works for you and be a regular. Be an expert in one subject and be modest and willing to learn when it comes to others. Nobody has it all figured out.
There really is no substitute for actually making the mistakes and learning from them
I'd take a smart junior who can think logically and who is passionate about the job over someone who has 10x 1 year experience and doesn't want to learn, or is just not smart enough. Chances are a good junior can beat such senior after a few months (sometimes even weeks) of experience on the project. And the junior typically won't fight with the tech lead over something they "have always been doing" (even when it was an anti pattern).
Anyway, it is good to have at least one senior dev who is an expert on the tech stack / architecture used.
I've worked on many projects, some successful, some not. The difference was often that the successful projects had a critical mass of wise people who had learned from past failures and could anticipate the pitfalls and avoid them -- it seems more rare that actual project success comes down to having yet another brilliant programmer.
But all of these qualities only accelerate the learning process that happens in the real world. They don't replace it.
Edit: To be fair, given the choice, I'd rather have an MIT CS grad than some schmuck who barely squeaked through the MIS program at Big State U. But I'd take a good experienced dev over either of them.
Might still make sense because they're cheaper.
I think that's exactly the problem. Re top students I assume we're talking about things like a deep knowledge of algorithms, implementation details of relevant languages, the latest frameworks, being comfortable writing in an object oriented or functional style, being extremely smart, having a lot of working memory, loads of energy and enthusiasm, being able to grasp complicated concepts quickly etc (I've never met a recent grad who is even close to that, but I understand it's at least theoretical).
But experience lets you do things like push back a little on the requirements (because you know that what is being asked for is not actually what is wanted). Or choosing path A instead of path B because you know that path B will come back to bite your team later because you've seen how it played out a few times before. Knowing which things will make the biggest difference to the speed or quality of delivery, whilst costing the least to implement. You know what problems you should ignore and what problems are serious risks. Things like that can sometimes make the experienced developer a 10x programmer, it's certainly not because they're typing 10x faster than anyone else.
“Experience is what lets you recognize a mistake when you’re in the process of making it a second time.”
That "although" is the whole point.
Knowing the technical basics (language syntax, getting things to work) is the easy baseline. What's missing in every studente (unless they went back to school after a solid stint in industry) is the experience of understanding the processes and approaches required to build something lasting and to operate within a larger team.
That is what average means
Let's make this more obvious: Imagine that in you have to produce Nitroglycerine, explosive set off by the slightest of mistakes.
Would you rather it done by someone superbly clever, but straight out of uni, or someone who's average, but has done it for 20 years and survived?
Like they knew it was super dangerous, there wasn't new science discovered since then about this particular setup. Today rank and file engineers know not to do that
But what the seniors have over the juniors is several years of experience making mistakes.
The senior might spend more time doing PRs (juniors might not feel as comfortable), more time in meetings discussing new projects or architecting around arising problems. A junior is generally more enthusiastic so might voluntarily work longer hours to close of tickets, or just take fewer coffee breaks than a senior. A senior might also spend a portion of their time training juniors.
I’m not saying a senior engineer can’t be a prolific at closing off tickets as a junior, but more seniority means more responsibility and that often means less time writing code.
But there are also occasions when I might genuinely expect a senior to be slower. Like if they’re in their mid to late 30s and have young children who aren’t sleeping. People say you shouldn’t bring your home problems to work but the reality is that we are not robots and if you’re not sleeping at home then you’re performance at work will suffer. Whereas most 20-somethings have fewer commitments outside of work.
If we are talking really senior, like 60s, then a sad fact of reality is our mental faculties aren’t going to be as sharp as they were when we were in our 20s. So it might take an engineer a little longer to solve complex problems than someone fresh out of uni. Particularly if it’s an academic problem that one might have studied at uni but seldom need in your career.
So there are plenty of mitigating factors that might affect the throughput of a senior engineer. But that doesn’t matter but you hire them for their experience rather than their youthful motivation. And it’s also why it is important to have a balanced team of junior and seniors.
Bill gates Michael dell Zuckerberg Jobs Dorsey (Many others)
I’m sorry this makes so many people mad but… stop looking down on people
Also, why are people conflating high gpa with being a top student? Top student means “the best at creating software”