Ask HN: What huge mistake did you make early in your career?
We’ve all been there — a seemingly huge mistake as an intern or Junior developer that you were sure would get you fired. What’s your story?
Mine: I nearly took down production by joining multiple large tables on non-indexed columns. Every time a product was updated on the site, MySQL would run my query and join across millions of records.
Infrastructure folks couldn’t figure out why the DB servers kept rubbing out of memory, and I very nervously made the fix. Thankfully the team was understanding (and appreciated that the person reviewing my code had messed up), but it was a terrible day.
504 comments
[ 3.5 ms ] story [ 412 ms ] threadI really need to work on this too!
Time and again I learned harsh lessons that shouted "Why didn't you listen? He/they/she said that would happen."
I paid little to no attention to how my engineering efforts benefited the business.
I spent few years doing frontend while i hated it.
I'd say continuity is fine, if the firm is large enough to offer a career path.
It makes sense to stick around longer if you see yourself as a "knowledge worker" rather than as an interchangeable techie. It certainly makes sense from the company's perspective to keep knowledgeable people around.
I can't help but think that it's pathological to consider that "long" :/
I heard this advice before and at 4 years I'm quite due for a change in the statistical sense, and I've been offered more money already but... I feel like I'm already rich with no expensive hobbies and the money just flowing into long-term ETFs for retirement. Am I just in an exceptional situation or does the advice still apply to me and should I leave within the next 1-2 years?
Just spitballing. If you really are 10/10 happy, and aren't concerned with the possibility of that company blinking out of existence and being screwed, I would probably just say ride with it until you feel like quitting.
But keep your resume up to date, and go on interviews from time to time. See what the offers are, and do the math on them. And if the math says "Stay put", ignore the techbros who disdain roots. :)
I work in a large European industrial company in aerospace, and the vast majority of the employees stay until retirement. Yes most change job regularly, even relocate to different countries, but within the same company. Outside options aren't great, you're not looking at large potential raises and will have difficulty finding as good of a package unless you go into another industry completely. If I was fired I'd probably have to move to a different country and get into another industry to get a good offer.
At the very least, preserve the option to come back. Be honest with your employer, tell them you enjoy the work but are just curious what else is there.
I am guilty of the same.
My advice is keep things professional and even ruthless long into your career at a given company. Clock in and clock out and always take challenges impersonally. Be the impeccable toy model your boss wants you to be and nothing more.
Leaving is not always the answer, keeping your head low and surviving is modus operandi for a lot of people.
Perhaps I’ve been lucky though. I’ve worked at places with potential to move internally which has kept things fresh and allowed me to grow expertise on the same larger team without losing tribal product knowledge altogether.
I’ve only switched companies once and it had more to do with curiosity than bad management.
I have experienced this from the management perspective and it resonates strongly with experiences I have had. Some of the hardest employees to manage are those that are both talented and heavily invested, but unable to accept what their role actually is. When you have someone like that doing things that aren't in alignment with the technical vision - whether its right or wrong - they rapidly diverge towards having negative value.
- Micromanaging and "make them accept their role" is how you make them unproductive. Smart/talented people can tell if the manager doesn't care. They know if they are being forced to be a cog in the machine. They either become frustrated and quit, or resigned into doing just enough work 9-5.
- Having talented and invested folks voicing ideas that aren't in alignment with the current technical vision is a critical signal you should take note. That may mean you don't have a good Tech Lead that can convince those folks why the current approach is good. It's not the job of those folks to "align" with the Tech Lead. It's the Tech Lead job to convince those folks that the approach is correct.
- Everyone requires a different way to lead/manage. But in general, the more talented a person is, the more autonomy they would expect. To get the best out of them, assume good faith, and trust their autonomy.
That's a really interesting observation. If this thread was about the opposite - what mistakes did you make later in your career - one of my responses would be the above - because its exactly what I did and it turned out badly. I recognized talented people, seeing in them earlier versions of myself, and I gave them lots of autonomy. And they took it, and I got back amazing works of art that created all kinds of discordance with our longer term architecture and vision. I regret now that I didn't intervene more strongly at that point. Instead, those people have left and I now have years of technical debt to fix. Meanwhile the less talented but more aligned folk are chugging away and creating more value longer term. It's tortoise and the hare.
> "And they took it, and I got back amazing works of art that created all kinds of discordance with our longer term architecture and vision"
I interpreted this part as you attributing the cause to the talented folks creating the discordance in your team.
For me, it's the reverse. That shows insufficient technical leadership from the top. It's the job of the Tech Lead to convince and ensure good architecture. If the Tech Lead get "amazing works" that are "all kinds of discordance", it's the failure of the Tech Lead. People don't believe in the architecture/design. They see flaws. As I mentioned above, it's the signal that you may have a weak TL. I would focus on improving that aspect first.
However your assumption that people can all be convinced to agree on the technical architecture is part of the problem here. There are so many areas of software engineering where "reasonable experts" can disagree. Static vs dynamic typing, functional vs object oriented, loose coupled messaging based flows vs tightly coupled APIs etc. Successful systems can be built in all these ways as long as one is chosen and there is some consistency. But it is hard to be successful if they are built in all different ways at the same time.
So inherent in this picture is that you will have people with irreconcilable differences about how things should work at a fairly deep level.
Acknowledging your point however - part of what I say my mistake was in not "intervening" was to do more of this advocacy proactively, and flush out earlier on - can these individuals be convinced or is the difference irreconcilable.
An example, if it helps, is in one instance one of the team was tasked to implement a particular feature, and they found that the implementation was too slow when written in Python. So without consulting they selected a different language that is not in use or understood by anybody on the team at all, and then developed this whole critical subsystem in this language. Meanwhile there were many alternatives within the team's chosen tech stack that could capably solve this problem with adequate performance (even Python if properly utilized). The solution was an amazing work of art (although quite buggy as it turned out). But it was a disaster for the project and actually sank the delivery of it.
It sounds like you might have a team of talented and enthusiastic junior/mid-career engineers who lacked the experience and vision to see the bigger picture and long term future of their work.
In all seriousness, seems odd that they were able to go so far down this road without anyone throwing up red flags.
2) Becoming too comfy with the position and not pushing the bar as hard as I could could.
3) Staying too long with the company.
4) thinking too well of how the rest of the business perceives my position.
It's a mistake I'm still making, I guess, which is to assume that it could never "be me". It can be anyone. Just ship the damn thing.
After a long day at (usually at least mildly frustrating) work, it's just hard to work up the energy to just keep coding.
It's better to stay in the present moment: What should you be doing now, to be/stay fulfilled?
Your best successes are likely to be random, very hard to foresee and not what you expected at first, anyway.
Long story short; Michael loses the company a bunch of money on a foolish marketing scheme, and gets Dwight to take the fall. David Wallace drives down to presumptively fire Dwight. Instead, when Wallace shows up, he gushes that Dwight is a genius because it appears that although the marketing campaign has cost an immense amount of money, somehow it worked out and Dunder Mifflin is, in the end, far in the black.
The moral of the story is judge decisions in the future by the information the person had at the time of making the decision. A stupid choice that happens to work out is still a stupid choice.
TLDR - ship it and welcome all negative feedback which is actually a great outcome! The usual outcome is no feedback at all as nobody cares.
[0] https://davnicwil.com/negative-feedback-is-positive/
I am now trying a different approach that seems to work - the essence is that after some time to give up ownership of the code. I am involved in day-to-day dev decisions, but play more of the role of the Product-Manager - talk to potential customers for pilots, and define tight scopes so that the pilots and subsequent launches are successful.
I lost potential to earn millions from continuity of my career. It was the early days of many startups
I also discovered I like coding and don't really enjoy traveling.
Traveling is romanticized too much in our culture.
I lost potential to earn a few millions from continuity of my career.
I also discovered I like coding and don't really enjoy traveling.
Traveling is romanticized too much in our culture.
You're right about travelling. Unless you're travelling with a reason or at least knowing people at your destination, it's usually fairly unfulfilling.
If you are at tier 1 non-FAANG like Square, Stripe, yes, it is very lucrative.
Back then I was a junior that got luck with IPO ~2011 and went up to senior fairly quickly.
If I stuck to that company, I could have been staff/senior staff by now. Imagine being staff eng since 2015. That's a lot of millions probably.
I regret a lot. I came back and join tier 1 non-FAANG and still hit a few millions. But I could have had ~10 millions instead of a few millions.
This is a lifetime money that is worth sacrifice a few years of my life. Also, working at these companies are not bad. It's actually great and enjoyable as well. You live like a king (e.g. spending 20k for a 2 weeks vacation is kinda meh.) and still save like 200K-400K a year or something.
For me, this kind of money is just crazy. I made like 10x more than my parents. This was why I took a year break. I thought I was already too wealthy (oh boy I was so wrong).
Deciding to take a year break and traveling at the height of tech is one of the worst decisions I have made.
Traveling for a year is just tiring...
I've known a few people who jumped into the digital nomad thing and by and large it didn't last too long.
Working while traveling is very hard. It's very hard to focus. Digital Nomad who is productive is simply a different kind of person.