Help a Startup use Clojure!

767 views
Skip to first unread message

Jarrod Swart

unread,
Mar 11, 2014, 5:09:43 PM3/11/14
to clo...@googlegroups.com
I'm about to be an early employee at a small startup.  

I will be the first technical hire and am a competent but not extraordinarily experienced developer. The founders know this and hired me based on soft as well as technical skills.  

I don't want to be the first technical employee and make a poor technology choice that chains this startup from the beginning.

My goal is to convince the CEO and other early stage executives of the benefits of using Clojure in place of PHP.  All the early founders have worked in places that use PHP, and I have worked as a PHP developer with some of them at other companies.  For the past year I have used Clojure in my personal projects and am comfortable with the language.

I expect the following objections:

* What is the talent pool like (for Clojure) and can we outsource less important tasks to other developers.
* What advantages does this technology offer over something like PHP (from a business perspective)?
* How will you cope with technical challenges?

I have my own opinions but I would love to hear the feedback of others.  If you have good counter arguments to these or other objections you have heard in the past I would like to hear those.  If you have been in my position I would love to hear about that experience as well.

Also consider that these people are technical but not programmers.  Any benefits have to make sense from a business perspective as well.

Thank you for your help!

Gary Trakhman

unread,
Mar 11, 2014, 5:27:33 PM3/11/14
to clo...@googlegroups.com
Some Observations: 
We took on a relatively inexperienced java developer, threw her into emacs, gave her 'Joy of Clojure', and she was able to make contributions within a month or two.

It doesn't have to be Clojure-everything, maybe PHP would be a great fit for the front-end web/templating based on the experience pool, and Clojure could be used for backend web services where it can give the most bang for the buck.

Clojure also means 'the JVM', so you open yourself up to that talent pool and large array of solutions: hadoop, storm, for example.  Depending on your use-cases, you might need this flexibility eventually.  Having deployment and dev experience on this platform from the get-go means you'll be ready when you need it.


--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Jarrod Swart

unread,
Mar 11, 2014, 5:31:43 PM3/11/14
to clo...@googlegroups.com
Gary, 

Thanks for your observations.  I agree it doesn't necessarily have to be all or nothing.  I'm hoping to get as much as possible insight before I present to the founders.

Christopher Poile

unread,
Mar 11, 2014, 6:01:10 PM3/11/14
to clo...@googlegroups.com
Jarrod,
The book Clojure Programming has a chapter (19) dedicated to your very question. I think the most important piece of advice is "Be Prudent" by choosing where Clojure fits and by starting slow. Try to find small self-contained problems and solve them. This will demonstrate the language's usefulness far better than any logical argument could.

Jarrod Swart

unread,
Mar 11, 2014, 6:14:44 PM3/11/14
to clo...@googlegroups.com
Christopher,

Absolutely I agree.  I enjoyed that book very much.

I think I misstated my question a bit in that I don't need to be convinced of the value, but rather how best to relay Clojure's benefits to non-technical business types.

Thanks for your input.

Sean Corfield

unread,
Mar 11, 2014, 6:51:55 PM3/11/14
to clo...@googlegroups.com
On Mar 11, 2014, at 2:09 PM, Jarrod Swart <jcs...@gmail.com> wrote:
> My goal is to convince the CEO and other early stage executives of the benefits of using Clojure in place of PHP. All the early founders have worked in places that use PHP, and I have worked as a PHP developer with some of them at other companies. For the past year I have used Clojure in my personal projects and am comfortable with the language.

I'll play devil's advocate here (as someone who's gone up in front of those lovely VC folks when trying to get a startup off the ground)...

What are you building?

Why do _you_ think Clojure is a better choice than PHP?

> * What is the talent pool like (for Clojure) and can we outsource less important tasks to other developers.

The talent pool for Clojure is much smaller than the talent pool for PHP. On the plus side, I'd expect competent Clojure developers to be, on average, much better developers than "competent" PHP developers. Outsourcing may be much harder and/or much more expensive for Clojure than PHP.

> * What advantages does this technology offer over something like PHP (from a business perspective)?

The scalability of the JVM and the huge ecosystem of Java and JVM languages and libraries. But PHP developers will likely be much cheaper and just as plentiful (as Java/JVM developers - and far more plentiful than Clojure developers). And unless you happen to hit it enormously big, scalability may not be a real problem for you (and Facebook is a poster child for scalable PHP even tho' they've done a lot of weird stuff to get it there).

If you're building an extensive web site / web application, PHP has much more maturity in that area and has well-established frameworks and content management systems, and a huge pool of (average to cheap) talent available.

If I was your CEO or another early stage executive, I'd be pretty skeptical of using something as left field as Clojure for web development. If your core business is big data or AI or something else that relies on complex data / structure analysis, I'd be more sympathetic. Or if most of the core early team were already experienced with Clojure. But in the early stage, you'll need to move fast, pivot early and often, and be prepared to throw away a lot of demo / prototype code so picking something you're all comfortable with might well be a better business choice than some cool tech you might all like to use.

Sean Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)



signature.asc

Jarrod Swart

unread,
Mar 11, 2014, 7:17:43 PM3/11/14
to clo...@googlegroups.com
Sean,

Thanks for the reply and insight.  I completely agree on your points.  

We will be in a 12 week accelerator program so it is quite possible that this code & business could fail.  Our work is likely going to be more back-end API centric as a point of integration for other businesses rather than our own "mega-app".

I feel competent in my skill-set and due to learning Clojure the past year I've improved overall.  I think speed of development would likely be the same or faster in Clojure.  Writing a form, evaling for correctness and then moving on is far superior to the PHP equivalent.

The only places I feel uneasy are in the deployment arena because with PHP it's usually just: scp files to server & write a cron.  Clojure gets a bit more involved and I sometimes feel that learning JVM idioms of Unix equivalents can be lackluster.  For example I'm still unsure of the best way to do scheduled jobs in a Clojure app.

I appreciate your input.

Jarrod Swart

unread,
Mar 11, 2014, 7:29:06 PM3/11/14
to clo...@googlegroups.com
Sean,

Oops I didn't realize you were asking these questions:

  • What are you building? 
    • An application for businesses to help leverage the power of crowds in non-traditional "crowdsource" environments.  
    • The main use-case for many will be that of integration with-in their own applications and I suspect the application will be more API than App centric.  Sorry for being vague but I'm still learning too.  I will know more for sure when I actually have the meeting with the founders.
  • Why do _you_ think Clojure is a better choice than PHP? 
    • Due to the limited number of developers (just me initially) I think Clojure presents a tool chain that is familiar and fast.  Dynamic programming in a highly iterative development environment means that I can solve challenges that the business will face rather than challenges presented by the programming language.
      • Clojure is to programming what Lean\Agility are to business process
      • Wanting to work with a set of tools also goes a long way toward dealing with the other hardships of an early stage company.  If I'm making less money and failure is a big part of the equation I want to enjoy what I'm doing.  I think future hires would agree.
    • The heavy amounts of text we will deal with is much easier to handle with the JVM than with PHP.  PHP support for UTF-* is fairly bad (compared to Golang or Clojure) and I have had enough personal trouble with it.
    • Again though we are not "Big Data" the first processing bottleneck will likely be dealing with large quantities of text.  This is something that Clojure and the JVM have a lot more options for dealing with.
    • The JVM platform means that when it comes time to optimize for performance we have options rather than an app rewrite.


da...@dsargeant.com

unread,
Mar 12, 2014, 5:00:06 PM3/12/14
to clo...@googlegroups.com
I just spent the day writing this document for my boss, called "The case for Clojure."  I hope it helps.  We are in exactly the same boat, so it should be extremely relevant.

P.S. If the company I work doesn't make the switch I plan on looking for a new position.  So hit me up if you're in need of another Clojure developer.

David

The case for Clojure.docx

Jarrod Swart

unread,
Mar 12, 2014, 5:39:48 PM3/12/14
to clo...@googlegroups.com
David,

Awesome thanks for sharing!

I hope it works out for you!

Alan Moore

unread,
Mar 12, 2014, 8:01:15 PM3/12/14
to clo...@googlegroups.com
My 2 cents worth...

  1. PHP is a dying language IMHO. The alternatives are just too compelling unless you have an existing code base in PHP.
  2. Javascript is the lingua franca (or assembly lang) of the internet for the time being and probably the foreseeable future.
  3. Many webapps are moving to the client-side instead of the server centric PHP/CGI oriented designs of yesteryear. Again, this means Javascript (and/or ClojureScript) primarily.
  4. You can adopt Javascript as your primary language for both the server (nodejs) and client (browser.) This way you can use ClojureScript to target both on an as-needed basis. This also lets you leverage lots of existing libraries on both sides.
  5. If you need to target mobile devices PHP might be somewhat limited. There are tons of Java (Android) and/or Javascript/ObjC (iOS) options to target mobile clients.
  6. My guess is that most API integrations will be via either Java (on the server) or in Javascript on the client.
  7. On the server you can serve different endpoints using different technologies. Maybe your support.xyz.com is a hosted PHP forum app but your REST API is built using Clojure/Ring.
  8. Many externally exposed APIs are actually network protocols (REST or ZMQ, etc.) and are thus largely language neutral (assuming there is a language binding for your chosen protocol.) However, I suspect that using PHP will be very difficult from a protocol/binding point of view.
Hope this helps. Good luck!

Alan

Jarrod Swart

unread,
Mar 12, 2014, 8:06:25 PM3/12/14
to clo...@googlegroups.com
Alan,

Thanks for your input!  ClojureScript is something I have wanted to try more but it seems even more cutting edge than Clojure.  It might be too much effort to try and tackle that now. 

I do agree though that Clojure+Ring is a great back-end setup for connecting to with JavaScript.

Best,
Jarrod

Mike Haney

unread,
Mar 12, 2014, 8:47:33 PM3/12/14
to clo...@googlegroups.com
Have you considered node.js? It's fantastic for building web services, very easy to deploy (Heroku), and should scale well enough that most startups won't outgrow it (and if you do, that's a very good problem to have).

You can still build your app using Clojurescript, either for the entire thing, or just in areas where it makes the most sense, which would probably be more palatable for your investors and other business types.

The thing is, most developers would probably rather use something like Clojurescript once they learn it, compared to writing raw JavaScript, so that would actually aid your adoption.

Framing the choice as PHP vs Clojure makes it an all or nothing decision. But shifting the discussion to the merits of node.js, you can easily justify why it makes sense for your application. Then you can address the JS vs CLJS issue, and even if you lose initially, you still have the stealthy approach of using CLJS to solve a hairy problem in an isolated part of your app, then leveraging that to revisit the merits of using it on a larger scale.

t x

unread,
Mar 12, 2014, 8:50:41 PM3/12/14
to clo...@googlegroups.com
I personally recommend ClojureScript + Erlang.

As for convincing your boss to use Erlang, ask him about WhatsApp. :-)

Timothy Baldridge

unread,
Mar 12, 2014, 10:06:16 PM3/12/14
to clo...@googlegroups.com


--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
“One of the main causes of the fall of the Roman Empire was that–lacking zero–they had no way to indicate successful termination of their C programs.”
(Robert Firth)

Savas Alparslan

unread,
Mar 13, 2014, 3:13:58 AM3/13/14
to clo...@googlegroups.com
Bad mouthing PHP only leads to more resistance.

This video would help.

Master Plan for Clojure Enterprise Mindshare Domination
http://www.youtube.com/watch?v=2WLgzCkhN2g


Nando Breiter

unread,
Mar 13, 2014, 11:49:15 AM3/13/14
to clo...@googlegroups.com
I'm developing applications in CFML, which runs on the JVM. If you use the open source Railo version, it is possible to run Clojure and CFML side by side, sharing data structures between them, which should allow you to refactor, or initially build, those parts of the application that would benefit from Clojure, while still leveraging the fast and easy development that CFML provides. My long term plan is to look at leveraging Clojure's strengths within the current codebase I'm developing. The short-term plan is to rapidly get the app to a stage where it is feature complete using CFML only.

CFML has its legacy warts (as I'm sure PHP has as well), which can be simply avoided when writing code. But it will be very easy for a developer coming into CFML to get up to speed with the language. With the proper guidance, a developer new to the language can be productive in several days to a week's time.




Aria Media Sagl
Via Rompada 40
6987 Caslano
Switzerland

+41 (0)91 600 9601
+41 (0)76 303 4477 cell
skype: ariamedia

Alan Thompson

unread,
Mar 13, 2014, 12:54:30 PM3/13/14
to clojure

Hey, I love your write-up! You should put that in a blog post so more people can read it & share it.

Alan

Sean Corfield

unread,
Mar 13, 2014, 2:58:01 PM3/13/14
to clo...@googlegroups.com
As the author of cfmljure, it's not something I'd recommend anyone to use in its current form and combining CFML and Clojure (as we do at World Singles) is a bit of a dark art that I wouldn't encourage others to attempt, unless they're already up to their eyeballs in CFML, and running on Railo (instead of Adobe's commercial product), and they are desperate to use Clojure _as well_ rather than _instead_.

I'm working on a new version of cfmljure that will be MUCH easier to use but I'm wrestling with classloader issues (due to quirks in how both Railo and Clojure deal with classloaders).

And good luck persuading anyone that a startup, with some PHP and some Clojure experience, should consider CFML / Railo instead :)

Sean
signature.asc

Nando Breiter

unread,
Mar 13, 2014, 3:52:10 PM3/13/14
to clo...@googlegroups.com
Ah, that's a pity cfmljure isn't as easy to use as I thought it was. In the tradeoff between skilled Clojure developers being a rare and perhaps expensive commodity and the need to rapidly develop an app to fulfill business goals (and keep your job), cfmljure seems like it could offer a means to slowly integrate and learn Clojure as skills and a real need develop.



Aria Media Sagl
Via Rompada 40
6987 Caslano
Switzerland

+41 (0)91 600 9601
+41 (0)76 303 4477 cell
skype: ariamedia


Jarrod Swart

unread,
Mar 13, 2014, 7:20:33 PM3/13/14
to clo...@googlegroups.com
Oh wow, thanks for all the responses!

I'm certainly not making it a PHP vs. Clojure all or nothing debate.  Anything other than PHP would be helpful, not simply because I want to bad mouth PHP. After 2 years working with it I know firsthand its shortcomings for building actual applications.

While ClojureScript is interesting I think the overhead of learning ClojureScript + NodeJS + functional thinking in a callback oriented world a tall order.  I will already have enough to overcome that a new "stack" is likely not a good choice.  

The benefits to Clojure are known and my primary interest is in how to express that to business types.  With the resources in this post I think I have that.

Thanks again for all the feedback!

Víctor R. Escobar

unread,
Mar 14, 2014, 8:39:50 AM3/14/14
to clo...@googlegroups.com
Hi everyone,

about David's document, I think you need to realize that it is a perfect blog post for programmers. In a business usually the focus is in the benefit (increase benefit or reduce costs). If I would be your boss perhaps I would understand that you want to switch to another technology (for some reasons that maybe not everyone understands) that will make the maintainability more expensive and the extension more complicated. At least as it is exposed in the document and as it can be understood by a businessman.

Unless they trust your opinions more than their business reasons, try to convince your bosses without show them a single line of code. It is just the way some brains are cabled. Give them the economical reasons they want to hear. I am inventing some of them:

  • Faster prototyping to explore new business ideas.
  • Easily maintainable product and large easier to test (to avoid unexpected surprises)
  • Faster reaction to error recovery (recovery on critic situations)
  • The code is scalable and parallelizable nearly without modify the setup (remember how many startups died from success).
  • It is highly portable because it runs in the  archi-well-known JVM (insert now all benefits from marketing java).
  • A new hire can be ready to program in the time he learns how the company works (say 30 days).
  • If you require to move to another technology you can port it with lower costs than other languages (available directly in java, and easy to translate to other lisps...)
And perhaps the most important: the best code for a company is the code that doesn't have to be written. It is not what you have to do, it is how much it brings to the company without waste company resources: show the technologies that you can already use tomorrow for no cost at all because they are already implemented and you only need to set them up (mention servers and hava open source projects which make mostly all the work and just need to be adapted to make everything).

If you really want to convince them to get a yes, show them a working prototype that looks to work (I repeat, a prototype).

I hope this business approach helps. I had to learn it in the hard way.

David Sargeant

unread,
Mar 14, 2014, 10:36:49 AM3/14/14
to clo...@googlegroups.com
I wanted to give a little history and a follow-up to my own situation.  I originally crafted "The Case for Clojure" document for the developers in my company.  The idea was to make a compelling argument for migrating our decent size codebase from PHP to Clojure.  I would agree that showing your non-technical boss a bunch of code is not going to be the best approach.

The outcome for me personally, was that my employer decided not move forward with Clojure, and stick with PHP.  In addition, I have left the company and am currently pursuing full-time employment as Clojure developer.  Please hit me up if you are a Clojure company looking for a passionate Clojure developer.

David

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/8A3dnQIm100/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+u...@googlegroups.com.

Ravindra Jaju

unread,
Mar 20, 2014, 6:19:36 PM3/20/14
to clo...@googlegroups.com
David,

While it is a very detailed and good document, my reaction is that it isn't an appropriate one for business to make the switch. I suspect they will not see any "value." I'm not sure what background your boss has, but if the boss isn't into code and only cares about managing the team and the product and the timelines, this document will not help sell.

I'm in a similar boat, but luckily in a position to drive some change. I'm the only technical guy (out of 2), but the product was developed for a long time before I joined (outsourced). It's PHP, and cost and finding people to do it were the main reasons my partner went that route.

I'm a big fan of Clojure, with little to no Javascript experience. And we are building (of course) a web application. PHP will not go away any time soon from our app. So, I'm trying to find the best way to move away from PHP, and into Clojure-land, but via familiar territory.

Right now, I am building some new features for our Chrome extension, and need Javascript. Every time I tried doing JS, I would compare (mentally) with how easy it would be in Clojure. I finally just threw away a big part of it (a pre-existing version) and started coding it in Clojurescript. It's just the beginning, but I've seen substantial progress in a single day, given my JS experience - lack of it. So, this is the way I am going.

[I wrote the above a week ago, and it was in draft]

And just now, we released a chrome extension, with a big chunk written with clojurescript (and reagent, sablono, storage-atom, and really great help from weasel). Extremely happy about it, and excited because of the new-found confidence in being able to do UI.

I feel the safest way to go (with nay-sayers, or hurdles along the way) is the one-small-step-at-a-time. But I'm just repeating common knowledge, which is always profound with the benefit of hindsight. :)

My 0.02 is a currency unit of your choice.

Ravindra




--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages