Lately I find myself caught in the middle of major sporting events. I started the year in Argentina while the Dakar rally was moving its way through the vibrant streets of Buenos Aires. A few months later I stumbled upon the 2009 champions league final and Giro d’Italia festivities in Rome. Whether you’re a fan or not, these sporting events provide a good opportunity to learn from the psychology of the world class athletes and teams behind them.
For instance, an recent article in a pro cycling journal serves as a good reminder that sometimes moving forward requires letting go. As software practitioners we’ve all probably experienced the frustration that comes with holding on to overly complex development environments, inefficient development processes, or seeking new job opportunities based strictly on prior experience alone. In the latter case, a Java developer may unnecessarily limit a job search to only those positions matching his or her current skillset, not realizing the attractiveness offered by development opportunities involving newer technologies such as Ruby on Rails. In recent years, the Rails community has made enormous strides towards simplifying software development while rendering it enjoyable.
In this three part series, I’ll share my first impressions as I let go of prior knowledge investments in J2EE and .NET in favor of this exciting new ecosystem of software development I refer to as “Ruby Land”. I’ll show how long standing best practices in software engineering have been injected into the core culture of its practitioners, and where the lines between artist, entrepreneur, and programmer have blurred in favor of promoting the human side of software development, with an acute focus on continuous testing, productivity, and programmer happiness.
Let’s Rewind a Bit
It may be unfair to single out Java, but the start of this decade saw some consensus among the J2EE development community (2002, 2004, 2006) that the technology’s focus on enterprise computing had rendered it increasingly complex, cumbersome and dissatisfying. Am I the only technologist who ran the other way with the introduction of EJB application servers?
Java has since evolved by leveraging the strong foundation and support of its Virtual Machine with the introduction of dynamic languages such as JRuby and Groovy.
Nevertheless, by the middle of this decade, a window of opportunity had opened, permitting a stream of defections from development communities whose technology had disenchanted its practitioners.
Junior programmers create simple solutions to simple problems. Senior programmers create complex solutions to complex problems. Great programmers find simple solutions to complex problems.
The one defining characteristic of the Ruby/Rails community seems to be the high concentration of great programmers – professionals who continuously seek out simple technologies to help solve their complex problems. As Martin Fowler put it:
Ruby has a philosophy of an environment that gives a talented developer more leverage, rather than trying to protect a less talented developer from errors. An environment like Ruby thus gives our developers more ability to produce their true value.
Programmers At Work
Each generation of software development has always had its share of great programmers. Early on we had the programmers at work – the early pioneers who blazed the trail we continue to walk on today.
When I first entered the professional world in the 90’s, I remember admiring names like Gosling, Bosworth, Bray, Wall, Ozzie, Booch, Lee, Linus, Raymond, Sessions, O’Reily, Box, DeMarco, and McConnell.
The current generation of Ruby/Rails programmers is not only limited to engineers and entrepreneurs but artists as well. As newer languages climbed the ladder of abstraction in recent decades, the programming discipline began appeal to a wider more diversified audience of professionals. Today you find artists, engineers, and entrepreneurs all involved somehow in the task of building software systems or promoting and growing the business of software. Names and monikers include DHH, Uncle Bob, Dr. Nic, and Bates.
These programmers have distinguished themselves by providing exceptional solutions, in the form of code, tutorials, and conferences, that keep Ruby/Rails anchored to its core values while helping grow its usefulness and adoption.
Check back soon as we continue this series Leap Forward with Rails.