MIT vs New Jersey Style Software Development
One of the things I keep running into is engineers that have a particular engineering style, that don’t realize it’s a style. These engineers tend to butt heads with others that have a different style. This post is about one of the bigger divisions within the software community. MIT vs New Jersey
MIT is pure. It’s perfection. It’s lisp. It’s rust. It’s abstraction and the platonic world of forms. It does the “right thing”. This style strives for excellence, and will not compromise design for anything.
New Jersey is pragmatic. It’s Go and C. It’s unix-style hackery. It’s focused on doing something useful. It’s aiming for utility and any other consideration is secondary.
I’m a New Jersey man myself, but I have a respect for the MIT school. Go is my jam, but I like my lisp for some side projects. That being said, I generally pick Common Lisp, which is the most wart-filled and pragmatic of the lisps, as opposed to the pure-functional elegance of the scheme family.
I don’t think there’s anything inherently wrong with either of these approaches. I think some problems lend themselves more readily to one or the other. Start-ups unsure of market fit can usually benefit from the New Jersey approach, but crypto packages should probably make sure they get absolutely everything correct up-front.
But instead of stepping back and seeing that they’re styles, I often see the MIT people accuse the New Jersey folks of lacking rigor and delivering half baked software. While the New Jersey adherents will claim that the MIT guys only ever deliver white papers and whiteboard diagrams and never actually produce any software.
Until next time.
- Gene