Live data from Hacker News

“Normal” engineers are the key to great teams

spectrum.ieee.org

101–110 of 543 posts

Re: “Normal” engineers are the key to great teams

#101
post #51

Earlier quoted context omitted.

Software is different. All other engineering disciplines are ultimately limited to building things in (at most) 3 euclidean dimensions. There is only so much junk you can hide in a finite volume of space. Code by comparison lives in hyperbolic space [0] and you can hide _anything_ in such a space without it being obvious. This is exemplified by the unpleasant discovery all of us have had of a supposedly peripheral fo…

The methodology is unconstrained as another way to put it. Which, indeed, is different from engineering where constraints are non-negotiable, and thus the methodology as well. I think a lot of people doing functional programming, as an example, enjoy the constraints and the discipline that it imbues on their craft.

There is an incredibly large space for decisions and belief systems in software that are not evidence-based but that can all lead to programs (in the general sense) that all function and produce the same results while being internally very different.

The _need_ to build higher-level abstractions to manage the complexity or verboseness required to do things from lower level components always seems to be fighting with the _desire_ to build your own higher-level abstractions that fit your own view of how things 'should be', despite many of the decisions going into this being abstract and not easily objectively measurable.

On top of that, software components as 'reusable boxes' only seems to work up to a certain level. The idea seems to be that higher-level abstractions and reusable pieces are all nicely shaped square boxes that all perfectly fit inside other boxes, but the reality seems to be more that even the best reusable boxes aren't perfectly square, have weird edges, and themselves have to fit into larger non-square shapes with weird edges.

And what are the weird sharp edges? Decisions that had to be made about solving a problem. Every higher-level software component is on some level a set of (mostly arbitrary, sometimes measured) decisions about how to take a set of lower level generic components and make something more specific with them. Libraries might assume a certain structure but leave choices for how they're composed to the user. Applications make many more decisions about how their components are used in order to provide a more specific tool. There is a move from genericity to specificity as you move up layers of components.

And finally, software requirements change all the time, but the need to change is itself at odds with the requirement that problems are solved only by making hundreds of decisions that have to work together for a working solution but also may be difficult to undo.

> the constraints and the discipline that it imbues on their craft.

Perhaps the constraints and discipline here comes from a desire to move towards some kind of standard or expected way of structuring software, knowing from experience that the cognitive cost of making (and sometimes having to read and understand) all the arbitrary decisions mentioned above is actually quite high. (This itself also leads to the notion of 'best practices' which seemingly change too often to ever really be considered best).

Re: “Normal” engineers are the key to great teams

#102

I think 10x is an exaggeration but I've found its really common to have 1-2 people who do a big bulk of the work The thing I don't understand personally with these people is why they care so much about work when the rewards are not proportionate to doing so much extra work. I get it if you're a founder of a startup but not if you're at a big company Yet every big company I've worked at there are always 1-2 people on…

> 1-2 people who do a big bulk of the work

Pareto principle.

> why they care so much about work when the rewards are not proportionate

Some people are just work horses by nature. They're too busy fulfilling their idea of a "job well done" to worry about the relative fairness of their employment.

Not to mention being a 10x coder doesn't mean you can simply parlay your skills into the greatest possible rewards. There's a lot of important context that makes a 10x possible in the first place.

Re: “Normal” engineers are the key to great teams

#103

Earlier quoted context omitted.

Disagree. What makes software unique to other engineering disciplines is that it isn't a discipline at all. What makes software so great is how quick the iteration cycles are. Software sits at a higher abstraction level than physical hardware, so much of our time is spent throwing at the wall and seeing what sticks because that's often (although not always) the best use of time.

There is a discipline, it's just very fast-growing. Many techniques remain and become classics, it just takes awhile to realize what is fad vs classical.

Can you give some examples of things you'd consider fads versus classical in software?

Re: “Normal” engineers are the key to great teams

#104
post #99

Sometimes I feel useless compared to other people - usually while I'm struggling with something and seem to be achieving nothing. This talk of xN programmers absolutely hits on all my insecurities. Then other days I solve 3 problems for other people which are easy for me because I have bashed my head against those particular kinds of walls before. I suddenly feel worthy again. I'm productive when I know exactly what…

Systems tend to ossify over time. Thoughtful solutions to problems usually stand the test of time better than rapid fire solutions. On my team, we often take an extra day to verify and validate design decisions before binding ourselves to them. Yes, some may deliver faster, but developing with intention is the road to sanity in my book.

Re: “Normal” engineers are the key to great teams

#106
post #93

I think 10x is an exaggeration but I've found its really common to have 1-2 people who do a big bulk of the work The thing I don't understand personally with these people is why they care so much about work when the rewards are not proportionate to doing so much extra work. I get it if you're a founder of a startup but not if you're at a big company Yet every big company I've worked at there are always 1-2 people on…

Once you’re paid some minimum threshold you stop caring about money and start caring about your legacy.

Everyday I grapple with the legacy my coworkers left behind..

Re: “Normal” engineers are the key to great teams

#107
post #30

I think 10x is an exaggeration but I've found its really common to have 1-2 people who do a big bulk of the work The thing I don't understand personally with these people is why they care so much about work when the rewards are not proportionate to doing so much extra work. I get it if you're a founder of a startup but not if you're at a big company Yet every big company I've worked at there are always 1-2 people on…

>The thing I don't understand personally with these people is why they care so much about work when the rewards are not proportionate to doing so much extra work. The reward is there allright, it just isn't monetary.

There are big rewards in future pay, referrals, etc. for establishing a reputation as a great engineer. If you find there aren't then jump jobs.

Re: “Normal” engineers are the key to great teams

#108

Most 10x engineers I've met are usually very creative and care deeply about the user experience and keeping code maintainable over time. Most 1x developers just care about getting the job done regardless of care or code quality, which in my experience has led to conflict.

I like 5x developers that get the job done and don’t spend the additional 5x over engineering the work — causing the 1x engineers to disengage. Some engineers have an obsessive, sometimes compulsive, nature which is actually at odds with the business. These types usually spent a large amount of time in institutionalized learning settings and will be far more opinionated about how their labor is allocated.

Agreed. I prefer collaboration between engineers, regardless of Nx they are.

Re: “Normal” engineers are the key to great teams

#110

Earlier quoted context omitted.

There is a discipline, it's just very fast-growing. Many techniques remain and become classics, it just takes awhile to realize what is fad vs classical.

Can you give some examples of things you'd consider fads versus classical in software?

TDD. Agile.
Post reply on HN