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

This is terribly wrong.

Correctness is brought about by ALL of your tools in hand. These tools include unit testing, processes like continuous integration and code review, and so on, in addition to language features such as its syntax and static analysis capabilities.

The job of the programmer is to understand all of your tools and to then use them conscientiously and use them well. There is NO tool a programmer can't shoot themselves with. There's no prima facie perfect tool. And the combination of your tools is a better thing to evaluate anyway. A nail isn't universally useful. With a Phillip's head screwdriver things get a little better; but with a hammer, you'll start moving.

A good architecture and intelligent, disciplined execution is WAY WAY WAY more important than the specific tools we use. Arguments like this one are bike shedding.



Yet, some tools are objectively worse than others. And there is such thing as the right tool for the job.

You can't just push the problem into lack of discipline. People make mistakes, if you stubbornly ignore that fact, you'll get defective products.


Agree 100%. If there's one rule the history teaches us over and over again in every aspect of our lives, is that you should never count on human discipline. You build your systems to work in spite of, not thanks to, human behaviour.


I'm not pushing the problem to lack of discipline. People are certainly fallible.

That's why static analysis is so useful. But there are many other factors to consider -- and sometimes dynamic languages are the better choice.

You have to balance a lot of factors when solving problems. Human fallibility is just one factor in the problem, but it is one among MANY.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

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

Search: