Live data from Hacker News

The worst kind of programmer

mikhailian.mova.org

61–70 of 137 posts

Re: The worst kind of programmer

#61

What a pile of garbage. So you’re no meant to use generators/discriminators/whatever because they’re too fancy or something? IMO any language feature, any technology feature that is there and documented in the API is fair game to be used. The author seems to be suggesting there is some “standard” way of programming ….. not too advanced mind you …. and that anyone who uses more than some baseline set of features is se…

From my experience in 15 years of mobile development - there are developers out there who are more interested in building great software rather than building great products. The framework that they work in is the highest order of priority, and everything else is secondary to that.

If a new requirement comes in, they will pass it off as "impossible" or give it an incredibly high estimate, when in reality, it just needs a little creativity and doesn't work in their self-imposed limitations of the application.

Not to say these developers aren't useful - they are great at cleaning up and organizing messy codebases, but it can easily be taken to an extreme, at the detriment of the actual goal of the project.

But again - I don't think this even applies only to developers - it is all industries. There are people who optimize things for a better end-user experience, and people who optimize things for their own personal/team work experience. Ultimately you want both once your team grows beyond a handful of people.

Re: The worst kind of programmer

#62
post #39

Developing software as a team is a completely different sport than developing software alone. Developing software alone even happens when people think they work as a team. They just split up the tasks so that each individual contributor owns their part of the codebase. Developing software as a team really means much more time is spent on discussion, writing documentation, reviewing code and explaining concepts than a…

Also, it is much slower than just shipping the code. I prefer working with a pair or a team but sometimes you need to ship often and fast.

I'm sure there are circumstances where there's good reason to firehose thousands of lines of complex unmaintainable code. But how common is such "throwaway" projects?

Re: The worst kind of programmer

#63
Sounds like these devs did more work than the rest of ya'll combined. When they left you couldn't match their skills and progress (perhaps if you tried to contribute instead of slacking off?)

In my opinion and experience, development is done by individuals, who are slowed down by the rest.

Honestly they could do without you. Perhaps if they gave those two your salary theid stay.

Re: The worst kind of programmer

#64

I feel confused. Even though I’ve been doing C++ embedded systems and drivers, C++ network protocols, C++ graphics engines (OpenGL and Vulkan), C++ video codecs etc, on many OS’s, all this for over 25 years professionally, I must admit I have no clue about the articles technology stack, programming techniques, languages, or architecture. Am I completely out of touch with this industry?

Your question is grammatically correct but doesn’t make any sense. Software isn’t an industry, it is used in every industry.

Re: The worst kind of programmer

#65
post #61

What a pile of garbage. So you’re no meant to use generators/discriminators/whatever because they’re too fancy or something? IMO any language feature, any technology feature that is there and documented in the API is fair game to be used. The author seems to be suggesting there is some “standard” way of programming ….. not too advanced mind you …. and that anyone who uses more than some baseline set of features is se…

From my experience in 15 years of mobile development - there are developers out there who are more interested in building great software rather than building great products. The framework that they work in is the highest order of priority, and everything else is secondary to that. If a new requirement comes in, they will pass it off as "impossible" or give it an incredibly high estimate, when in reality, it just need…

If your team members don’t know what a generator is, now’s the time to learn.

Re: The worst kind of programmer

#66
I somewhat identify myself as being such worst kind of programmer.

I like to tackle hard problems. I like playing around with new technology. I like to try out new ideas how to solve problems. I started coding since I was a child, around 10 years old. I tend to code many hours non-stop on interesting problems. (Now with family and kids, I'm somewhat limited in doing that, though.) Many people say that they admire how productive I am and how much I accomplish.

Sometimes some of the design decisions of some projects seem to be bad and lead to lots of overhead later. Basically the wrong kind of abstractions were chosen. Other parts of the software are much better and the abstractions seem to be quite nice, but this is not true for everything. (Related recent discussion here: Goodbye, clean code (2020): https://news.ycombinator.com/item?id=38566235)

I often tried to discuss some of the designs with more people, but noone was really interested in this work, so to push things forward, it was still often just me doing the decisions. I think the management just does not want to invest more resources into the software development. After all, the software works and does its jobs, but it's messy and I think it holds us back in some ways. But my manager keeps saying, we are not a software company, the software is just there to solve some problem.

So, how to improve myself? I was trying to improve on basic design decisions of the software. The feedback loop here is very long though, and then difficult to really pinpoint it in the end. I also tried to improve my communication skills, but here it's even harder to tell whether I improved. At least every decision I do is discussed and communicated in many ways.

I definitely learned already that the simpler the solution, the better, as also this article is pointing out. But that comes back to the problem of making exactly the right kind of abstractions, i.e. the right design decisions.

Often I think I overthink some of the problems now to come up with the right abstraction. I want to get back to my older habit to just do things and iterate. But I'm afraid that this again leads to more messy solutions.

Re: The worst kind of programmer

#67

Earlier quoted context omitted.

Can you elaborate what exactly we‘re giving up when choosing „simple languages and boring technologies“?

The ability to be more expressive, niche, and precise. As an analogy, it would be like removing the "big words" from the English language because they are not well understood, but then losing the specificity and expressiveness of having them in the first place.

"big words" are fine, so long as you are using the words that your audience understands. You need to speak to your audience.

You could always use those words, and explain the definition/meaning as a side-note, which would be more inclusive without losing the expressiveness.

It's often through explaining the need for a big word, that people realise there are smaller, better known words, that work just as well - they just don't look as 'clever'.

Re: The worst kind of programmer

#68
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 mean Rust code can become really opaque very fast, as there are macros and a ton of meta programming features that can make it very hard to know what a given piece of code is doing exactly (in my opinion). Golang is very straightforward in that sense, reading and understanding code seems much easier. It’s of course possible to write simple, straightforward Rust code.

Re: The worst kind of programmer

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

Out of curiosity, how many professional projects written in Rust have you worked on?

Re: The worst kind of programmer

#70
post #2

It's a good discussion to have! I've been in both sides of these roles over the years. I think the problems in the article really seem to be lack of technical design or leadership though, rather than problems with individual programmers or personality types. You can't have one guy leave, another guy come in, have the same issues then blame the people. The process is broken! At any kind of head count beyond 5+ people,…

> The org in the article sounds like it's missing CTO/engineering management.

Not necessarily. I’ve worked in a company where the CTO itself was encouraging those employees. He established a clear list of goals to achieve to climb to the next seniority level.

To be promoted you _had_ to do stupid shit like hacking the framework (which was Angular so I let you imagine the potential), be the architect of the project, or make company-wide presentations of your original solutions.

Of course, a team full of people hacking things, trying to be the architectural leader and solving old problems with "invented here" solutions can’t really exist.

So you were either in the promoted hackers camp or in the camp of people trying to do their job of delivering value and quality at the lowest cost, which in a CRUD SaaS business means that most of the time you just have to do the old boring things "by the book" that have proven to just work. But if you were in this camp you were seen as underperforming because you didn’t do what was expected but also you were underperforming for real because adding a single API in the back or a component in the front was just a hell of stupid work.

The "high performers" were just the people who created this hellscape because since they invented it they’d be the only ones to have a full mental model of the team’s codebase.

Now I just avoid any company who promotes their team as "the most talented engineers" because it’s either false or worse. I’d rather work with average coworkers who have a life outside computers and who just want the work done by 6pm.

Post reply on HN