Usually brains are quick to sort everything into one of two categories: GOOD and BAD
Some things refuse to go to either category or, even worse, ping pong back and forth until who knows what else gets scrambled up there. My brain still struggles with categorizing the following…
The Scala Language
Until now, autowiring in Spring was somewhere between Candy Corn and Richard Simmons. Let me explain how it got there.
Every ounce of logic in me had been screaming that autowiring is a good thing because it takes away a bad thing: XML. Autowiring should cannonball at light speed into the GOOD half of my brain pool, splashing memories of Oregon Trail out my nose.
But the brain isn’t very logical. It’s mostly associations. We often get hunches, gut feelings, and red flags but we can’t always articulate or why.
Saturday morning (you’d think I’d have better things to do) I finally realized why it’s so hard to let go of XML, this melted green icing of our framework cake. When I inherit a project here’s what I do get my bearings, since there’s absolutely no documentation available because some ivory tower Architecture committee banned wikis for “security reasons” yet our division was too cheap to get SharePoint and too disorganized to keep a few Word docs on a shared drive (yes this is from past experience):
1) Read the JavaDoc. There are only two types of information here: author names (I commit these to memory so I can retrieve formal apologies – it’s a small world and I will meet these people some day) and some banal rewording of class and method names (a comment for a class called DataHelper will say “A class to help the data”)
2) Look at unit tests. Methods like testSetDescriptionOnDataHelper reveal that the agile developers before me were apparently only concerned that Eclipse didn’t screw up auto-generating their getters and setters.
3) Poke around classes, trying to at least figure out which ones are domains. Cross my fingers that design pattern names like DAO and BusinessDelegate are mashed into the class names just to help my brain spatially map the architecture.
4) Grumble about the naive programmer who thought “program to the interface” meant that we should create an army of interfaces to Impl-cripple our architecture.
At this point, my brain begins throbbing under pressure and blood shoots out of my ears.
4) Give up looking at code.
5) Read the configuration XML file. This is the only hope I have of learning anything about the application.
I love the XML I hate. It forces bad developers (and sometimes brilliant developers under ridiculous timelines) to do something kinda good.
What scares the poopoo out of me about autowiring is… what in the world I’m going to do at step 5 when my monolithic XML is gone!?
You’re in IT and you want to increase your value. You ask your friends “What can I do to make more money…. er, um, I mean become more valuable to the, um, shareholders?“
A few years back you’d be told to get certified. In the Java world, this typically starts with the SCJP exam.
But times have changed. Folks don’t look at certifications like they used to. The romance is gone and the certs have lost their former sparkle.
How did certifications fall from grace?
For starters: Open Source. It used to be that certifications were the obvious choice for increasing your value because there wasn’t much else out there. Now, participating on an open source project is among the best ways to make your résumé stand out. You can make the same argument for blogs, which are a great way to portfolio what you already know. Certs are soooo out of fashion. We’re all about Value 2.0.
Some have become jaded by horror stories of some hack that had a dozen certifications but was a ninny-pooper (NNPP) to the project.
Time to put my cynical hat on and question your intentions. Why do you want to be more valuable?
You want to make more money. Right? If that’s all there is to it we can stop right now – certifications probably aren’t right for you. What you need is a get rich quick scheme.
OK, if there’s more to your intentions than dreams of sipping margaritas on your own private island, let’s continue.
My hope is that you simply enjoy becoming better at your craft. Studying for a certification will make you better. Look out! Here come my greatest detractors saying:
“But you don’t learn to program by memorizing APIs, you learn by doing it!”
I can empathize with this. If you are about to have a complicated brain surgery (yes, your brain) would you rather have a surgeon who has performed the same operation 100 times or some dude that memorized a medical encyclopedia? If you have half a brain, you’ll pick the surgeon with experience. If you picked the other guy, you probably don’t have much to lose anyway.
You just had to evaluate two different kinds of knowledge: how-to vs factual.
That’s not totally true. Despite my efforts, this wasn’t a purely how-to vs factual question from your perspective. Think about it. You carried an assumption that the surgeon with how-to knowledge also had an equal amount of factual knowledge but that the encyclopedia memorizer probably hadn’t so much as touched a scalpel. I’m not pointing fingers, these are intelligent assumptions you made.
You don’t have to be a great surgeon to memorize a book and you don’t have to be great programmer to get certified.
BUT – factual knowledge will help you develop your how-to knowledge faster and better. Having factual knowledge of an Intercepting Filter (SCWCD exam) will help you to identify a great potential solution for all the unmaintainable boilerplate code you’ve been putting in your servlets. Having factual knowledge of classpath declarations at the command level (SCJP exam) will help you to troubleshoot a missed dependency even if you’re using an IDE.
Your how-to knowledge scaffolds off of your factual knowledge, just as your factual knowledge builds alongside your how-to knowledge. Learning the facts first is about knowing what tools are available, learning from other’s mistakes, and standing on the shoulders of giants.
Get certified. The factual knowledge will help you to make better decisions as you build on your experience. When you do get certified, be humble and realize there’s still a lot to learn on the how-to side. You don’t want to become a ninny-pooper!
Google Chrome. It’s new, it’s different, it’s fast, it’s simple, it’s clean, it’s functional.
So far, in the couple hours or so I’ve used Google’s new browser, I love it.
Here are the things I like about Chrome:
- the find (Ctrl+F) shows how many matches it found in the page, and which one you’re on (for example, 1 of 2)
- the New Tab page, which shows all kinds of goodies, like most visited pages, search history, recent bookmarks, and recently closed tabs
- the “address” bar (which is so much more) that offers suggestions for searches, web history, and addresses
- the ability to drag tabs into a new window
- incognito mode – the name is great (the idea is cool too)