Live data from Hacker News

Software development topics I've changed my mind on

chriskiehl.com

171–180 of 788 posts

Re: Software development topics I've changed my mind on

#171
post #141

Earlier quoted context omitted.

I had a different read of that point. More along the lines of “don’t throw the baby out with the bath water” (might have butchered that saying?). I’m also more in the FP camp - even wrote a book on the topic of FP. But I also acknowledge OO is not inherently a bad choice for a project, and many languages nowadays do exist along a spectrum of OO and FP rather than being strictly one of the other. To me a benefit for O…

> More along the lines of “don’t throw the baby out with the bath water” (might have butchered that saying?). No, you got it right. https://en.wikipedia.org/wiki/Don't_throw_the_baby_out_with_... > even wrote a book on the topic of FP. Care to share? If not, that’s fine.

Sure, “Functional Programming in Go”, this is the Amazon link: https://a.co/d/htv3BOu

Re: Software development topics I've changed my mind on

#172

> Most programming should be done long before a single line of code is written Nah. I (16+ years developer) prefer to iteratively go between coding and designing. It happens way too often that when you're coding, you stumble across something that makes you go "oh f me, that would NEVER work", which forces you to approach a problem entirely differently. Quite often you also have eureka moments with better solutions th…

Iterative work is THE way to work in large legacy codebases. The minute you wade into the code, all of your planning is moot. You don't know what's lurking below the surface. No one knows what's lurking under the surface. Except maybe Dave, because he vaguely remembers about 15 years back talking to some guy who wrote some code 30 years back about it. Greenfield, absolutely design up front you lucky devils, but itera…

Every development shop has a Dave.

Re: Software development topics I've changed my mind on

#173

> Typed languages are essential on teams with mixed experience levels I like this one because it puts this endless dilemma in a human context. Most discussions are technical (static typing ease refactoring and safety, dynamic typing is easier to learn and better for interactive programming etc.) and ignore the users, the programmers.

I'm kind of wondering where the "mixed experience levels" part comes from. What is it about more homogeneously skilled teams that makes them less susceptible to the productivity boost that statically typed languages give in large code bases?

I'm reading in it that experienced developers (be it overall or in a specific codebase) "know" all the ins and outs, types, conventions etc, whereas less experienced people cannot yet know all of that; being able to lean on good types and / or other types of automated checks helps them make more confident changes.

Re: Software development topics I've changed my mind on

#174
post #165

How does > There is no pride in managing or understanding complexity interact with > If I think something is easy, that's a sure sign I don't understand it. ? Is it implying that you must understand the irreducible complexity, but mustn't take pride in that understanding? Or is "difficult" the opposite of "easy" here, rather than "complex?"

Both easy and difficult problems can have simple or complex solutions. Two different axes of measurement.

Most problems in software seem to end up being harder than they look, so if I think something is easy I have to suspect I've missed something.

Most solutions in software end up being more complicated than they needed to be, because we don't have the hindsight to realise that until after we've done it and our managers are demanding the next thing.

Re: Software development topics I've changed my mind on

#175
post #148

Earlier quoted context omitted.

Nah, I think having a monadic Maybe/Option type and first-class support for it is the correct solution. Exceptions are fundamentally flawed.

"None" to represent any type of failure sounds similarly fundamentally flawed too.

That's why you need not just an Either/Result type, but proper monads so that you can use the same functions with both.

Re: Software development topics I've changed my mind on

#176
post #2

> Java is a great language because it's boring [...] Types are assertions we make about the world This is less of a mind-was-changed case and more just controversial, but... Checked Exceptions were a fundamentally good idea. They just needed some syntactic sugar to help redirect certain developers into less self-destructive ways of procrastinating on proper error handling. In brief for non-Java folks: Checked Excepti…

I mean on paper they're a good idea and well implemented etc. However, the main two flaws with exceptions are that one, most exceptions are not exceptional situations, and two, exceptions are too expensive for dealing with issues that aren't exceptional like that.

Re: Software development topics I've changed my mind on

#177

It feels like the author is in the middle of the bell curve meme[0], especially with regards to "most programming should be done long before a single line of code is written". [0] https://i.imgflip.com/8tw3vb.png

This is an extremely lazy critique

Hard to argue with that but it's a lazy article too - just a collection of opinions with no reasoning or supporting arguments.

Re: Software development topics I've changed my mind on

#178
post #73
post #22

> Most won't care about the craft. Cherish the ones that do, meet the rest where they are > (…) > People who stress over code style, linting rules, or other minutia remain insane weirdos to me. Focus on more important things. What you call “stressing over minutiae” others might call “caring for the craft”. Revered artisans are precisely the ones who care for the details. “Stressing” is your value judgement, not neces…

Is it ironic that this comment has evoked a discussion on minutiae?

[deleted]

Re: Software development topics I've changed my mind on

#179

> Most programming should be done long before a single line of code is written Nah. I (16+ years developer) prefer to iteratively go between coding and designing. It happens way too often that when you're coding, you stumble across something that makes you go "oh f me, that would NEVER work", which forces you to approach a problem entirely differently. Quite often you also have eureka moments with better solutions th…

Most programming is actually figuring out what already exists and what (and more importantly: why) the requirements are. This is best done long before a single line of code is written.

I think the author is taking a wider view of "programming" than the actual writing of code as the end product. Some of the most important work I've done is spend the time to argue that something doesn't need to be done at all.

Re: Software development topics I've changed my mind on

#180

Earlier quoted context omitted.

Starting with raw SQL is fun. But at some point you find out you need some caching here, then there, then you have a bunch of custom disconnected caches having bugs with invalidation. Then you need lazy loading and fetch graphs. Step by step you'll build your own (shitty) ORM. Same thing for people claiming they don't need any frameworks.

> you find out you need some caching here, then there Forgive my ignorance, but how do ORMs help with adding caching? Or are you implying they obviate or reduce the need for caching?

They do caching themselves so that some of your queries via ORM won’t hit the actual db.
Post reply on HN