5 ms·
I agree with you but I think it's pretty straightforward how this sort of thing happens: 1. Startup builds thing fast in dynamic language because they need to
by realbarack 9y ago
I agree with you but I think it's pretty straightforward how this sort of thing happens:
1. Startup builds thing fast in dynamic language because they need to optimize for development speed and iteration, not maintainability or scalability.
2. Startup grows and continues to hire for expertise in the tech stack they are mostly already using.
3. Repeat for some years and some hundreds of engineers and you arrive at this exact scenario.
- fiatjaf 9y agoIsn't it faster to write everything in Go, for example, that has a compiler guiding you all the way and you rarely get runtime errors? I feel my developer time very much "optimized" when writing backends in Go than when I wrote then in Python (I also tried Node, which was a disaster).
- xapata 9y agoEmpirically? Doesn't seem like it. But it's hard to run a good controlled experiment. The confounding effects of the team members, the project goal, and the vagaries of business are too noisy.
- jimnotgym 9y agoGo wasn't a serious option for Instagram though. According to Wikipedia Instagram launched in 2010, Go launched in 2009. That would have made them very early adopters, was the library support there back then like it was for Python? Just because there may be better tools now, should they scrap their working code that earned their fortune?
- fiatjaf 9y agoI'm not talking about Instagram, I'm answering the parent comment, which talked about developer productivity in general.
- lmm 9y agoWell, OCaml, Haskell or maybe Scala would've been mature options in 2010, combining safety with language-level productivity that's comparable to Python, though the extent to which web frameworks available in those languages at that time were Django-equivalent is arguable. (Personally I would - and did - happily choose Scala with Wicket over Django in 2010) In terms of what Instagram should do now, I'd say they should do what Facebook did: introduce thrift or similar, gradually move business logic into backend services written in more suitable languages, leaving the Python to eventually become just a thin web frontend. Retrofitting types onto code involves a lot of the same effort as rewriting it into a better language, and the rewards for the latter are higher, IME.
- shados 9y agoWe're getting into a world where languages finally have type systems that dont suck for fast development. This wasn't the case until very recently. And many of the current options only became realistically viable in the last few years (or months!). We still have to work with the world as it exists. Not as it should be or will be. And even with the crop of modern languages, its often still faster to start with less optimal languages and fix shit in the 1/10 chance you're actually successful.
- mbid 9y agoWhat are you talking about? Haskell is 30 years old.
- rspeer 9y agoYou must have missed the part about "the world as it exists" and "fast development" and pretty much the entire point of the post you're replying to. Haskell remains impractical for many use cases, it is not used much outside of academia, it's not documented to be used outside of academia, and it didn't even have a working package manager until a few years ago.
- dmitriid 9y agoYeah. And you need 20 language extensions to sit at the top of your every file to do anything useful with it.
- switchbak 9y agoMany in the Haskell community talk about being guided by their types, perhaps you're seeing a similar benefit? Not sure why the negative vibes toward this comment, I think it's fairly sensible (of course, this is a very subjective subject).
- deleted 9y ago[deleted]
- meowface 9y agoIt's probably faster to verify that your Go code is working as intended, but many would argue that dynamically typed/interpreted languages are faster to write code in than statically typed/compiled languages. Others would argue that the pure "writing code" part isn't the majority of what takes up a developer's time. There's no one right answer.
- AlexCoventry 9y agoI think a lot depends on how solid your requirements are. If there's no need for further design as you develop, types are great. If you're writing one to throw away, they're a waste. If you're chopping and changing as you write, it can go either way.
- gxs 9y agoThis is exactly it. People are running a business, not writing an a treatise on code maintenance and hygiene.
- blub 9y agoOk, then the business men among us should learn their lesson, that agility matters. The software developers among us should also learn their lesson: don't build large-scale software in dynamic programming languages unless you can afford to spend time later adding a static type system on top.
- walrus1066 9y agoI'd think the business men at Instagram have been very happy with the agility of development, that got them to a $2.8 billion revenue p/a company. More than enough to cover the engineering effort to help improve the maintainability of the code.
- yen223 9y agoConsidering the company that bought them runs on PHP, perhaps we should all ditch Python altogether.
- gxs 9y agoI agree - there's just always a condescending tone in the way people question the technical practices in hindsight of companies that are successful.
- LrnByTeach 9y ago> 1. Startup builds thing fast in dynamic language because they need to optimize for development speed and iteration, not maintainability or scalability. > 3. Repeat for some years and some hundreds of engineers and you arrive at this exact scenario.