Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think more he was saying that types don't help you not break things, your preparation is worthless, you're not actually helping bugs, and when something does break your far slower at fixing it.

So not "move fast break things".

More "Don't over prepare, fix things fast."

The only thing I don't like about all these people talking about types is when you need to make a program change and that change has large impacts on other areas, like in a core API.

I do not want to make a change in a core API and have my program build without me addressing all of the places that would be affected by that.

This is where types shine, and this is where I think types are important.

If a language abandons types that is fine, the dynamic possibilities are amazing and I'd love to have them.

But I will not give up that ability to make a refactor in core code and then turn be able to address all of the places that that change breaks things.

Am I wrong in that?

Is my desire to do this just rooted in my own bad programming habits?

I'm curious if anyone has any thoughts.



> I do not want to make a change in a core API and have my program build without me addressing all of the places that would be affected by that. > This is where types shine, and this is where I think types are important.

This is also where tests shine, which are far more expressive than the type systems we have today. Tests are usually not as convenient as types though, but it's another parameter to consider when choosing the right solution for a given scenario.

> But I will not give up that ability to make a refactor in core code and then turn be able to address all of the places that that change breaks things.

This will be less satisfying since it's anecdotal, but I'll offer up my experience anyhow: I rarely find myself refactoring. When I do refactor, it's almost always in the "changing the factoring" sense, in that callers are none the wiser to changes since the interface is the same, which limits the fear of breakage. That's not to say that it always turns out this way, but churning regularly on interface boundaries would be a "smell" to me.

To further beat the drum from above, I'd additionally expect the tests to help prevent breakage whether the program's dynamically or statically-typed. I review plenty of code, much of it in Scala, which puts a heavy emphasis on its strong typing. When there aren't tests, I request them or write them myself, and that uncovers bugs more often than not despite the programs passing the type checker.


You’re not at all, and it’s one of the main reasons that I feel confident hopping into a codebase that I’m not as familiar with in something like Rust than say Ruby or JavaScript. The lack of strict types makes understanding how a program works very difficult, and being told this by the compiler or interpreter all but impossible.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: