Live data from Hacker News

Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

news.ycombinator.com

171–180 of 275 posts

Re: Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

#171
post #109

You could be suffering from impostor syndrome. This is the feeling that someone gets when they are in a role but feel like they aren't living up to it and don't belong there, even though they may not be doing anything wrong. I also have 10+ years in software development and have switched companies several times. Every place is very different in terms of how their architecture is set up and what's expected in a softwa…

I don't know what it is about "imposter syndrome" but it's clearly having a moment. People are quick to label things "imposter syndrome" these days. Imposter syndrome is feeling like you are an imposter or fraud even though, objectively, your job performance is adequate. If anything, the original poster is describing the opposite of imposter syndrome, because they cited specific objective criteria showing that their…

>they cited specific objective criteria showing that their job performance is inadequate

The examples given by OP seem like subjective self-assessment to me. I doubt if they were that bad a programmer, they'd be able to identify such issues with their own code.

It would be different if OP has received consistently negative feedback on their work, I don't know if that's the case.

Re: Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

#172
Hi! I was late into the software game, or really I had a career reset. Breath a sigh of relief, your career is not over.

1. Age does not play a factor

2. Resume progression looks cool but practically means nothing. I have hired engineers that have been demoted (maybe adversity yields character.) I'm determining if you can pass my interview, not the last person's.

3. Software Engineers go in and out of relevancy all the time, the only difference is that you're noticing it during interviewing.

Now, as a drop out, I had to learn things on my own. I'll go over what I expect out of a Senior engineer. Keep in mind I work on a team where algorithms and data structures do matter, not all teams are like this. So, think about what you want your next team to be about.

1. Have knowledge of how algorithms work and what data structures work best with them. This is useful when dealing with tasks that must scale incredible loads.

2. Asymptotics. I generally only ask Big O questions, but know what the others are too. Big O is either memorization or a deep understanding, either is fine for Senior. You would need to be able to answer time and space complexity questions in my interview, in the form of, "walk me through the time complexity of what we just did." Sometimes I'll ask about space complexity but only if I see that you allocated memory for reasons I don't understand.

3. Abstract Systems Design is my love-child. Be inventive and take calculated risks. I don't expect you to be perfect, but I do expect a data-informed plan.

4. "Clean code" is a hyped term but it will communicate something about you. Use clearly defined interfaces and keep your concerns/domains separated in code. I'll explain a bit more below.

5. Learn to write tests with definitive outcomes. Usually when I'm helping a SWE with a problem and I'm short on time it's easier to crank out some tests that will keep them within my expectations rather than hold their hand the whole way through.

The whole "clean code" thing is iffy, imo. I learned to write good looking code by attaching linters, formatters, and static analysis tools to my IDE and learning through repetition. Designing good applications was harder, but it dawned on me when I had to write multi-threaded applications or applications that implement concurrency. You will start to naturally separate your code if you start doing this.

Learning asymptotics was iterative for me. Start on one of the Big O cheat sheet pages then Google each data structure/operation to understand why it works out the way it does.

There are lots of tutorials for learning to identify algorithms and data structures. This will be time consuming, but it can also yield benefits in your work depending on what you decide to do next.

I hope this helps!

Re: Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

#173
Same here. I'm a senior developer with 8+ experience. Never coded in any job with seriousness. My code is as bad as my handwriting. I started applying monastic orders and I'm left with one as others have rejected my application because of age limit.

Re: Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

#174

Earlier quoted context omitted.

I remember one from Java ~20 years ago: public final static string HTTP = "http"; public final static string COLON = ":"; public final static string SLASH = "/"; public final static string WWW = "www"; with code like string url = HTTP + COLON + SLASH + SLASH + WWW .... Ignore any Java issues - not used it much in ~15 years. Edit: I asked the developer who had written this what it was achieving and he said it was best…

Well, actually... it could be a good practice, if the values are used in multiple places.

It buys you nothing, and in the case of WWW, when you're grepping your code base to find everywhere you have "www.oldvendor.com", it fails.

Re: Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

#175
If you want to improve, you could find an OSS project that is in your languages/area and start contributing (ideally find a professional OSS project that is basically full time devs and outside contributions) - this will help you write code following specific standards and they will help you.

Be nice, don't expect instant replies and be useful.

Re: Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

#176

Earlier quoted context omitted.

Wait, what was wrong with the #define solution? Just the name of the macro? Didn't he do what you wanted?

The 17 was a scaling factor for a graphics transformation (and sometimes was doubled to 34). Let's imagine that we later decide we want to make a change and have it be a little bigger. Do we change it to: #define SEVENTEEN 23 Instead, if it was: #define MENU_SCALING_FACTOR 17 then such a change would be sensible (which was the intention). I admit to having some sliver of culpability here (though the verbal explanatio…

Thanks for the clarification. I guess the tools you had available at that time would affect the severity of this. Nowadays, with the ability to refactor a macro name in a few seconds, I wouldn't necessarily agree that a developer that used a silly name would "never make it to a senior developer". Fuck, I'm "senior" and I definitely use worse variable names on a regular basis.

Re: Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

#177

I think it's worth thinking about why you were successful as a freelancer and in smaller companies. I started my career in a simmilar place, and I was very successful because I loved learning about the business, talking to stakeholders and delivering value. The code wasn't always great, or even good, but it was delivered quickly and users found it solved genuine problems. When I transitioned into larger "software" co…

> I think it's worth thinking about why you were successful as a freelancer and in smaller companies.

Assuming they were successful. I cringe thinking about the devs that inherited my code in my early days as a "dev" (using that term very loosely). Especially the freelance work, since in many cases you're the only that touches it until you move on. Then it's some other devs problem.

The idea that just because your code solved the problem then it's good enough is bullshit, especially if you're not the one that has to maintain your monstrosity of a codebase going forward.

I know many projects that I built in my earlier years were rewritten right after I left. The embarrassment I felt from that motivated me to learn to do things the right way.

Re: Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

#178

Earlier quoted context omitted.

Crucially, don't start the discussion with "do you still want me" but with "I'm concerned that I might run into problems and wanted to discuss how we can avoid them" (or something like that). Some managers would welcome this discussion. It shows that you are aware that you have limitations and that you would like to improve. If nothing else it helps keep the manager / company from placing you on a task that you would…

An even better starting point would be: "Hey Manager, I'm dissatisfied with the quality of my work on medium_complexity_project and want to make sure that I'm improving going forward. Here are the steps I'm taking (list steps) do you have any other suggestions on what I can do to improve here?"

Yes. In fact this is an interesting topic in its own right - how do you approach management when you have found a problem. In my experience, there is a sort of scale here, along the lines of:

* do nothing and keep quiet (almost always the wrong thing)

* say "help"

* say "I've found this specific problem, but I don't know what to do"

* say "I've found this specific problem, here are some options for fixing it - what do you think?"

* say ""I've found this specific problem, doing X will fix it - what do you think?"

This will vary a lot in practice and depending on circumstances, but I think as people increase in experience and knowledge they tend to approach management with solutions rather than just problems.

Re: Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

#179
Had you been a bad developer you would have failed at the smaller companies. People thrive in different environments, and it can be jarring to go from a small shop to a large shop. They're different animals.

I've worked at places where I'm the either the only dev or one of just a few. It's fun and it's easy to impress, but also easy to develop bad practices. But as long as you're getting the work done and your boss is happy, you're doing a good job. Larger places will be more formal (code reviews, sprints, very large code bases, etc etc). It sounds like you're beating yourself up for struggling with a task others thought would be "medium" complexity. It could just be that it's medium complexity to someone who knows the ropes at that particular company. It can be awkward to adjust to having more eyes on your code, but if you survived in the smaller environment, then in time you can adjust to the larger one. However, if you really feel out of your element, you may just want to go back to the smaller shops.

Re: Ask HN: I've realized I'm a bad software engineer and I'm over 30, what's next?

#180
I don't have a lot of specific advice for you. It sounds like maybe code isn't clicking as much as you think it should, and that's stressing you out in a negative way. You shouldn't be stressed out like that about your job if you can avoid it.

I had an engineer on my team that was struggling. For some projects that should take a single day to do, he would take almost two weeks. We started pairing him up with other engineers to teach him, and he was able to work with them effectively, but his solo productivity and his code quality on his own never really increased.

I considered putting him on a PIP and then letting him go, but while I was considering that, there was an incident, and the whole team jumped on a Zoom to handle the incident. Maybe it was because I was thinking of him specifically, but I could tell that he was thriving in this environment. He was identifying the bugs quickly, he was pinging the right people, he pulled up the right graphs and metrics immediately. It was honestly really impressive.

So I spoke with our head of Site Reliability and asked if he had an open role. He did. And he agreed that this guy was doing a good job and that he would take him on.

This engineer is now one of the most productive SREs in our organization. He writes a lot less code, but he's a lot more involved in adrenaline-pumping incidents. He's a great people person, so he knows everyone, and everyone knows him. When an incident pops up and people get paged, he communicates it clearly.

This is nothing less than a huge success story. I didn't lose anything by losing an underperforming engineer, but I gained a stellar SRE.

All of this is to say... maybe there are other roles in the company that would be a better fit for you. Maybe you would thrive in a DevOps role focusing less on code and more on infrastructure, or maybe in a SRE role that is about building redundancies and safety nets for the organization. Maybe you'd absolutely kill it as a PM. (Contrary to what you said, most PMs I know are not technical, so having any level of technical expertise is a huge plus. If you have lots of product ideas and like doing research, this might be a winner for you.)

If you trust your boss (and I hope you do), it would be worth talking to them and getting their perspective. Phrase it in a positive way, not in a self-deprecating way. Something along the lines of "I'm thinking about my long-term career, and I'm not sure I see myself as a Principal Engineer someday. What skill sets do you think I excel in? Do you think you can help me find opportunities to level up those skills and maybe find a role where I can utilize them the best?" Something like that.

Finally, I forget who said it, but someone said that you should work on improving your strengths, not your weaknesses. In other words, you don't see Michael Phelps running marathons or Usain Bolt swimming across the English Channel. Phelps swims and Bolt runs... because they're good at those things! And because they keep focusing on their strongest skill set, they get better and better. Just a thought.

Good luck!

Post reply on HN