9 ms·
I actually do due diligence on tech firms now for a job, and you're 100% right that the tradeoffs change dramatically when the company grows. Which doesn't mean
by iainctduncan 6y ago
I actually do due diligence on tech firms now for a job, and you're 100% right that the tradeoffs change dramatically when the company grows. Which doesn't mean that using the best thing possible for your expert coders at the beginning is wrong. At the beginning, you need every advantage you can get, and if you have expert programmers, give them the sharpest knife you can find! But yeah, once your company is hiring hundreds, or even dozens of devs, and is being sold every handful of years from one investment fund to another, the same set of tradeoffs no longer necessarily apply and .NET and the JVM look pretty good.
I'm writing some Java at the moment for an Android app, and it's just killing me after doing Scheme and Python, but I have to admit, if that start-up had used Java or C#, they might have been better off in the long run.
Hiring really good, disciplined people is super, super hard. My current thought is that if you don't have a super-star CTO who can attract and keep real A+ coders, don't use advanced languages. And if you do have that CTO, do it, but make sure you are architecting to make the rewrite in C# or whatever doable when you sell your company. If I were starting my own business now, I'd use Clojure or Scala or F#, and design things so that in 5 years new owners had a decent path to switch to C# or Java wherever they want.
- rantwasp 6y ago> I'm writing some Java at the moment for an Android app, and it's just killing me after doing Scheme and Python, but I have to admit, if that start-up had used Java or C#, they might have been better off in the long run. that’s a logical fallacy. chances are that if they used Java or C# they might be dead by now (ie it sucks but usually it’s a good problem to have)
- iainctduncan 6y agoI know what you're getting at, and I agree with the sentiment very often, most of the time even. But in this particular case, I don't think so, and believe me, I spent a lot a of time thinking about that....
- miku86 6y agoSo what are your thoughts?
- iainctduncan 6y agoUh hard. First, maybe don't buy companies with bad technical debt, just start from scratch? And always prefer two experts to 10 juniors in the beginning even if you move more slowly at first. I don't know what would have worked well in that particular situation, but if I were to do it again and could influence the original team, I'd use Clojure. I believe the immutability and control of side effects would have been more of a benefit than types. That was where the real problems came from, dynamic ability to create out-of-sight side effects and alter data in unexpected ways all over the damn place. Clojure's immutability plus spec would have been way better.
- vips7L 6y ago> I'm writing some Java at the moment for an Android app, and it's just killing me after doing Scheme and Python Android isn't Java though. It's some frankenstein contraption made from a mutated version of Java from a decade ago. > I were starting my own business now, I'd use Clojure or Scala. I personally wouldn't ever choose Scala for anything. It's tooling is horrible (Sbt is a special hell, and scalac is as slow as a C++ compiler). I'm currently in a code base like you describe, scala core with a switch to Java. It's not fun. Were stuck with these legacy library and framework choices that don't fit into the Java ecosystem and it slows down development considerably.
- iainctduncan 6y agoInteresting, I've only read Scala. Personally I like Clojure but thought I should mention it as I see businesses mixing Scala with Java successfully in my work.
- dbsmith83 6y agoYou can, but interoperability is not that great. It can work, but often it takes a lot of massaging/converting even basic data types. Kotlin has wayyy better interoperability with Java
- jjtheblunt 6y agototally agree about sbt being gratuitously complex. i wonder if Java is judiciously choosing the non crazily digressive parts of Scala, as they both evolve.
- vips7L 6y agoThat is what Goetz said is the plan for Java. Move slow, let other languages experiment with language features, and then take the best features and implement them better.
- eecc 6y agoWell, so far the “better” still remains to be seen... waiting for type-classes to represent monoids, functors, applicatives, monads and foldable. So far I’ve just seen a complex and wild stream API that mimics it in practice, without all the mental model behind it. Oh, and what’s this nonsense with Java Option?! Really?
- import 6y agoAndroidifed Java is the worst thing you can deal to be honest.
- iainctduncan 6y agook that makes me feel better. God it's awful.
- heavyset_go 6y agoCan you just use Kotlin to avoid Android's Java, or are there instances where you need to dip into Java get stuff done?
- suyash 6y agoKotlin is like a tape on the ugly Android architecture, little helpful but still a monstrosity compared to iOS.
- ma2rten 6y agoWhy would you make technical decisions based on what hyponthenictal new owners would prefer in a hyponthenictal acquisition in 5 years?
- iainctduncan 6y agoBecause that's how founders make money. The vast majority of exits now are purchases by private equity firms, and they will do a thorough technical due diligence and look at those decisions and what it will take to run the company the way they want to. (I do those diligences for a living) If you're doing a tiny lifestyle company with no exit plan, you wouldn't. Which ironically, is exactly what I'm doing on my own time, so I use Scheme for that. :-)
- fsloth 6y agoMost exits are purchases by private equity? I had no idea - are there any references for that available?
- iainctduncan 6y agoHere's one report I used for a presentation. The quote of interest: "Over the last 12 months, 75 per cent of the most active “buyers” of $100m+ technology companies have been PE firms. This is despite the fact that the combined cash balances of the “Big Five” tech companies is an eye-watering $330 billion. Today’s most active tech buyers are private equity firms like Silver Lake, Francisco Partners, and Vista Equity. Not Google, Facebook or Amazon." https://ftalphaville.ft.com/2019/01/07/1546862666000/Guest-post--Private-equity---tech-s-best-kept-secret/ https://ftalphaville.ft.com/2019/01/07/1546862666000/Guest-p... One of the things that is not obvious to people coming from the VC world is that once the company has gone from VC to PE, it's likely going to get flipped several more times from PE to PE. At a guess, I'd say 3/4 of what I look at are one PE to another. Depending on the firm, they will sell every 3 to 7 years or so. iain
- michaelpb 6y agoWhat's "hyponthenictal"? You used it twice, but it's not on Google...
- lenkite 6y agoPlease use Kotlin on Android. Java on Android is a de-fanged and lame tiger with half the modern standard library and language features missing. Blame both Oracle and Google for this.
- iainctduncan 6y agoHaving finished my first little app for Android in Java, I will certainly be switching. :-)