Andres Almiray is the lead developer of Griffon, a Grails like application framework for developing desktop applications in Groovy, and a committer on the Groovy programming language. I consider him to be one of the most influential programmers in the world. I strongly recommend that you subscribe to his blog and follow him on Twitter.
Andres was kind enough to answer questions that I think are relevant to all of you readers. I hope you learn from them as much as I have. Without further ado…
How do you keep up-to-date with programming advancements and news?
I keep a close eye on RSS feeds on specific blogs, blog aggregators and news sites. DZone is particularly a great source for many things JVM, with some .Net, Ruby, PHP sprinkles here and there. Twitter is another good source for links and interesting readings, but you have to know who you should follow. Local JUG meetings and conferences are a good way to meet people that share your interests, then follow on social networks. Once you’re in you follow the natural process of data selection according to your needs, thus expanding your network as a result. Can’t forget about books too; blogs and online articles are just the tip of the iceberg.
What is the best decision you ever made to improve your programming ability?
I have to say starting an open source project did it for me. It opened the door where people will see your code and give you all kind of feedback. they will take your code and use it in ways you did not foresee. They’ll break it. They’ll mangle it. They’ll enhance it. You can share code and learn from others; it is all about reaching out to developers and users that otherwise you’d never meet. Besides working on open source projects did help me finding employment, which besides a stable income provided me with additional learning opportunities.
What are the most important skills for a programmer to have?
Quoting Heraclitus: “Panta rhei”. Everything flows. A programmer should be able to ride paradigm shifts. Who would have thought back in 95 that Java would be found everywhere years later? (even in space!) A few years ago the ajax revolution changed the web landscape. These days mobile devices seem to be the driving force. Learning a new programming language (at least every 12 months) is a good way to keep you on your toes.
Which programming tools could you not live without?
Vim as editor, Git as source control. These days I don’t use an IDE unless it is 100% Java related, in which case it is a coin flip between Eclipse and NetBeans.
Which programmer has had the biggest influence on you?
I’ve learned a lot from many but I have to save the first spot for Glenn Vanderburg. He is the one responsible for that last nudge that made me jump into contributing back to the open source community. Thank you Glenn!
What first got you interested in Groovy?
I was actually first interested in Ruby after spending a whirlwind Saturday listening to Dave Thomas and Stuart Halloway during an NFJS tour stop in Austin back in 2006. I remember clearly during a panel on the next day that Venkat Subramanian said “Groovy’s future a year ago was very grim, today it’s safe and well”. Because I was not “ready” to embrace Ruby completely (I had strong roots in Java) decided to give Groovy a try, as I heard both languages were close to one another feature-wise. Once I discovered meta-programming via GORM’s dynamic finders I was sold completely, haven’t turned back since and I’m happy with it.
You now lead the Griffon project, what is your motivation for developing it?
I first got into Java because I needed an UI for a term project back in college. Java was a few months old and after seeing applets I convinced the professor to accept Java code rather than C++ code. Java AWT is very quirky when compared to modern toolkits but it did the job, and what’s more it did it better than what I was used to at that moment (low level C/C++ XT bindings), as a result I was hooked into Java. Across the years I keep coming back to desktop app development but longed for a framework that helped speeding things up. It wasn’t until all the pieces came together (Groovy, Grails, SwingBuilder and its siblings) that a framework like Griffon could emerge. Griffon puts a smile back in my face while doing desktop development, I simply cannot describe the joy of doing application development with it. As a result I was able to prototype/finalize more applications in a year than in my whole career (including college projects).
Can you make any predictions about the future of Groovy and Griffon?
Groovy has reached a tipping point IMO, it is a buzzword already. There are a few places where Groovy cannot be found but Java can (android, JME for example), but it’s just a matter of time until that happens. Griffon on the other hand may have a bright future with polyglot programmers, not just Java developers, as it supports (at the moment) 5 languages that can be mixed together on an application: Java, Groovy, Clojure, Scala and JavaFX. On the UI side it is also multi-toolkit. Swing is not the only game in town, Griffon can play nice with JavaFX, Swt, Pivot and Gtk. There may be other toolkits in the future… [dramatic pause] … soon.
Anything you’d like to plug to readers?
Sure, if you’re interested in Groovy/Grails/Griffon then do not hesitate to drop by the mailing lists. You’ll find a thriving community that spans all three projects and then some more (Gradle, Gant, Easyb, etc). Lastly, if you’re really into learning Griffon there’s a book coming up Griffon in Action written by 2 out of 4 of the project’s founders.