Live data from Hacker News

Tell HN: I love programming but am sick of the software industry

news.ycombinator.com

11–20 of 33 posts

Re: Tell HN: I love programming but am sick of the software industry

#11

Code reviews. There's good reason for them to exist, but in practice at best they're a waste of time, and at worst an exercise in narcissism. People nitpicking the way a statement is written because they feel like their subjective preference is objectively better. Perfectionists who block forward progress in attempts to pick out every possible detail that doesn't matter in the big picture, instead of moving forward w…

> Code reviews. There's good reason for them to exist, but in practice at best they're a waste of time, and at worst an exercise in narcissism. People nitpicking the way a statement is written because they feel like their subjective preference is objectively better. Perfectionists who block forward progress in attempts to pick out every possible detail that doesn't matter in the big picture, instead of moving forward with 80% good. Choosing a worse solution that a reviewer suggests because you know they're always the last to back down. And code reviews rarely catch the bugs that actually matter.

I found that code reviews without a design review or at least a description of the proposed design in the PR itself, is nothing but a waste of time the way you just described.

Imagine a Civil Engineer being walked through a construction site and making comments right about work, while even though he knows the fellas are building a bridge, he has no idea how that bridge ought to look like etc. This becomes a waste of time because I have to read the diff and build a mental model, which is at best a guess, of what the author wanted to build/change based on just the diff. This is even worse with code bases I'm barely familiar with (which is increasing since we have a bunch of "micro services").

Re: Tell HN: I love programming but am sick of the software industry

#12

Code reviews. There's good reason for them to exist, but in practice at best they're a waste of time, and at worst an exercise in narcissism. People nitpicking the way a statement is written because they feel like their subjective preference is objectively better. Perfectionists who block forward progress in attempts to pick out every possible detail that doesn't matter in the big picture, instead of moving forward w…

Thats because “best practices” only apply in simple situations. In complex dynamic situations made of humans with feelings, there are only “good practices” which might be applicable in context.

Re: Tell HN: I love programming but am sick of the software industry

#13
Coding is one of the most interesting things for programmers and software developers. You started doing it for fun, it was your hobby, it was your passion and later your passion becomes your job. In the early stage of your career, you might have enjoyed doing it a lot. You might have tried to stretch yourself as much as you can to prove yourself the best programmer among everyone. You might have also tried to do overtime ...

https://www.firstcallonline.us/

Re: Tell HN: I love programming but am sick of the software industry

#14

Code reviews. There's good reason for them to exist, but in practice at best they're a waste of time, and at worst an exercise in narcissism. People nitpicking the way a statement is written because they feel like their subjective preference is objectively better. Perfectionists who block forward progress in attempts to pick out every possible detail that doesn't matter in the big picture, instead of moving forward w…

Re: Code Reviews

Like anything there are good versions and bad versions. I think we've all been through bad code reviews and bad code review processes, so let's skip talking about those. On the other side, here's what good code reviews/processes I've been a part of accomplish:

1. The give the creator of the code the opportunity to rubber-duck. I've found that 80+% of all bugs found in code (before merging) are found by the programmer themself just by talking through what each change is meant to accomplish.

2. The give the reviewer(s) the opportunity to ask very simple questions and questions about how the code change relates to other major systems that the PR creator may not even be aware of. If there are any remaining issues with the change (the last 20%) this is usually where they are found. This isn't about where to put curly braces. If your team cares about that, use auto-formatting tools or something.

3. It gives somebody... ANYBODY... other than the PR creator, some idea of what the code does and why. This is absolutely critical as it spreads the bus factor. When something goes wrong and a programmer is sick, on vacation, or has left the company, it's critical that there be one or more other programmers who can pick up the mantle. They may not have deep knowledge, but they aren't coming into the code blind either.

4. Building on 3, it spreads the architectural knowledge and decision making of the code base among all the programmers. Code reviews shouldn't only be "run" by senior/lead programmers. Senior programmers should be getting reviewed by junior programmers as well. It's not ego or about teaching. It's about realizing we all make mistakes and we all contribute to the same end goal. Over time, everyone becomes aware of the systems at play and what's going on. When they are presented with a task, they have a much deeper understanding of what's involved, they can estimate better, and they are aware of who else to talk to or involve in the process. Junior programmers will get comfortable speaking up in architectural meetings and bring up good points. This is one way they become senior programmers.

Re: Tell HN: I love programming but am sick of the software industry

#15
I hate my job.

I see what you mean about resistance to change. I've encountered it, although usually from a process/system/logic perspective rather than straight technology. Stuff like my prior tech lead wanting to build out a complicated screen to rerun jobs/items in the system. The reason for this is the support team needs help with this. The reason they need help with it, is because we don't have documentation on how to handle each issue. So instead of simply creating the documentation and having knowledge transfer, he wants to build out a new screen... which would require additional documentation, maintenance, and knowledge transfer.

I've also seen the other way, where they are too accepting of new technology. It's a constant parade of new stuff on my current team. We have integrations for cloudwatch, splunk, opentelemetry/honeycomb, servicenow, pagerduty, a data lake, tableau, etc. I get that some of these enable specific features, but a lot of them seem are redundant (especially the way we use them) . Can we just pick one alerting system, one logging system, and one reporting system? And maybe we can stick with that system for a few years instead of refactoring to integrate the newest thing into our 5-10 apps almost as soon as we finished the integration of the prior thing. All that churn could be better spent delivering value and just integrate the new service when it's truly compelling. Maybe we could get rid of the prior services that are essentially being replaced to increase the maintainability too and streamline the process.

In my company, the resistence to or over adoption of new tech is really just a facade concealing a bigger issue with the underlying processes of the system itself, the bureaucracy, or the business processes.

Re: Tell HN: I love programming but am sick of the software industry

#16
I can't remember where I read it, but I read something along the lines of: "Technical debt is just code nobody can read anymore." A lot of us old timers have seen so many paradigm changes that we just don't care - we are focused on whether it solves the problem and whether it is maintainable.

Switching from the "hot" framework we started using last year to the "hot" framework that everybody loves this year is a step backwards from actually solving any problems. And two steps back from being able to maintain the resulting system. The world of startups is so very "now" focused that I think a lot of people (especially on Hacker News) forget that most programmers are still dealing with code written 20, 30, 40 and in extreme cases 50 years ago.

Better is great. Easier is great. But most old code can't be refactored, only replaced. Which means everything that interoperates with that old code has to either be replaced or it has to work exactly the same way. Sometimes that makes sense. Sometimes that's an absolute disaster.

Something that looks "simple" to you really can be too complex in a greater context. Rant all you want, this is just a fact of life. The software development profession has been so fascinated with shiny new toys for the past 25 years that we tend to forget that the hidden (and dangerous) part of the iceberg is not only in the past, but what we're creating now will just make it all that much bigger and more dangerous unless we're very careful.

But. I know places that are so stuck in the past that they are paralyzed and can't do anything at all. There certainly is plenty of "we've always done it this way" that needs to be thrown out the window. Introducing some new workflows or tools could really simplify things moving forward. The problem is knowing which is which. In order to know which is which you need someone who understands the system(s) at a "heroic" level.

I see us moving that way with things like "full stack" or "devops", but those are mostly only considering newer software. Making 30+ years of IT infrastructure work effectively and efficiently really is an epic task. And not one most CIOs I know of are at all capable of.

Sorry, I guess you triggered a flood of things I've been thinking about this past year. I guess I would sum it up by saying that your own rant is very personal and doesn't necessarily take the context that software is developed within into account.

Re: Tell HN: I love programming but am sick of the software industry

#17
Using Java doesn’t mean you have to name everything AbstractFactoryFactoryBean. That’s just general bad development no matter what language is used. My personal hate is over engineered solutions with too many latest fashionable technologies shoehorned in for the sake of using them. Especially 5 years later when you have to deal with them.

Re: Tell HN: I love programming but am sick of the software industry

#18

Using Java doesn’t mean you have to name everything AbstractFactoryFactoryBean. That’s just general bad development no matter what language is used. My personal hate is over engineered solutions with too many latest fashionable technologies shoehorned in for the sake of using them. Especially 5 years later when you have to deal with them.

> Using Java doesn’t mean you have to name everything AbstractFactoryFactoryBean

The problem with AbstractFactoryFactoryBean isn’t the name. In the complaints about things like that, the names are used because they are well-chosen, appropriate names for the things being complained about.

Re: Tell HN: I love programming but am sick of the software industry

#19

Using Java doesn’t mean you have to name everything AbstractFactoryFactoryBean. That’s just general bad development no matter what language is used. My personal hate is over engineered solutions with too many latest fashionable technologies shoehorned in for the sake of using them. Especially 5 years later when you have to deal with them.

> Using Java doesn’t mean you have to name everything AbstractFactoryFactoryBean The problem with AbstractFactoryFactoryBean isn’t the name. In the complaints about things like that, the names are used because they are well-chosen, appropriate names for the things being complained about.

At the end of they day class names like that solely come from the GOF design patterns. Nothing to do with any language. I think I’m ready to leave the software industry now too to be honest.

Re: Tell HN: I love programming but am sick of the software industry

#20

Earlier quoted context omitted.

> Using Java doesn’t mean you have to name everything AbstractFactoryFactoryBean The problem with AbstractFactoryFactoryBean isn’t the name. In the complaints about things like that, the names are used because they are well-chosen, appropriate names for the things being complained about.

At the end of they day class names like that solely come from the GOF design patterns. Nothing to do with any language. I think I’m ready to leave the software industry now too to be honest.

> At the end of they day class names like that solely come from the GOF design patterns.

The GOF design patterns are influential as boilerplate templates in certain language communities precisely because they solutions to commonly-encountered problems that are not easily reducible to generic, reusable components in those languages.

Design patterns — in the boilerplate template sense, though not the underlying concept — are a language smell, not a language-independent feature of the software industry.

Post reply on HN