4 ms·
> their mistake of using python on the server side I could not disagree with this sentiment more. As always, reality is more nuanced than this. There seems to
by ATsch 9y ago
> their mistake of using python on the server side
I could not disagree with this sentiment more. As always, reality is more nuanced than this.
There seems to be a common theme of startups succeeding with dynamically typed languages, and adding static typing later. However calling the original decision a "mistake" is neither fair nor accurate.
After all, you don't buy a big mansion out of college because you are going to have a family one day. What is right for you today might not be right for you today.
Companies change as they grow, and switching from move-fast-and-break-things to slow and steady mode is just one of those things alongside all others.
Dynamic languages were great at bringing these companies where they are now: it allowed them to be agile and fast to market with a small team.
Are they going to benefit from switching? Yes, absolutely. But was the original decision a mistake just because the priorities and cost/benefit curves have changed now? I really doubt it.
- bayesian_horse 9y agoAnd there still is no prove that statically typed languages are somehow more productive or scaleable. It's just taken as an article of faith.
- Sorreah 9y agoIt's hard to "prove" anything in discussions like this. Having been thrown in a few million loc projects, all written rather badly, I found it way easier to figure out what was going on in the ones with static types. At the very least, if you're inheriting an unknown codebase static types are in my experience a 10x speedup when measuring time to actually getting productive.
- thomasz 9y ago>There seems to be a common theme of startups succeeding with dynamically typed languages, and adding static typing later. However calling the original decision a "mistake" is neither fair nor accurate. People forget how old reddit is. Most good options in this space for statically compiled languages did not exist back then, so there wasn't really a decision to make. It even predates rails.
- crucialfelix 9y agoand that until 2005 reddit was written in Lisp
- slackingoff2017 9y agoHaving used many languages over the years, the biggest advantage I've seen to dynamically typed languages is that they're easier to learn. Python and JavaScript are probably the most common "first languages" taught in school. The dynamic typing and lack of complex IDE, compilation, and build system make then easier to learn. Most founders only have a few years of programming experience. Most startups can't afford to hire anyone experienced. Given these constraints, using these languages makes sense. Dynamic language aren't any faster in practice. You can write quick and dirty spaghetti code in anything. It's only the naive that consider building large, or potentially large, projects in languages without static typing and strong IDE support. In time I've realized that dynamic typing doesn't give any real advantages. It allows you to reuse variables, something that should never be done. It allows you to put different objects in the same array without having anything in common, which also seems like a bad idea. What else do you get? The language still has types they're just not visible when your writing code. I would much rather have compile-time types so I can use auto complete
- dboreham 9y agoCouldn't have written this any better. Also add the need to write shed loads of "test code" in order to reduce the probability of runtime fatal errors that would have been caught by a compiler; and the fact that source code becomes very hard to understand and maintain due to lack of semantic clues from things like types and structure definitions.
- orangecat 9y agoAlso add the need to write shed loads of "test code" in order to reduce the probability of runtime fatal errors that would have been caught by a compiler People always say this, and I've never understood it. Can somebody provide an example of a test that you "have" to write in a dynamically typed language that you wouldn't with static typing? If you're referencing nonexistent properties, then any test that hits that line will fail, and such a test should exist regardless of whether you're using static types.
- 9y ago
- peatmoss 9y agoThis is partly why I'm so curious about languages like Racket, that let you start with easy, freewheeling dynamic typing, and then move, in parts, to Typed Racket. We just need to convince some big software engineering project to start down that road, so we can collect the data about the approach :-p
- watwut 9y agoDynamic language does not make you more agile, it makes changes more risky and refactoring harder. However, large part is that for frontend, static languages are just getting there. You need not just language, but also libraries, tutorials, tooling, IDE and so on and so forth. Typescript nor flow does not absolve you from the need to learn javascript and web in general. If you are working on your first bigger project and still learning good techniques, architecture and concepts, css, having to also learn typescript or flow syntax on top of it off-puts people.