What technology should your startup use?
Honestly? I think the answer is "the one you already know". Most of the languages covered in the article are capable of doing 90+% of what the average tech startup needs (a web site, an API, database connectivity). Save yourself the trouble of heading towards the latest hip technology and just write with the stuff you already know how to use. Worry about how flexible and scalable it is once you've actually proven your idea works.
> C#
> We have a better IDE than the Java guys
Biased Java guy here. Completely disagree. Yes VS lets you build nice UIs with drag and drop. But if you compare bare bones Intellij IDEA to bare bones Visual Studio, Intellij IDEA wins everywhere else. All things being equal (that includes programming languages), you can be more productive in Intellij IDEA because its got the fundamentals down and has intuitive shortcuts for doing everything.
Of course I haven't used VS for about 5 years. Keep that in mind. But back then IDEA was light years ahead and .NET devs still thought VS was better.
The whole "C#, VS and MSDN reek of licenses" is getting a bit staid. I'm writing a thick client/desktop app (almost 300k LoC) using Visual Studio Express , SQL Express and online MSDN. Yes, I paid money for Windows and Office, but that has little bearing on being able to write shrink-wrap quality apps with free tools from Microsoft.
This comment[0] interested me. I've never exposed to erlang. Can someone please explain this a bit to me why she said only erlang can do concurrency?
[0]: http://matt.aimonetti.net/posts/2013/08/27/what-technology-s...
I have a different stance on this. The technology that drives the company is strategic business decision, not a technical decision. Sure - create the MVP in whatever you want, the technology is less import - but don't do that for Rev 2. Rev 2, the true architecture of the company should be based on A) what's the right tools for the use case B) are the resources with that talent available to keep from hindering the company? For example, I wouldn't start a company with Go/Rust/etc anywhere but in SanFran - because to most of the country these languages are still fads.
Interesting take, but I'm disappointed that Groovy wasn't broken out into a separate entry. Groovy is a great choice in that you can leverage the entire world of Java libraries, while using a modern, dynamic language that is mostly backwards (syntax) compatible with Java - but without the verbosity. And Grails is a first-class convention-over-configuration framework for building webapps.
IMO, Groovy is absolutely one of the top platform choices a startup could make. We've been using Groovy and Grails at Fogbeam for 2+ years and haven't regretted the decision at all, FWIW.
Clojure seems to get a lot of attention, but don't forget Common Lisp. If you're tired of the reinvention treadmill and want a great language that is actually mature, CL can be excellent. CL also has great runtime support: SBCL (for super performance) and ABCL (if you need the JVM).
There is only one answer to this question: whatever your people are best with. Whether have any "people" (including yourself) who can code or not, you don't need to worry about the technology, you need to worry about your team.
If we're talking about Web apps, technology is much less relevant than the team's abilities. If you're also going for native apps, your options are mostly limited anyway (especially on mobile), but the same principle still applies.
Another reason for going with a familiar technology is that it will be easier for you to find future team members, as you will (presumably) already know the local community, thus avoiding what happened to Reddit.
I have similar views to the author, however I generally respond with "LOLCODE, all the cool kids are using it" because its clear they need to do the work themselves to figure it out.
If they ask "is it sane to use XYZ" I could give them some actually useful information, but sadly people often want to be given the answer rather than get advice.
I'd say this question ranks up there with "Can I ask you a question?" to which I usually respond "You just did...". If you want useful information, just ask for it, your friends and peers are not your parents.
NB: I ported a lolcode interpreter so I do actually encourage people to use it... sometimes...
Asking this question for many readers is like asking "What kinds of shoes should your startup use?"
Value is important. Say that about a thousand times. Once you are creating value, then you can write long blog posts about various tool choices -- or spend time reading them. Until then? These issues are so trivial as to almost not be worthy of discussion.
The interesting thing is that this is exactly backwards from the way most folks are taught programming. You pick the tool first, learn it's secrets, then set about making someone happy. This is a great paradigm if you want to be a corporate programmer, but if you're looking to form a startup you've got the cart in front of the horse. Sure, bring the skills to use all kinds of tech. But don't spend a millisecond focusing on that crap when nobody wants what you're offering.
A lot of guys who say they're in startups are like a severely overweight and out of shape guy who sits around reading running magazines and ordering expensive gear. Yeah sure, that stuff can be dreadfully important. But only in the context of actually doing something. Otherwise it's just bike shedding.
I clicked through in the hope that it would say "it barely matters, just get started and fix mistakes as you go". It started off with promise when he asserted that the people asking this question usually didn't actually care about his answer and that other factors are much more important, but then for some reason we got the long list of languages and bullet points anyway.
> My problem with Clojure is that ... Exceptions are often meaningless and trying to debug someone else’s code is challenging since the language itself is complex and it can be extended by macros. Finally, the Clojure community isn’t really web-oriented, most of the work done in Clojure seems to be data-centric.
You really nailed it here. I really like the language but I really struggled with debugging code and I'd shit my pants every time I refactored.
I had a much nicer experience with Haskell: If your code compiles, it probably works. With Clojure: If your code compiles, it probably doesn't work. I'll tell you something's wrong, but you'll spend most of your development time discovering the cause. That's very frustrated. But to give Clojure the benefit of the doubt, I never felt like my development pipeline was efficient. Unfortunately, I couldn't find a canonical example of a good development pipeline.
I thought this lesson was already learned. You should use the one you're more comfortable with to build an MVP even if it doesn't scale well. You will take care about that later.
I don't know what you mean by Clojure being data-centric rather than web centric. Requests are data, responses are data. Plenty of people are doing web-dev in Clojure.
Edit: I would also disagree with the language being complex. I think the only languages that compete with its level of simplicity are mostly other lisps/schemes.
> Does this technology fit my company’s core values?
This is actually a fantastic way of looking at it. All programming languages have philosophies, and certain "cultures" that they bring along with them.
It's important to realize that technology choices are not just about the technology.
scala is just great (minus compile time). But really. what you know best . (pref type safe)
I agree the lesson has been learned: use what your best with.
BUT currently I am looking to switch it up a bit (Tired of the same old thing) so I have been shopping around to learn a new language while building a web app.
This post was a major help for me not only because of the timing but because I feel a lot more comfortable with what I want to look at.
You can't bash a post for a personally insightful feel into the major options.