18/33by Matt Cholick
I've completed another class as of this week. 18 of 33 credits into my Master's. I'm far enough along now that I'm able to plan out the remainder of my coursework semester by semester. Of my remaining credits, 9 will be in implementation projects. Project work is always valuable; that kind of activity is where I learn the most. Another 3 credits will be in a course that looks pretty interesting. The rest of my degree should just fly by; July of 2012 will arrive in a heartbeat.
I didn't learn a whole lot in this semester's course. I picked up a few small things, but the work mostly covered material I already knew. It's tricky trying to choose courses from a one paragraph description. I want to learn things relevant to what I do that don't cover material I already know. This is difficult when graduate coursework selection here is so limited.
I absolutely love Git. Loving one's source control system might seem like a strange thing, but that probably just speaks to the problems with less modern tools. Git fundamentally changes a developer's relationship with source code. It empowers developers to embrace change instead of minimize it. The tool becomes a collaborative partner in development instead of an adversary to overcome. Git meets the criteria for a revolutionary change in thinking: I couldn't ask for it because I didn't even understand that I was missing what I gives me.
Groovy is another slick technology. It's a language that makes development fun again. I wasn't doing much personal dev just because Java pisses me off in many ways. The language just hasn't evolved. Even with someone else at the helm, the language designers have stated they're unwilling to experiment or embrace new paradigms. I really don't want to completely abandon Java for my own dev, though, because it's what I work on 40 hours a week. Even if it's not the best tool, I've gained so much expertise and continue to do so daily. I want to leverage that skill. Enter Groovy. Groovy is Java with 10 years of hindsight. It's syntax is clearer, cleaner, more concise, and more modern. It's a language that values my time. At the same time, though, it can leverage the entire existing Java ecosystem of libraries and tools.
Gradle is the third thing I've learned to use this semester. It's an extremely powerful build tool. Maven, despite being the industry standard, is fundamentally broken. It enforces convention to the point that actually accomplishing the job of building your project becomes a constant fight with the tool. I'm not going to start a Maven bashing session; the problems with Maven have been well covered. Instead I'll just say this: builds with Gradle are extremely flexible and maintainable and I'm happy to have it in my personal technology stack.
And now it's time summer and Android development.