Live data from Hacker News

Green Lumber Fallacy in Software Engineering

chrisbehan.ca

11–20 of 238 posts

Re: Green Lumber Fallacy in Software Engineering

#11
post #8

In the physical world there are folks who design bridges, dams, buildings, telescopes, furniture, and a million other things. All of those have unique requirements and skill sets. In software, we also make a huge number of categorically different systems each with its own skill set, but we call all of it 'software engineering.' There are folks who are great at their job (called "software engineering") and their work…

I completely agree, we need better compartmentalization/specialization and a better way to target specific skillsets and experiences. Not knowing how to hire the right people is a source of so many problems in the industry.

20 years ago, all you had to do was get a "certification" in some technology and you'd immediately be hired to work on it. That led to a lot of really bad people getting hired because all they did was learn how to pass a test. Today, hiring in tech doesn't require any piece of paper at all. But that means that instead of relying on some standard format to prove your baseline body of knowledge, the interview process now has to do it ad-hoc, and it never seems to fit the role's actual requirements.

And nowhere in the industry have we ever required training on how to actually do a job. Does the candidate know what an SDLC is? Do they write ADRs? Have they juggled multiple changes in flight on a team with large codebases? Do they have a solid grasp of the strange subtle quirks of their tech? Have they learned to be judicious in their decisions and weigh the many long-term pros and cons? Have they ever developed any project with a team?

Trades typically require an industry board to certify them, and then often require years of apprenticeship under journeymen or masters. I think these two would go a long way towards leveling the incredible amounts of variation in candidates and eliminate these ridiculously ill-suited interviews.

Re: Green Lumber Fallacy in Software Engineering

#13
The post arrives at the wrong conclusion.

DSA style problems are good if used correctly.

Give a candidate a good challenge, preferably with some requirements that can have different interpretations, ask them questions, help them and collaborate with them.

The analysis of the whole exercise should be your hiring determination not whether the problem was actually solved.

Did the candidate:

- stick with the problem?

- ask meaningful questions about requirements?

- ask for help from a senior when stuck?

- explore different avenues to solve the problem?

- handle criticism?

Of course it is great if they solve the problem but often that often only shows you that they have memorized algorithms. ( we have the internet these days )

Re: Green Lumber Fallacy in Software Engineering

#14

The test isn't so much about the ability to invert a binary tree (for example), but the ability to problem solve complicated problems where the obvious solution is probably not the best one. In interviewing, it is hard to produce real world problems that don't require a huge amount of context and details of some obscure software stack, so we go with abstract problems which are kind of irrelevant to real work, but the…

If we're going to use Meta for the acronym, then for God's sake can we call them MANGA?

More generally, the absurd success of most of Big Tech has not come from better technology but extremely high margins facilitated by software. Apart from the core ranking/ads problem that M and G solve, most of it doesn't need to be that complicated.

I would venture that lots of the cool technology stuff is designed to keep engineers happy so that the money train continues.

Certainly the one I was at built a lot of cool stuff, but there was so much reinventing of the wheel that I suspect that the core business and products could have been served by a much much smaller engineering org.

Re: Green Lumber Fallacy in Software Engineering

#15

Data structures and algorithms are important to very important in software engineering and I think it's quite right to include questions on them in interviews. But that's not the same as knowing by heart how to implement non-trivial algorithms. There's the green lumber fallacy. To have a feel for the 'right' data structures and algorithms to use for specific problems is a key skill. But then the detailed algorithm is…

This! Data structures obviously do matter for software engineering. But memorizing the solutions to a handful of random, difficult, data structure problems isn't very useful for a real job and shouldn't be part of the hiring process.

Re: Green Lumber Fallacy in Software Engineering

#16

Data structures and algorithms are important to very important in software engineering and I think it's quite right to include questions on them in interviews. But that's not the same as knowing by heart how to implement non-trivial algorithms. There's the green lumber fallacy. To have a feel for the 'right' data structures and algorithms to use for specific problems is a key skill. But then the detailed algorithm is…

[deleted]

Re: Green Lumber Fallacy in Software Engineering

#17
Personally, I dislike competitive programming interview problems. Competitive programming, when viewed as a sport, requires training and practice. It's a muscle that you must constantly train. If you stop for a few months, it may take you a few days or weeks to get back to the previous level.

So it's always frustrating to find a new job because I know I'll have to spend weeks practicing on problems that will have no relevance to the posts I'm applying to. To me, it's a waste of time.

I think companies that uses competitive programming problems (that are irrelevant to their engineers' day-to-day jobs) end up hiring people who are very good at interviews and perhaps not as good at their actual jobs.

Of course, there are jobs which deals heavily with algorithms and optimizations, for which these types of interviews are relevant. But the article is not talking about these relevant cases.

Re: Green Lumber Fallacy in Software Engineering

#18
Excessively complex DSA questions are not very useful for me as an interviewer. I prefer to offer a fairly simple test problem that has room for elaboration. For example, when evaluating SQL skills, looking how the candidate would model mapping between companies and stock ticker symbols is instructive. You can start with a simple flat table, extend to one to many relationships, discuss when normalization and denormalization make sense. You can keep elaborating this, too--add in multiple exchanges to get many to many, and so forth. This lets you see how the candidate evolves a design in the face of changing requirements, which is critical.

These kinds of questions are great for leveling an applicant. How a junior dev answers these questions will be very different from what a senior dev has to say.

Re: Green Lumber Fallacy in Software Engineering

#19
post #18

Excessively complex DSA questions are not very useful for me as an interviewer. I prefer to offer a fairly simple test problem that has room for elaboration. For example, when evaluating SQL skills, looking how the candidate would model mapping between companies and stock ticker symbols is instructive. You can start with a simple flat table, extend to one to many relationships, discuss when normalization and denormal…

This sounds like the system design round at many companies.

Re: Green Lumber Fallacy in Software Engineering

#20

Data structures and algorithms are important to very important in software engineering and I think it's quite right to include questions on them in interviews. But that's not the same as knowing by heart how to implement non-trivial algorithms. There's the green lumber fallacy. To have a feel for the 'right' data structures and algorithms to use for specific problems is a key skill. But then the detailed algorithm is…

Data structures and algorithms are just parts, like screws and nails. When you're building a house, you don't need to remember if you should use 2 18-penny nails or 3 16-penny nails, or if you can use screws, and what kinds. What matters is that you know how to go look up the building code, find out what's required, use those parts, know how to verify they're installed correctly, and know the consequences to doing it wrong.

Once you've built a dozen houses you may remember these things implicitly, but you never need to remember them. You do need to know why they matter, how to look them up, and how to adapt them to your particular job.

Post reply on HN