Ask HN: What huge mistake did you make early in your career?

303 points by jamestimmins ↗ HN
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 ] thread
I learnt and worked on how to earn money, but didn't learn and work on how to grow the money I earned.
(comment deleted)
What do you know now that you wish you knew then?
The effect of compound interest. Second time your money doubles and you've quadrupled your original investment. Requires patience and self-discipline though!
Very well put!

I really need to work on this too!

Used the x.25 pad (telnet, for an older protocol family before internet became ubiquitous) command on the console of a vax 11/780. The pad break-back sequence to get back to the calling shell was ^P which was alas also the vax break to halt/debug command if you were on the main console. Took down the entire campus interactive logins
Invited a community of users to help fix bugs in software and accidentally implicitly bust the IPR of that software suite.
Didn't attend the hiring fair in my last year of uni, and missed the chance to become fully vested in Microsoft and like companies in the 1980s
I behaved as though what I knew mattered more than who I knew.
Quite common I imagine. For many folks acquiring knowledge is almost a hobby, and expanding your network of contacts is a challenge.
Still suffering from this and had stagnanted my career for 6 years . How do you overcome this
I didn't listen to people who knew better.

Time and again I learned harsh lessons that shouted "Why didn't you listen? He/they/she said that would happen."

i was too focused on the intellectual side of technical work and didn't understand i was in the business of selling my labour, the importance of exploring and cultivating different opportunities, and then negotiating a good deal.
I worked for a company with an excellent mission but poor engineering growth opportunities for way too long.

I paid little to no attention to how my engineering efforts benefited the business.

I spent few years doing frontend while i hated it.

Don’t focus on being friends with anyone and just make the boss happy.
Staying in the first company of my professional career for too long. I would have learnt more and earned more if I moved companies regularly early on.
I have this weird feeling that I'm making the same mistake right now.
If you feel that way, you probably are.
If you've been there longer than 3 years, then yes, you're making the mistake.
This is a strange attitude; if you change jobs every three years, then how much are you going to get done, really? If everyone took this approach, then would any large project ever get finished?
Why wouldn't six months be more than enough time to ship a project?
It can take time to build political capital to be trusted to lead/ship a project.
Depends on the project. I just launched something last week I'd been working on for the previous 18 months.
Not every company works only on small software products.
Well, OP is talking about their first job, so my advice is targeting that specific situation. As a general rule, engineers see a fairly large bump in pay when going from their first to their second job, particularly if they did a poor job of negotiating their first salary. So yes, in terms of career development and realizing your earning potential, you should not stay at your first job for more than a few years.
At the company, or in a specific position?

I'd say continuity is fine, if the firm is large enough to offer a career path.

In many startup product companies, the specific knowledge about the product is not interchangeable with other tech companies. The tech skills and the soft skills are, but a large part is know-how about the product and the market.

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.

It's very likely. 2 years seems to be standard, and I'm moving jobs after 1.5 next week. 20% raise for very similar work, there's no reason not to move.
I was recently told I was "long" with the company for moving after a bit under 2 years (I'm leaving 31st July, I joined on 15th september).

I can't help but think that it's pathological to consider that "long" :/

I wish it wasn't. Many companies simply make it too difficult to move up and grow internally.
Part of me says I did this with my first job in the computer industry. On the other hand I was reasonably compensated (for the time) and that job led directly to a progression of a few other jobs that have served me fine.
What if you're happy where you are, you're perfectly satisfied with your salary (above median income right after leaving school and increased ~35% since then), and there is basically 1 alternative company nearby (where you'd have a lot more travel) and the rest is either a leap (hoping that you'll like a different kind of work) or more than doubles your commute time (to >1h one-way)?

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?

An argument I would make would be for future proofing your employability. You clearly care about thinking long-term. What if the current gig goes under, are you properly trained in technologies other companies in 5-10 years would use, that maybe your current gig doesn't?

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.

Thanks for the input!
There's an opportunity cost in _moving_ too; ever heard the saying that three moves equals one fire? If you're in a position you find satisfying, and see a technical and financial advancement path that seems acceptable, don't trade the roots you're putting down for some theoretical improved later slope of earnings.

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 think it really depends on the industry and location. There's a clear tendency on HN to only consider the tech market in California, where it makes the most sense to hop companies regularly. It's not the case for everyone.

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.

You probably should not leave.

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 had the benefit of my first 4 companies imploding within 2 years.
what did you learn from the first 4 that made 5 go to the moon?
I have been at the same company for 25 years, and so have many of my co-workers, who have grown up with me, and I always wonder if that has been a mistake.
Whoa, that's pretty cool. Mind sharing the company or at least the industry?
Financially I have to imagine it is because of the pay raises that you get from switching vs not. Companies simply do not value their employees enough.
(comment deleted)
Not keeping up with professional connections as I made them from the start. Even a "happy birthday" card would've been enough, but here we are.
Why do you consider this to be a mistake? I've thought about this in the past, but can't really articulate my motivations, and in the end I haven't followed through. Some of my previous colleagues have fit into the gap between co-worker and friend. I would never spend time with them outside of work and since we no longer work together I'm not sure what I'm really missing, so I'm curious to hear your thoughts.
Opportunity loss. I came across the phrase "increase your surface area of luck" somewhere and it is relevant here.

I am guilty of the same.

Those connections become invaluable as you reach the point where you are responsible for putting a new team together / growing one.
Happy birthday? That seems unnecessary really you don't need to send cards to all your connections. Just reach out if you want to reconnect don't overthink it - I feel it's pretty normal to drift in and out of connection/friendship even.
Yup! Not everyone will jump at it, but most will. I let some connections lapse for 10 years and then reached out. Ended up with some great conversations, good advice, and two job leads (from the hiring managers themselves.)
Didn't start my own business sooner.
Becoming too emotionally invested and involved in the welfare of the company where I worked for seven years. This had the opposite affect with my boss and management because I was making delusional organizational and engineering decisions with no authority to do so. Even though I thought my intentions were aligned with the future of the company, nothing could have been further from the truth.

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.

I agree with this right up until the last sentence. If you feel the need to be an “impeccable toy model” I’d say leave. Sounds like a recipe for a life of misery.
It is like that. Leaving for what? Most places are similar. Same shit different people. Some times you get lucky, and you get some time where things are working for you - but teams never remain, good people move on or up.

Leaving is not always the answer, keeping your head low and surviving is modus operandi for a lot of people.

(comment deleted)
In my experience a team breaking up or role model leaving is a good moment to do a temperature check and decide whether it’s worth staying.

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.

We were codependent, the misery was mutual.
This is a great point! I'm starting to realise this too. I work for a company where I really think the suggestions I make will set up the company now and in the future, but the more I fight for the decisions I make, the more I realise that a) my team mates aren't interested because they (mostly) don't understand the tech, and b) management isn't interested or doesn't care.
Man this epitomises the modern day slave for me. What a dismal life to look forward to.
> This had the opposite affect with my boss and management because I was making delusional organizational and engineering decisions with no authority to do so

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.

I also had experience leading both talented and heavily invested teams. Differently from your experience, we were able to get the team hyper productive and accomplished a lot of good things together. A couple lessons I learned:

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

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

That's where we differ on the cause.

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

I think you're probably right and that's definitely part of the issue.

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.

If a piece of work is buggy, hard to maintain AND failed to deliver, I'm not sure if it can be described as amazing engineering.

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.

Don’t be afraid to say it, the language was Rust wasn’t it? Although Rust usually replaces C or C++, so maybe in your case Go is more likely.

In all seriousness, seems odd that they were able to go so far down this road without anyone throwing up red flags.

Not going to to a software engineering heavy organization. Instead I went to a place where we had to justify using Java 8 instead of Java 7.
I know this all too well. I should've known the day I walked into that interview at Target corp when they said, "we're trying to go from java 8 to 11, but it's been rocky..."
1) not spending enough time developing professional network.

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.

Spending time on non-technical tasks
I encouraged my employer to get on board with the personal-data-for-access trend.
Reinventing the wheel. So many hours wasted on creating something that already existed in the form of PHP libraries or Python libraries that are written by much smarter folks. I tell my guys now, tools such as Ansible exist, don't try to write a whole Bash program to mimic what Ansible can do.
Counter to that though, re-inventing the wheel is a great learning exercise.
As a learning exercise yes, no need to "learn" with new production code :)
Commented out the credit card charging part of the order processing pipeline during testing and pushed it to production.
Automatic tester? I hardly know 'er!
Ah, almost like a colleague's story. He entered the payment provider's test backend credentials and pushed to production. A few months later, the high-end-ish fashion company whose shop was outsourced to us said a customer of theirs called to ask them when they were going to bill her credit card for a purchase made weeks earlier...
Surely this couldn't happen with any kind of reasonable testing?
going to the wrong university.
(comment deleted)
Twice I have built entire full-featured applications and then not shipped them out of embarrassment(fear of failing I guess?). Both times, a few years later similar applications became very popular. Very recently one of them showed upon the front page of HN to high praise.

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.

Ah, self sabotage. I know this all too well.
Don’t feel too bad. My grandfather had the opportunity to buy some land in Atlanta in the late 60’s/early 70’s and turned it down because it was shanty town and the guy offering him the opportunity was a known crook. Shortly after that it became CNN Center.
The only part I feel bad about is not really "learning" from these mistakes. I don't worry too hard about things I cannot change, so those two opportunities came and went. The part that bothers me is the fact that I haven't been swinging harder at ideas that I've thought about pursuing. There's _some amount of evidence_ that the ideas I'm having in this particularly industry are valuable and others would want.

After a long day at (usually at least mildly frustrating) work, it's just hard to work up the energy to just keep coding.

If you really want to learn from the mistake, it sounds like you need to ask for a personal leave for a few months and really take a bet on one of your ideas. There's not much to lose, in the worst case you learn from how it went and can decide whether you may want to raise the stakes and quit.
This kind of feeling isn't really helpful to anyone: https://en.wikipedia.org/wiki/Hindsight_bias

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.

When thinking about this, I always come back to the scene in "The Office" with Michael's Golden Ticket idea.

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.

Kind of reminds me of lots of 50:50 stupid remarks in recent year, that 50% pan out for the wrong reasons. Hindsight bias could make a cult out of that.
As my grandfather told my Dad one time (California) “Why would I pay good money for worthless dirt in La Jolla?”
My dad has a similar story about being stationed at Moffett in the late 70s and turning down the chance to buy property in Mountain View because he was a bit short on cash at the time.
I feel the same about bitcoin sometimes. I heard about it on /. when it first came out. If I'd gotten into mining in the early days I'd be rich by now. Assuming, of course, that I still had my wallet and everything.
Overcoming this 'mistake' is very hard. I have faced it many times. As long as I am an engineer on something it is never good-enough for me.

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.

Ha, I've had this experience recently. I was working on a private pototype of automated dependency updates in GitHub repos before it was a thing that was widely available. Ended up abandoning it. Of course, a few years later....
Taking a year break in 2014.

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.

The fact that you learned those things about yourself are valuable as well.
Certainly, but I wish it didn't cost me a few millions to learn about it...
Taking a year break in 2014.

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.

How can mere continuity be worth millions of dollars? Or did you skip a particularly lucrative opportunity?

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.

> How can mere continuity be worth millions of dollars? Or did you skip a particularly lucrative opportunity?

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.

I've never taken a break year but I have taken full advanrage of travel opportunities. I took a few one month vacations at one company. Certainly didn't cost me millions though unless it would have been it discouraged me to make a big change regardless of changes in vacation time maybe. But I doubt it.
One month vacation is great. it's a change of scenes and paces (you cannot just sprint all year long). We all need to slow down once in a while.

Traveling for a year is just tiring...

I could extrapolate to 2 or 3 months given I've done a month or so (whether pure pleasure or a mix of business and pleasure) a number of times. But even the practical issues aside, I think I'd find much more than that tiresome after a while.

I've known a few people who jumped into the digital nomad thing and by and large it didn't last too long.

I could see 2-3 months sometimes.

Working while traveling is very hard. It's very hard to focus. Digital Nomad who is productive is simply a different kind of person.