DSL book on hold...unfortunately
Well we got the first round of reviews back from the technical reviewers and there’s a lot of work to be done. So much so that we’ve decided to put the book on hold while we regroup and figure out if/how we are going to address the issues that the reviewers found with the book. In a lot of cases it is going to require a complete rewrite of the example (and hence the chapter itself). Personally I feel the core is there, but maybe the examples weren’t as fleshed out as they could have been.
Now of course I’m a little embarrassed that I announced the book before it was done, but that’s what happens sometimes. Not sure at this point whether or not the book will continue, taking some time to regroup/rethink things and see if it is something that I want to push forward with.
I will keep everyone up to date here on the progress of things once I’ve decided what to do. In the meantime I am going to get back to some of my back-burner projects (a few of which have some DSLs in them ;-).
DSL book in progress 6
Now that things feel a little bit more final to me I thought I would take this opportunity to announce the book that’s been keeping me from blogging. The tentative title is Creating DSLs using Java and Groovy and it will be published by Pragmatic Programmers. I started working on this idea after last years No Fluff Just Stuff where I saw Neal Ford speak on DSLs and I talked to him briefly about a project I was working on. His talk inspired me to push forward with using DSLs for code generation specifically using Groovy.
The book will cover both Java and Groovy techniques for writing DSLs, as well as have some general guidelines for writing DSLs. We also have a chapter on ANTLR and JavaCC for writing external DSLs using Java. I tried to cover as much as I could of Groovy meta-programming and some of the additional capabilities of Groovy that make it a good language to write an internal DSL on top of, but there’s only so much space ;-).
We just sent off the book for peer review, which means its about half-way finished, maybe a little more. We are currently shooting for a release date sometime early next year, which looks very doable at this point, but I expect a ton of edits to come back from this first review.
On a final note I just want to say what a pleasure it has been working with the PragProg crew. I love, love, love their book build system and my editor Susannah rocks. I have had a blast working with them so far on this book and am looking forward to finishing this up and getting it published.
Passionate Programmers
This post started as a seed from interviews that we are holding for the project I’m working on for my day job (Kuali). The vast majority of the programmers that are working on this project are the cream of the crop from each institution. That isn’t to say that I’m one of those or that the rest of the programmers are not excellent, they are, but it’s a higher standard. This standard makes us that more critical when we choose new programmers that are going to come on to the project.
One of the qualities that I tend to look for (without really knowing it until recently) is passion. When someone comes in and just does the bare minimum or a little above that to get the job done it tells me that they have no passion for what they do. All of the good or excellent developers that I know all have a passion for programming. To them it isn’t just a job, it’s something they enjoy doing and they enjoy expanding their horizons, not because it is a part of their job, but because they truly enjoy it.
I think that this passion extends further than just this though, most of the good programmers that I know are passionate about other things and aren’t afraid to share their passion with other people. This of course can lead to either a healthy discourse or heated debate in the office or elsewhere ;-), this is what happens when you get passionate people together. Of course one of the tricks of a truly good developer is to know when to put your passion (and your ego) on the shelf for the betterment of the project or task at hand.
Further along this line of thinking lies creativity, in his piece ”Hackers and Painters”, Paul Graham describes the commonality between hackers and painters
What hackers and painters have in common is that they’re both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They’re not doing research per se, though if in the course of trying to make good things they discover some new technique, so much the better.
And honestly I couldn’t have said it better myself, but I’ll elaborate on this idea a little further based on my personal experience. Every really good programmer that I’ve met has had some other creative bent, most of them have been musicians of one form or another, or they have really been into photography, painting, etc. I think that this derives from the desire to create, to make. One of the reasons why I like programming is because I like to make stuff, for me this has also extended to music, film, and writing (in fact I started out writing fiction way back in grade school). But it is the act of making, the act of getting something to work that fascinates me still. Whenever I hear a problem that needs a solution my mind immediately shifts into “maker” mode and I start thinking about how I could so do that - if only there were like 20 of me all of the cool ideas I’d ever had would be done ;-).
This all leads back to passion, if you are truly passionate about what you do then you will do better at it, it really is that simple. But that doesn’t mean that that is where your passion has to end, I would say that if you are currently playing around with the idea of learning how to draw, or learn how to play an instrument, do it, don’t wait.
