Friday, 28 December 2012

Hi, I'm a [INSERT LANGUAGE HERE] developer!

There is a trend among software developers to define the job by a language or framework we either use most or have most experience with.  If someone claims to be a "PHP developer", this has far different implications than if someone says they are a ".NET developer".

This post relates to the implications of a few of these titles.

If you consider yourself one of the below and feel misrepresented, please do not be offended!  These are based on my own perception and experiences.  Please feel free to comment on the article to tell me I am wrong.

PHP developer

For developers at a similar age to myself, it is often a developer's first language after HTML.  This is because it is/was cheap/free to get some hosting that allows PHP to be run.  They can make a simple website and want to make it more dynamic.  Still using PHP implies the developer has not ventured out of this comfort zone.

Also, the ability to hack something together in a script (coupled with the fact that the language has horrible inconsistencies) means a PHP developer will often be perceived as someone who can put something simple together without much thought given to architecture or testability.

While there are some PHP projects like this (not at DM!), it is possible to write good PHP.  Even Facebook (not exactly small-fry) is partly still using PHP.
Development can be test-driven with PHPunit, and there are frameworks (such as Yii) which are a great way to enforce MVC.  I hope that kids who are picking up a bit of PHP will find Yii or similar, and will learn a bit about MVC (though better still, they could learn web programming with rails or something).

Java developer

While the language is pretty old now (and is a bit dated in some respects) the Java ecosystem is thriving.  Its open nature has led to the availability of many libraries and frameworks.  Additionally, the Java ecosystem is not just limited to the Java language.  Scala, groovy, fantom, clojure and many more.

If someone introduced themselves as a Java developer, I would assume they had an understanding of architecture that I might not assume a PHP developer had.  I would assume they had the capacity to produce more testable, maintainable code.  Most importantly, due to the number of libraries and frameworks available, I would assume a Java developer had experience in to identifying what available tools best suit the task at hand (albeit still within the Java-ecosystem).

.NET developer

While .NET is a framework rather than a language, I do not often hear people introduce themselves as a C# developer or VB developer.  A key difference between Microsoft's approach and the Java ecosystem is Microsoft has historically hidden the implementation from the developer ("The framework takes care of that for you!") while in Java-world you have more control.

In my view, a .NET developer has experience with the framework which means they can put something together to do the task at hand in the Microsoft-standard manner.  The project will be something that another .NET developer can look at and understand.

Ruby developer

Ruby got very popular with Ruby on Rails, so I would expect a Ruby developer to be a web developer with a firm grasp of MVC.  Due to the relative youth of Ruby's popularity, I would expect a Ruby developer to have worked in an environment where using newer technology is more important than established solutions, so they are likely to be aware of what is going on in the software industry.

Javascript developer

5 years ago, I would have thought a Javascript developer has the ability to help make webpages look nice, such as changing the colour of a button when hovering over it.  Now that webpages have become increasingly complex, front-end javascript is no longer trivial.  Frameworks such as javascriptMVC have appeared to help front-end developers.

Now, with the rise of node.js, I would not even make the assumption that a Javascript developer primarily works on front-end code.
Like the Java ecosystem, Javascript is becoming the "bytecode of the web", in that there are languages that will compile to javascript.   These are gaining popularity, such as coffeescript, dart and even clojurescript.

Similar to the Java developer, a Javascript developer could have experience of large projects, making decisions on libraries and frameworks to use, test-driven (with mocha, for example) with the architecture of the system in mind.

Conclusion

Here at Digital Morphosis, we do not consider ourselves any of the above.  We are Software Developers.  Rather than falling into any of the categories above, we write maintainable code targeted to the task at hand.  We are polyglot programmers, using the best tool(s) when they best suited.


What this means for clients

The old saying says "If you only have a hammer, you tend to see every problem as a nail".  Without being restricted by a language or framework, we are able to think about solutions that more restricted developers might not be open to.

No comments: