Live data from Hacker News

The worst kind of programmer

mikhailian.mova.org

81–90 of 137 posts

Re: The worst kind of programmer

#81
post #48
post #36

> There is broad consensus that Golang is simple to the point of being symplistic. It is in a way opposed to Rust as the means to an end and not a subject of much discussion. Golang teams strive, Rust teams… rust, because the language encourages concentration on itself, not on the outcomes of engineering projects. I'm sorry, what??!?!?!?

I don't know if I would the generalize as much as the author about how different teams operate but there is a valid point in there - with some languages you can focus on getting things done while with Rust you spend a disproportionately large percentage of your time thinking about programming language concepts.

I think Go creates a false sense of “getting things done” by allowing too little abstraction and increasing LOC. The writing/thinking ratio is great, but most of it is having to write 4 lines of repetitive code for every reduce that should have been one line instead

Re: The worst kind of programmer

#82
I won't call this kind of programmer good or bad, IMO this is just the result of 2 factors:

1. This specific person leaning towards being a contractor rather than employee. They are more focused on solving technical problems and improving technical skills, but not learning the problem domain, their company's business model and organisational structure.

2. Never being personally accountable for the result of their work, because the company takes teams/departments accountable, instead of individual people.

Number 1 by itself is not a bad thing. Number 2 will be fixed as soon as this developer works for some time as a real contractor or if the organisation gives him a 1-man project and holds him accountable for it. After that they will learn to make sane technology and architecture decisions.

Re: The worst kind of programmer

#83
The author was on a mismanaged project and his takeaway is to blame his fellow devs rather than hold management accountable. In fact, he does not even seem to recognize the existence of a managerial issue.

This whole article reeks of imposter syndrome. Of course, it must be the case that all the devs who are more productive and impactful than the author are actually secretly very bad, and that the author's inability to understand technologies like Rx, validation and testing frameworks is actually a hidden strength because it makes him some perfectly interchangeable lowest common denominator developer. I hate/hated working with Rx, but it is fundamentally not challenging or complex.

This story is common because the types of people who are capable of single-handedly building large parts of a software product in a short time are naturally the ones who are "hyper-productive" and leveraging a tonne of different technologies and paradigms. The unexceptional "slow and steady" devs are usually not capable of having that kind of impact. When devs like the author do manage to single-handedly deliver entire codebases (e.g. over long periods of time), they are typically just as bug-ridden and unmaintainable as what the "rock star" devs produce.

Ultimately, the onus is on businesses to avoid crutching themselves entirely on a single developer's output. But there are a heap of shitty businesses that have no method for delivering software other than to let singular, highly motivated and passionate developers "go HAM" on the codebase with no oversight. These businesses deserve to fail, and the unmaintainability of the code base after the departure of their key players represents the correction of a market anomaly.

>Then suddenly, the frontend lead quit for greener pastures

What does this even mean? Key personnel do not "suddenly" quit.

Re: The worst kind of programmer

#84

> Golang teams strive, Rust teams… rust, because the language encourages concentration on itself, not on the outcomes of engineering projects. Why call out Rust specifically here? CloudFlare achieved the world's first widespread deployment of HTTP/3 thanks to Rust, and they called out plenty of Rust-specific benefits that sped up the development process and provided peace of mind. Sure, if you're using Rust just beca…

Rust, like Scala, is a complex ever evolving language that attracts curious minds. Look at the human side of the story. Yes, teams can build great software in Rust. But Rust also attracts many people interested in playing with fancy language features. If I had a choice, I would have taken Go over Rust just because I need a different kind of people in my team.

What big language features did Rust get in the last few years? What big changes have you seen that changed codebases directly? Cause I code in Rust and my Rust code these days looks very similar to what I was writing a few years ago. The biggest change to the language was async/await, which was introduced almost 5 years ago.

What if you compare it to Go that fairly recently got a massive new feature that can change how you write code drastically, ie. generics?

Re: The worst kind of programmer

#85
post #4

Yeah. Functional programming happened to be trending again and our lead service bus developers decided to write Java like it’s Haskell. Now their garbage keeps crashing with stack overflows, and they complain when files are bigger than a few hundred lines. We accidentally pushed a 10,000 line file once and it brought the entire bus to a crawl for an hour. TEN THOUSAND LINES. One day, these twerps pushing this stupidi…

Passing arguments as read-only references does impact the purity of functions from a fundamentalistic view point but, as you experienced first hand, is sometimes more or less required for performance.

Looks like your FP zealots didnt learn how to compromise on that point or how to work with constness in general.

Re: The worst kind of programmer

#86
There’s a little “tall poppy” syndrome in this article. The two hotshot engineers who are the villains are clearly out of step with their teams, but their teams sound like they might be conservative clock-punchers who resent the existence of any new technology which might require them to grow a bit.

The two attitudes represent extremes, and most people will be in the middle. I’m the agitator on some projects, and I’m the voice of caution on others.

Re: The worst kind of programmer

#87
The main problem seems to be really poor process.

They told or were willing for their leads to start building stuff out on their own. The rest of the team were "slacking off because business requirements were in the works".

They had no review of what the leads were doing. They did not involve the rest of the team in the design and build of the frameworks. The leads, also in the absence of firm business requirements produced highly abstract systems that could cater to many different requirements. The rest of the team couldn't understand it and it was bug prone (and presumably hard to debug).

I assume that these frameworks had to be ready by the time the fabled business requirements were finally produced, so there would be some time pressure to deliver them.

I have no idea whether the leads bear much responsibility here from what was written. I do know that the way they write software is very likely to produce this kind of result.

Re: The worst kind of programmer

#88
post #4

Yeah. Functional programming happened to be trending again and our lead service bus developers decided to write Java like it’s Haskell. Now their garbage keeps crashing with stack overflows, and they complain when files are bigger than a few hundred lines. We accidentally pushed a 10,000 line file once and it brought the entire bus to a crawl for an hour. TEN THOUSAND LINES. One day, these twerps pushing this stupidi…

Once more, a Java programmer has a bad time writing Java and scapegoats Haskell.

> One day, these twerps pushing this stupidity of “copy everything always cause ‘it’s easier to reason about dawg’” are gonna get theirs.

Making defensive copies is literally item 39 of Effective Java by Josh Bloch.

The Haskell way is to not bother with that shit, because you don't have to.

Re: The worst kind of programmer

#89
post #49
post #36

> There is broad consensus that Golang is simple to the point of being symplistic. It is in a way opposed to Rust as the means to an end and not a subject of much discussion. Golang teams strive, Rust teams… rust, because the language encourages concentration on itself, not on the outcomes of engineering projects. I'm sorry, what??!?!?!?

It sounds like he's overfitting to one or two programmers he knows. It seems ironic to me because rust is clearly designed much more pragmatically than golang. The whole article is also ironic because a hallmark of bad programmers is overgeneralizing their bad experiences.

I would be interested in reading about the pragmatism behind Rust's design.

Go was designed to specifically address many pragmatic issues at Google, such as slow compile times, engineer ramp up time, language complexity causing hard to understand code, ease of writing automated tooling, and more.

https://go.dev/talks/2012/splash.article

Re: The worst kind of programmer

#90
post #48
post #36

> There is broad consensus that Golang is simple to the point of being symplistic. It is in a way opposed to Rust as the means to an end and not a subject of much discussion. Golang teams strive, Rust teams… rust, because the language encourages concentration on itself, not on the outcomes of engineering projects. I'm sorry, what??!?!?!?

I don't know if I would the generalize as much as the author about how different teams operate but there is a valid point in there - with some languages you can focus on getting things done while with Rust you spend a disproportionately large percentage of your time thinking about programming language concepts.

Having written a few Rust projects, I cannot disagree more. As for writing code, I am just as productive in Rust as in Java, despite having way more experience in Java (15+ years). I spend less time hunting for bugs in Rust and less time thinking „can I change that line so I don’t introduce a bug?”
Post reply on HN