Breaking Down — Python, Ruby, PHP, Java and .Net

Python

  • Mainly just a single concrete way of doing things
  • Objects are strongly and dynamically typed
  • The way you document/documentation is super important!
  • Code has to be clean, simple, sharp, and BEAUTIFUL

Breakdown:

There’s a reason why I chose to transition to Python from the Ruby community. The Ruby community can get pretty wild (been to some pretty crazy Ruby meetups to prove it!) and the documentation you find can show it’s not as consistent and detailed like in Python projects. Even though I love the high energy of the community, I love the quality the Py community puts out in its documentation. However, Python is just pretty much made to give you a single right way of doings things, and why Ruby might have the edge here.

Python has some of the best libraries out there, and depending on the problems you are tackling, Python might be the right choice. Python developers know how to communicate about their code. They document what they do and are process oriented while being pragmatic about their approaches.


Ruby

  • The creator of Ruby made it mind purely for human use
  • Objects are strongly and dynamically typed
  • Testing is critical (R-spec all day!!!)
  • High energy, super passionate and sometimes crazy community (kidding)
  • Node.js integration for server-side work

Breakdown:

You will find an incredible, sometimes overwhelming amount of Ruby open source code. Rails is really an amazing web framework making most web projects easy to implement if you know how to use the tool.

But the flexibility and rapid development cycle also have downsides. Be ready to invest a large chunk of your time keeping your code base up to date and migrating away from abandoned libraries. If you can't rely on caching, the throughput of a successful app will often be limited by the lack of good concurrency support.

Ruby developers are mainly Rails developers and a great majority might have a hard time being able to identify core language features versus framework features. They are often curious, opportunistic (in a good way), somewhat pragmatic and care about code quality/structure and test coverage. Rails developers are typically early adopters due to the fact that the framework itself uses some new technologies by default (Coffeescript, turbolinks, CSS).

Ruby and Rails mainly attract developers wanting to get things done quickly but elegantly. These developers are often product-oriented and care more about the purpose and customer value than the lower-level computational details.


PHP

  • Get stuff done, that’s what matters
  • More weakly typed than some other languages.
  • As long as there is a way to do it, it ain't broken
  • It works and it’s fast
  • Your first web app or your a Wordpress guy

Breakdown:

PHP had its days of glory. It really made web development easy and accessible. However, probably due to the really large amount of new programmers who started with PHP and a not so opinionated community, very few people can write good PHP.

Good idiomatic code examples are hard to find and the result is a community known for poor code quality, lack of tests, security nightmares and an after taste of the early 2000s.

Strong PHP teams with well established conventions, processes and guidelines can accomplish great things, but such teams are rare. One great PHP guy I personally know is a mentor of mines who you can find here at:

http://www.mikestowe.com/


Java

  • Portability
  • The power & performance of C/C++ but with automatic memory management
  • Cares a lot about object-orientation
  • Open source (but owned by Oracle)
  • Slower but safer development cycles

Breakdown:

Java is quite interesting. A few years ago a lot of developers got tired of Java and explored other lands. They often switched to interpreted languages such as PHP, Python, Ruby.

However, Google via Android was able to show that Java in itself isn't as terrible as it seems. There is also a hip trend going on in tech that seems to indicate that Java is actually cool again.

Hiring Java developers isn't too hard since most students coming out of school learned Java, but finding great early-stage startup engineers who want to write Java is quite challenging.

There are still many reasons to use Java’s technology for your new startup, but you might also consider using a more “rapid/flexible” solution in parallel (Ruby, Python, Node…). A multilingual environment brings a lot of value to both the company and the engineers, which is something the Java community seems to be slowly but surely discovering.

Java mainly attracts more classically trained engineers looking for comfortable, repetitive, well known patterns. They will be used to the language, its tools and its natural rhythm. They might not be the most curious developers but they are reliable!


.NET (and C#)

  • A ‘better’ Java
  • Originally designed for desktop and embedded apps
  • More enterprise serious but supposedly can offer you most of Rails’ cool features (lol)
  • Has a conflicted vision of Open Source
  • Slower but safer development cycles

Breakdown:

From a purely language design perspective, C# is quite a bit ahead of Java. Another thing that really impressed me online is the quality level of the available documentation online. But unfortunately C# isn't open source, and that whole environment reeks of licenses and costs, is bit of a turn off.

Microsoft is slowly opening up to open source and more open solutions like Azure. But as a community, .NET is still quite Microsoft-centered. As a startup entrepreneur, you should consider how you feel about open source vs enterprise backed cultures.

Why I went the Ruby & Python Route

While PHP is always thrown in with Ruby and Python, it’s very clear that these two are closer to each other than PHP due to objects being strongly and dynamically typed. Python is quite popular for backend apps (like APIs and SOA), while Ruby is more popular for consumer-facing apps for startup minded folks. While both are a bit slow when it comes to performance, I chose to start with these two languages because I wanted a language that wouldn’t hinder me like C++ or Java and allow me jump straight into the applicable development world without getting caught up in understanding the theoretical brainstorm behind truly thinking like a CPU.

-Omar

Show your support

Clapping shows how much you appreciated Omar Atayee’s story.