Live data from Hacker News

Building a Startup - Defending .NET

nashcoding.com

71–80 of 89 posts

Re: Building a Startup - Defending .NET

#71
post #59
post #13

Existing expertise If the goal is to get to a minimum viable product quickly (like most startups) then existing knowledge is a pretty good reason to go with a certain stack. He even mentions having the main algorithm already implemented in C# so at that point it's pretty much no contest. He can always go the route similar to StackExchange in using Linux & Open Source on utility servers (Caching/Load Balancing) and ke…

That's an interesting dilemna. I'm a Java web developer, I know the platform / libraries / tools really well, and know how to get things done with it. I've dabbled with more powerful languages in my spare time, but I've been using Java 8+ hours a day for the last 3 years. If I were to launch a startup, should I go with the "cool shiny powerful" language, or should I stay with the boring verbose language that I know w…

Personally I would say do not make your first big project in a new language your startup, it'll take a lot longer. It's hard enough just getting the thing out the door without having to also deal with the pain of learning new paradigms, new dev tools, constantly having to look stuff up and wondering if you're doing something fundamentally wrong.

Force yourself to start writing other things with the language you want to use TODAY. I would start writing utility stuff in something else until you're comfortable with it.

It's also a little funny to see Python and Ruby described as more powerful that Java! I guess powerful is a mutable word, but personally I'd consider them less powerful but faster to develop in (for a dev at the same skill level in both languages).

Re: Building a Startup - Defending .NET

#72
post #21
post #9

As far as I can tell the author's reasons for deciding to use C# can be summed up as "I'm used to it from previous work, and some useful libraries related to my project are available." Those are perfectly valid reasons, but they aren't really much use to anyone who doesn't share those circumstances, and don't really have anything to do with upsides and downsides of the language itself. That would have been far more r…

> Also, "I'm buying a MBP" translates to "I'm serious about startups"? Well, that was tongue in cheek. But really, just the opposite-- I'm saying that I'm a total tool who's caved in to the trendy peer pressure of the startup culture. That culture shuns .NET on principal and there's lots of pressure to never use it for a startup. And if you don't believe there's peer pressure to use a MBP, try going to Red Rock or th…

> try going to Red Rock or the Dojo with an Acer laptop. You can just feel people judging you.

I have gone to equivalent places/events with my Acer laptop, without anyone judging me. (It is running Ubuntu, mind).

Re: Building a Startup - Defending .NET

#73
post #68

Earlier quoted context omitted.

Have you done anything with Grails or Groovy yet? My experience is that it's probably the easiest transition for Java devs, because Groovy is something that can be interchanged in each file with "plain old Java".

I haven't mentioned Grails / Groovy, because it always seemed to me like some kind of a "hack" to improve Java with some nice syntactical sugar / DSLs / dynamic programming. Scala / Clojure seemed more interesting, and I focused on them. I've only tried a small "create-your-blog-in-15-minutes" Grails tutorial, and it was actually quite effective. I haven't revisited it since then. Thinking about it, my Groovy avoidan…

I've been a bit annoyed at Roo - more precisely, Spring, because they seem to give Roo more love/attention than Grails.

Personally, yes, I think perhaps it was a bit 'dumb' of you to dismiss Groovy. ;) Yes, it's 'syntactical sugar', but having that in Java is great. You can say 'hack' or whatever, but it's still effective and bringing productivity and reduced boilerplate to otherwise plain-old Java.

Scala and Clojure - I've nothing against them, except that they do seem to split the attention on 'alternative JVM' languages. That dilution hurts the chances of any one platform taking hold as the 'next thing' in the Java world, and personally, right now, most of my eggs are in the GR8 world, for many reasons.

I do think Scala is different enough from traditional Java development that broad migration from existing Java developers won't happen, whereas Groovy is so potentially similar that there's little reason for an existing Java dev to have trouble adding Groovy as they learn it. It's not an 'all or nothing' proposition.

If you have any further interest in Groovy/Grails and have any questions, I'd be happy to help if I can - email me directly if you want.

Re: Building a Startup - Defending .NET

#74
post #59

Earlier quoted context omitted.

That's an interesting dilemna. I'm a Java web developer, I know the platform / libraries / tools really well, and know how to get things done with it. I've dabbled with more powerful languages in my spare time, but I've been using Java 8+ hours a day for the last 3 years. If I were to launch a startup, should I go with the "cool shiny powerful" language, or should I stay with the boring verbose language that I know w…

> If I were to launch a startup, should I go with the "cool shiny powerful" language, or should I stay with the boring verbose language that I know well? I think the danger with this decision is that we tend to get a "grass is always greener across the street" mentality. I have yet to find a programming language that has no serious warts. Certainly different languages have different warts, and thus suit different job…

Very good points.

In contrast, with longer-established languages, the shortcomings tend to be well-known and acknowledged, and the emphasis in the community is often on sharing the most effective workarounds or alternative techniques.

Exactly. A good example of this is dependency injection. In Java, it was hard to mock dependencies, like you would do in a dynamic language. This forced the Java community to look into dependency injection / interface programming, to make the code testable. Dependency injection then lead to better componentization / modularity (some could say that one shouldn't have to use dependency injection if one were using a "better" language, though ;) ).

I also like established languages, because there are also established best practices. You don't have to reinvent the wheel.

Certainly different languages have different warts, and thus suit different jobs better. However, just because we haven't used a language enough to appreciate its warts, that does not mean we will not discover them to our cost at exactly the wrong moment in our new project.

That's the reason why I'm leaning on using a JVM language. I know the platform and the tools, and I can always "fall back" to Java if needed (for performance critical code or whatever).

Maturity is important, but I don't want to miss out on the power and expressiveness of higher level languages ( http://www.paulgraham.com/avg.html ). Using powerful languages is also useful when hiring good hackers ( http://www.paulgraham.com/pypar.html ).

Re: Building a Startup - Defending .NET

#76
post #59

Earlier quoted context omitted.

That's an interesting dilemna. I'm a Java web developer, I know the platform / libraries / tools really well, and know how to get things done with it. I've dabbled with more powerful languages in my spare time, but I've been using Java 8+ hours a day for the last 3 years. If I were to launch a startup, should I go with the "cool shiny powerful" language, or should I stay with the boring verbose language that I know w…

Personally I would say do not make your first big project in a new language your startup, it'll take a lot longer. It's hard enough just getting the thing out the door without having to also deal with the pain of learning new paradigms, new dev tools, constantly having to look stuff up and wondering if you're doing something fundamentally wrong. Force yourself to start writing other things with the language you want…

It's hard enough just getting the thing out the door without having to also deal with the pain of learning new paradigms, new dev tools, constantly having to look stuff up and wondering if you're doing something fundamentally wrong.

Yes, but it's also more fun :) I think fun and passion are important for a startup. But I agree that one needs to strike the right balance, and pragmatism is good when you want to ship.

Force yourself to start writing other things with the language you want to use TODAY. I would start writing utility stuff in something else until you're comfortable with it.

I think that's indeed the best course of action. I've read about people who started using Groovy for unit testing at first. Another good example is my colleague who built a small customized issue tracker in Grails for the Java project they were working on.

"It's also a little funny to see Python and Ruby described as more powerful that Java! I guess powerful is a mutable word, but personally I'd consider them less powerful but faster to develop in (for a dev at the same skill level in both languages)." By "powerful", I didn't mean "performant". Due to the JVM, Java is faster than Python / Ruby. I used the word "powerful" in the same sense as Paul Graham did in his essay on Lisp ( http://www.paulgraham.com/avg.html ), that is, a higher level, more expressive language. With today's hardware, using a high-level, slower language is not a problem anymore: we now optimize for human time (development time) instead of machine time.

Re: Building a Startup - Defending .NET

#77
post #55
post #37

Earlier quoted context omitted.

> ASP.NET MVC is closer to WebForms than Rails. Could you please elaborate on this? I've written many websites in all three technologies and I don't see how standard ASP.NET is at all like ASP.NET MVC. Standard ASP.NET is a train wreck and a simply abysmal environment to be stuck in. People managed to make successful websites in spite of it, not because of it. ASP.NET MVC may be a bit behind the times and a total rip…

I guess I owe an explanation. Most significantly, much of the Rails magic comes from Ruby. So when you say the two (WebForms and ASP.NET MVC) aren't alike, its like you are forgetting that they both use C#. The DLR is a small step, but it isn't in the same league. We can disagree that Ruby is such a significant productivity boost over C# - that's fine. But, if you think language is completely irrelevant, then imagine…

"ASP.NET MVC shares some stuff with Rails, but easily as much with WebForms."

It's pretty simple to make ASP.NET MVC to use a different view engine (I prefer String Template, but there are plenty others) - arguably that pretty much removes any lingering flavor of the WebForms.

Re: Building a Startup - Defending .NET

#78
post #68

Earlier quoted context omitted.

I haven't mentioned Grails / Groovy, because it always seemed to me like some kind of a "hack" to improve Java with some nice syntactical sugar / DSLs / dynamic programming. Scala / Clojure seemed more interesting, and I focused on them. I've only tried a small "create-your-blog-in-15-minutes" Grails tutorial, and it was actually quite effective. I haven't revisited it since then. Thinking about it, my Groovy avoidan…

I've been a bit annoyed at Roo - more precisely, Spring, because they seem to give Roo more love/attention than Grails. Personally, yes, I think perhaps it was a bit 'dumb' of you to dismiss Groovy. ;) Yes, it's 'syntactical sugar', but having that in Java is great. You can say 'hack' or whatever, but it's still effective and bringing productivity and reduced boilerplate to otherwise plain-old Java. Scala and Clojure…

That's interesting. I definitely need to check Groovy out. Plus, the lead developer is a fellow French, so there is one more reason to try it ;)

I agree with your views regarding Scala. It's a really interesting language with a ton of cool concepts, but I fear it might be "too powerful" for the "standard entreprise Java programmers". Java is good, because it is simple. With Scala, you use different paradigms, which might be harder to grasp. It's easier to shoot yourself in the foot / write complicated code. But I guess that's the price to pay for using a high level programming language?

Here is Martin Odersky's take on this debate: http://lamp.epfl.ch/~odersky/blogs/isscalacomplex.html

Gosu also looks interesting as a Groovy contender, though you won't like it, since it dilutes the alternative JVM languages even more ;) http://gosu-lang.org/ http://news.ycombinator.com/item?id=1881924

Re: Building a Startup - Defending .NET

#79
post #55

Earlier quoted context omitted.

I guess I owe an explanation. Most significantly, much of the Rails magic comes from Ruby. So when you say the two (WebForms and ASP.NET MVC) aren't alike, its like you are forgetting that they both use C#. The DLR is a small step, but it isn't in the same league. We can disagree that Ruby is such a significant productivity boost over C# - that's fine. But, if you think language is completely irrelevant, then imagine…

"ASP.NET MVC shares some stuff with Rails, but easily as much with WebForms." It's pretty simple to make ASP.NET MVC to use a different view engine (I prefer String Template, but there are plenty others) - arguably that pretty much removes any lingering flavor of the WebForms.

I see how changing the view engine addresses the 10 bigger points that I made.

Re: Building a Startup - Defending .NET

#80
post #59
post #13

Existing expertise If the goal is to get to a minimum viable product quickly (like most startups) then existing knowledge is a pretty good reason to go with a certain stack. He even mentions having the main algorithm already implemented in C# so at that point it's pretty much no contest. He can always go the route similar to StackExchange in using Linux & Open Source on utility servers (Caching/Load Balancing) and ke…

That's an interesting dilemna. I'm a Java web developer, I know the platform / libraries / tools really well, and know how to get things done with it. I've dabbled with more powerful languages in my spare time, but I've been using Java 8+ hours a day for the last 3 years. If I were to launch a startup, should I go with the "cool shiny powerful" language, or should I stay with the boring verbose language that I know w…

This is not actually an "either-or" question.

For a minimum viable product, you need to do the minimal amount of work, whatever that turns out to be for the startup you are building.

Is it something like DropBox? In that case, you need to write at least part of your product as a Win32 Shell Extension, and regardless of how well you know Java, it is MORE work doing that in Java than in C++

Is it the new GoogleDocs/ZohoOffice? In that case, about 90% of your work is in JavaScript or a language that compiles cleanly to JavaScript. This might be Java (by way of GWT), but probably isn't.

Is it a new "enterprise software system"? Java is probably a good choice, even if Java wasn't your strongest point.

And if it HAS to be java for some reason, there's Clojure, Jython, Mira, LinJ and a few others that let you switch slowly and incrementally, without having to decide or make a tradeoff.

Post reply on HN