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

181–190 of 275 posts

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

#181
I'm going to come at this from a different angle than the (good) advice that others are offering.

You say you started a few months ago; I take it you started remote and you've been remote the whole time?

I started my current job in quarantine and I've dealt with a ton of impostor syndrome ever since (I'd never really had impostor syndrome before this). I'm constantly feeling like a disappointment, wondering if they still want me, trying desperately to come up with ways to prove my worth.

I think at least part of that feeling of inadequacy is based in the lack of day to day, nonverbal feedback and interaction with my coworkers and managers. I feel precarious because I have very little data to go off of one way or the other. We even do one-on-ones, but still. A conversation about my performance once a month doesn't replace daily body-language, off the cuff remarks, expressions on people's faces after I've made suggestions or completed tasks.

Anyway: I'm hoping my situation will get better once I'm back in an office. Maybe yours will too.

Best of luck.

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

#182

Earlier quoted context omitted.

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

What's the good practice advantage over just using " http://www "? If we later change over to use https, it's not like I'd think public final static string HTTP = "https"; was any kind of improvement.

You could use refactoring tools in your IDE to rename all usages of HTTP to HTTPS.

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

#183

Earlier quoted context omitted.

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.

I think I disagree strongly on the first point.

If SEVENTEEN is used instead of MENU_SCALING_FACTOR and ARBITRARY_OTHER_THING (two semantically different things both happening to be 17), no refactoring tool (that I’m aware of) is going to be able to tease apart just the former use and amend it to 23, leaving ARBITRARY_OTHER_THING as 17.

  const int declarationAdoptedYear = SEVENTEEN * HUNDRED + THIRTY_EIGHT * TWO;

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

#184

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…

You could improve your feedback in the same way as he could have improved his change. Create meaningful context. You told him what to do (replace 17), not why to do it (the value can change).

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

#185
Find a safe place to get high quality code reviews. I recommend high quality software projects like Rails or Postgres. The biggest aid to my creating better software is code reviews.

Also, put this[0] in your calendar and read through it once a month. Read through books on your stack, and choose a stack known for high quality.

I can't tell you the number of times I've worked with "senior" devs that weren't. The number one thing they had in common was hostility towards code reviews. Pay attention to the little details and start absorbing and following advice in code style guides. Take this[1] one, for example. Also, there are some rules of thumb worth following. I do my very best to avoid inheritance (outside of mocks / fakes for testing) and I move hard coded constants into config files with ENV overrides available. Avoid over-commenting and try to follow TDD if you can, since it makes your interfaces more from the point of view of the caller rather than the implementer.

It's hard to talk about these types of things over text, so if you want me to review some of your work feel free to reach out to me and I'll give you some more advice over a video call.

[0] https://en.wikipedia.org/wiki/Code_smell

[1] https://google.github.io/styleguide/pyguide.html

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

#186

Earlier quoted context omitted.

What's the good practice advantage over just using " http://www "? If we later change over to use https, it's not like I'd think public final static string HTTP = "https"; was any kind of improvement.

You could use refactoring tools in your IDE to rename all usages of HTTP to HTTPS.

Which will break other code where someone wrote:

  // Ensure all outgoing URLs are https:
  URL = URL.Replace(HTTP, HTTPS);

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

#187

Earlier quoted context omitted.

I don't think I've come across coursework that's intended to level up coding ability itself (i.e. good software engineering/design) rather than teaching basic knowledge things. I'm curious if anyone has come across anything of that nature.

I've come across the book Clean Code, which presumes to improve your craftsmanship. It has been improving craftsmanship for 12 years, and everyone has noticed of course. Have you seen a shortage in people who dress up their preferences as facts? Maybe a better question is, who is producing the good software? Oh, and software ought to include malware (personal preference).

I don't know, but some of the people I consider to be really good software developers seem to reference "The Pragmatic Programmer" (perhaps even more than I realize do since I never read the book but have heard of "rubber duck debugging" & "DRY").

Generally, good software would have to be first defined and there's no universal definition. In most projects, I require it to have the following properties: * New developers find it easy to ramp up on * A handle on the defect rate (usually through adoption of best-practices like unit tests, fuzzers, automated tools, CI/CD, reproducible builds, etc). * "Fires" infrequently enough relative to team size that it's manageable to accomplish your business goals. * No "surprises" in adding new features/fix bugs where you didn't expect them. * Meets business requirements today & can meet them tomorrow.

However, in other cases, like prototyping, "good software" means, "explores the problem space as quickly & cheaply as possible without worrying about any of those other things". Some of those other things can be useful in accomplishing this, especially if you plan to pivot from prototyping to the above definition. If you don't use them effectively then throw away your prototype before productionizing & start from scratch.

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

#188
> If you read my resume it'll seem I am a senior but I don't really know where to place me in the "experience" spectrum. I've always managed to solve the problems in front of me but in a "hacky way" and now the issue was totally revealed to me.

Man, you'd really benefit from reading The Career Stories Method by Carrie Twig [0].

It's about defining yourself professionally in a holistic way. It's not that you're a bad this or that, it's just that you're marketing yourself (to yourself and to others) not by the things you love and that you're good at. You need a professional narrative that's grounded in your personality. It's like that story about a fish being depressed because he feels he should be a dog.

[0] https://www.amazon.com/Career-Stories-Method-Career-Discover...

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

#189
Having been a programmer for forty years, I am senior in every sense of the word.

Also, I hate everything I have ever written. When I look at something I wrote three months ago, it is embarrassing.

Now, today's code, that's a different story. It is awesome.

And it will be until I turn my attention elsewhere. When I come back to it, it will also suck.

Which is to say, Of course you hate your previous work. You learned that hardcoded values are a bad thing. Probably you won't do that again.

But, you will do something new that is egregious. In forty years, this is the pattern. Every new thing I learn makes my previous code suck.

Embrace the suck. It is part of life. When you see something you did that sucks, don't do it anymore. Find some new suckage to write.

Don't worry about trying to become a good programmer because, you will only achieve that if you stop learning new things. That would be bad.

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

#190
If you were a bad engineer, you wouldn't care about hardcoded values, wrong structure, difficult to debug bugs etc.

I've worked with different types of programmers. Some weren't great a writing solid, well documented, well structuted code. But they were really good at understanding what the customer wanted and hacking together a quick and dirty 'good enough' solution for the customer and then moving on to the next problem. Maybe you are one of those? Or maybe you just need more exposure to best practises?

Post reply on HN