What does your programming language of choice say about you?

Many people in todays development word say "the language doesn't matter, only the results". I find a lot of fault with this logic, as certain languages really teach you to think very differently. If you've ever seen a Java developer try to program Python, you know exactly what I'm talking about.

Developers are trained to think a certain way; some languages focus on Class-based workflow, some on function-based workflow. Some focus on asynchronous development, some are procedural, some are event-based, some are function-call based. The point is, the language you prefer says a lot about who you are as a developer simply because it defines how you program.

I've written down a few of my observations, but please feel free to contribute. If you come up with something very useful I'll add it to this post!

Again, this is not a "people who know X" generalization, it's a "people who prefer X".


This is actually my language of choice, so I'm a bit biased. Python developers tend to "fly by the seat of their pants" so to speak. The python programming language is a scripting language, and usually draws in developers that aren't into big amounts of requirements gathering. You'll rarely find a lot of unit-tests in python projects. Python developers tend to move very quickly, making mistakes but often designing to recover from errors. You'll often find a lot of error-handling in Python code since errors are really expected to happen.


Ruby developers tend to love documentation, and not be nearly as focused on speed. Documentation is so strongly encouraged in Ruby that often it takes much longer to install the documentation then the project itself. Most "Ruby" developers are actually "Ruby on Rails" developers, and more and more features that are really designed just for Rails are merged into the core Ruby system. Ruby is also a scripting language, so ruby devs tend to move fast and expect errors (just like Python developers). However, Ruby is entirely object-based, so Ruby developers often build very OO systems. This makes for a much more readable code-base, but doesn't necessarily make the fastest or best system. Ruby developers often rely on "monkey-patching", where simply importing (or requiring  a module changes core functionality of the language.


Java developers are completely the opposite of Python and Ruby developers. Their primary focus is on documentation before building, and most focus on Test Driven Development (TDD). You'll find many enterprises in this class since Java development often involves a lot of prep work and design before any coding is started. A typical Java project moves at glacer speeds, and you'll find it requires many more developers to build a java application. Java developers also tend to focus on Deployment schedules instead of relying on continuous integration. You'll generally get a very reliable system, but often by the time it's completed it's out of date. Java developers tend to freak out when requirements change.


C and C++ developers are typically hard-core speed freaks. C is a much lower-level programming language, so it is incredibly fast, but also the most complicated to develop. It usually ends up in much harder to follow code, but the optimizations it provide can result in some very fast performance. C developers are usually even slower to complete a project then Java developers, since they have a lot more to manage (Memory management, low-level algorithms, variable types). C developers usually don't rely on pre-built frameworks, and often don't use a lot of external libraries. I've also never met a C developer that was sane.


In today's market, Objective-C developers are synonymous with iOS developers. Typically these are people that really keep up with current technologies as they are rapidly changing. Most Objective-C developers hate themselves, as they have to learn an almost entirely new language every year. These developers tend to move slightly faster then C/C++ developers, but not as fast as Scripting language developers. They tend to be similar to Java developers, but often focus a lot more on User Experience. Since Objective-C is based on C, you'll often find some bleed-over of C/C++ developers too.


Similarly to Ruby and Python developers. HTML/JavaScript developers tend to fly a little faster then other programmers. They almost never rely on documentation or tests, but instead rely on "feeling" and general non-measurable metrics to determine the success of a project. They do tend to rely more on requirements then Ruby and Python developers, but they often gather these requirements themselves, instead of having them dictated to them. These are much more visual people, and they tend to focus entirely on a snazzy UX. They are religious about browsers and technologies, and tend to hate other types of developers. JS developers even made their own way to run JS on a server, Node.js, so they don't have to ever touch other programming languages. JS is event-based, which means they are reactionary. They love making their customers happy, and generally do so with snazzy looking features.


cdthompso1 said…
You really think Java developers are old school waterfall methodology types? My observation has been the opposite -- Java developers were early to embrace CI in the form of CruiseControl, Hudson/Jenkins, etc. -- giving them the ability to react quickly. On deployment rapidity, I think you're right, but fortunately even that's changing as the Java guys embrace DevOps-y principles. Is it the case that you equate Java with big companies, and big companies with slow speed to market?

This is hilarious: "Most Objective-C developers hate themselves..."
Anonymous said…
To stay relevant in the IT sector and meet new challenges, programmers need to take care of a lot more things than they think they ought to. Besides having a robust programming knowledge and a firm understanding of related technologies, candidates need to keep themselves updated with the latest trends and conventions about their favorite programming languages.
Java Classes in Delhi