

Ask HN: What (enterprise-level) platform should I invest in? - joelhaasnoot

I'm the developer for a startup, and up to now our website/application was developed using CakePhp, a framework that works well but is slowish, and doesn't have a lot of momentum. We have a (M)VP, but are working on a completely new (hosted) service, targeted at medium to large enterprises, with certain pieces maybe being a installable product in the future.<p>What platform should I invest my time/energy in?<p>Node.js is interesting and has momentum, but isn't very mature (especially libraries and addons). I've played around some with Django and Ruby, but should I? What's important in choosing a platform?<p>EDIT: Clarified that it's mostly a service, not self-hosted product.
======
goldmab
A lot of smart people find themselves asking this very question, and they
choose a lot of different answers :)

Anyway, I vote for something in Python with SQLAlchemy and either Werkzeug
(maybe Flask, if it suits you) or CherryPy. Pyramid might also be good, but I
haven't used it much. I tend to avoid Django because the ORM just isn't as
good as SQLAlchemy, and the template language isn't as good as Jinja.

Not sure why everyone is suggesting the standard enterprisey platforms Java
and .NET. You control the server environment completely, right? Go with a
dynamic language for development speed, then. The big ones for the web are
Ruby, Python, and PHP. Of those: PHP is a mess of a language with no big
advantages; Ruby and Python are both great languages with all the libraries
you need (probably :), but I give Python the edge because things in the Python
world tend to have much better documentation.

------
bradleyland
This is an impossible question to ask. Everyone is going to simply recommend
what they use. We're a Rails shop. I love Rails. I'd recommend it to anyone,
but I don't think someone else is "wrong" for using Pylons/Struts/MVC.NET/etc.

Here's what I've observed about programming languages and frameworks. Each
programming language has a community. The priorities of that community will
dictate the direction of the framework, and to a lesser extent, the language.
Frameworks seem to advance/change faster than the core language itself.

So, rather than asking what language/framework you should use, you should be
considering what type of community you think fits your team/product best.

As I mentioned, we love Rails. We've been extremely happy with it, but it's a
fast moving framework that requires constant learning and comes with it's fair
share of drama. I'm ok with that, because our team doesn't mind the pace, and
we enjoy the benefits of a stack that has strong "default opinions". I've
introduced several PHP programmers to Rails, and they're constantly amazed at
the broad nature of the Rails development stack. Aspects like deployment
strategies with Capistrano, and now asset pipelining, are all concepts that
the Rails community embrace and support. However, if you're not down with
having someone else dictate these aspects of your project, Rails probably
isn't a good fit for you. That doesn't make either decision wrong.

If you have an MVP, take your time. Short-list three or four
languages/frameworks and do the following:

* Run through the "hello world" tutorials for each.

* Have a look at the documentation for each. How well does the documentation read.

* Pick a component of each framework, like the ORM, and dig in to the documentation a bit. How detailed is it? Documentation that looks good at first may turn out to be not-so-great when you get in to the details.

* Drop by the IRC channel for each. What kind of discussion is happening? How are new members treated?

* Look for mailing lists related to the language/framework. What types of problems are being solved? What's the focus of the list?

At the end of the day, you're the only one who can tell you what is the right
fit for your organization. Hell, it might be PHP. Don't fall in to the trap of
believing that the right language/framework is going to make your product a
winner. It's the people, not the tools, that make the product go.

------
keyle
Sadly, I'm going to say MVC.NET. Simply because it's something you can bet on.
And it's also something you will always find smart people be able to help you
improve and fix your product.

I'd stay away from newish technologies like node.js (even though I love it),
also I'd stay away from frameworks that have had their days (CakePHP). NodeJs
has fell over a few times on my dev server for unknown reasons. When we talk
enterprise app, that's just a big risk.

I mean you seem to know php. So maybe PHP is not bad to keep betting on. Make
your own home brew of MVC framework that is lightweight and fits your needs.
CakePHP comes with the sources.

Also Code Igniter is a framework I respect, once again in PHP. Developers for
it seem harder to find though. Finally there is Zend. I prefer Code Igniter
over Zend because I find Zend too complex, but it's also a perfectly good
option.

~~~
rufugee
Really? You know, I'd consider MVC.NET for my startup, but here's a few snags
I keep hitting. Perhaps you can provide insight in how to get around them?

\- Cost. I have found no way to accurately estimate what the development and
deployment will cost me initially, nor when I need to scale. BizSpark makes it
affordable for a _very short time_ all things considered, but it's really
sorta like a free crack rock. \- Linux. I simply don't feel comfortable
deploying _anything_ publicly on Windows. It might be more secure now than in
the past, but my experience is on Linux and I feel like it's a whole new world
to come up to speed on the linux side. It's almost as if Microsoft should have
a ".Net for Startups who are used to *nx OSes" class. \- Linux. I develop on
and am most comfortable with Linux. I'd have a hard time spending my days on
Windows 7.

Other than that, certain features of .NET do indeed look interesting. At least
C# as a language has improved over its parent (Java).

~~~
MichaelGG
Well, be sure to look at the Mono project. ASP.NET MVC ships with Mono, so a
lot of it should work fine on Linux.

~~~
aquark
I ran my (slightly profitable) side project on mono and ASP.NET MVC2 for about
5 months before switching to a Windows server on EC2.

Best thing I ever did ... sure it costs 3x what I was paying for a VPS, but it
has been rock solid compared to a number of resource leak issues with Mono,
and the fact that I can admin a windows box with googling everything I need to
do.

If you are developing a for-profit venture and the cost of deploying on
Windows vs Linux is a breaking point for a .NET project then I'd suggest you
look at the business plan again and decide if it has enough profit in it.

------
dshankar
I still recommend Node.js.

 _Reasons:_

1\. Node.js is maturing and growing by the day

2\. You want to invest in something that becomes better [more reliable,
mature, documented etc.] over time, and the Node.js community is going to be
great over the next few years

3\. You _don't_ want to invest in the technology of the previous decade, you
want to invest in the technology of the next decade. Node.js is that
technology.

4\. Building on Node.js lets you have an advantage in hiring because
developers that know Node.js tend to be very good hackers [they were curious
enough to learn something new].

5\. My company, Flotype, is taking Node.js to enterprise with our NowJS
offering. Every single major corporation out there, such as Zynga, Google, HP
etc. are all working on Node.js right now. Enterprises are looking into the
future and are betting on Node.js.

Honestly, there are benefits of sticking with something like Rails, but you
should be looking into the future, and the future is Node.js

~~~
rufugee
Can you point out some substantial applications which have been written with
node?

~~~
dshankar
Yes, take a look at Yammer, Voxer, Gilt Groupe's Hummingbird, Etsy etc.

The list goes on!

------
arethuza
If you are developing an application that you will host then your customers
are unlikely to care what it is written in (although lots of other factors
then become important).

However, if it is an application that the customers will host internally on
their own servers then they _will_ care about the following things:

\- What web/application server is used

\- Whether there is any integration with management/monitoring tools

\- What kind of integration is supported with internal directories
(particularly Microsoft Active Directory) - for authentication and
authorization

\- What database engines are supported and whether you make any "unreasonable"
requests (e.g. not being able to share the database server/cluster with any
other applications)

What kind of application are you thinking of building?

~~~
joelhaasnoot
I clarified above, but we would be hosting it. Pieces might be self hosted,
but that would only be to integrate internal directories. That's something I'm
going to have to look into.

------
tremendo
Making assumptions here. Since yours is a "hosted" service, then your
"enterprise-level" clients/users have no bearing on what platform you choose,
right?. What platform do you have expertise in? Sounds like you already have
something working on PHP, so I take it you know it already, on it there are
plenty of alternatives to CakePHP, from Fuel, CI, Zend (ooh, enterprisey!) and
others. Have you heard that Facebook uses PHP? Do you need to handle hundreds
of millions of users? If not, just about any platform you choose and have in-
house expertise in should be able to handle it.

Get the volume first, and when the platform becomes a problem, you should be
really happy then, while crying all the way to the bank, worry about maybe
hiring some experts in another, more scalable one?

------
mgkimsal
If you're already comfortable with PHP, I'd probably focus on symfony2, ZF2 or
Lithium (zf2 is certainly not stable yet, but might be worth investigating
anyway).

I've worked with Grails a lot and like it. Been working with Rails some and
while many principles are the same, there's a lot of differences (from grails,
php frameworks, and others) which have not really endeared it to my heart. But
it certainly fits some peoples' style.

Most modern frameworks are probably worth getting your head around - it comes
down to personal preference in the end.

I'd also suggest spending more time getting good with a JS framework, and if
there's some good interop between that framework and your server framework of
choice, all the better.

------
niklas
I'd recommend Spring (framework). It's java but it doesn't get in they way or
require you to type excessively. Really handy to annotate your controllers.
You can easily have unit testing and CI server. It's open source but VMWare
backs it.

------
tobylane
Find out what your customers have. I'd expect them to be old, fuddy-duddy,
with Php 4, but some of them might have up to date people like you. I've been
taught this is the time to do a survey of your target buyers.

------
JoachimSchipper
Enterprises? Most are quite conservative. Try .Net or Java and try to make it
possible to deploy on Windows if needed; PHP is okay-ish (and you already know
it). node.js is probably not going to fly.

------
X4
Don't get me wrong, but this question is too naive. So the honest answer to
your question is "C".

But let me tell you why I still like you asking this kind of question, sir.
You've tracked down that your shoes don't to your roadmap anymore. And you've
tried out new shoes. But it looks like you are looking for boots.

So the simple fact that you don't get blinded by a trademark of shoes is
making you 'sympathic'.

Shouts .X4

