MongoDB | Functional Programming | Scala | Programming | Java | PostgreSQLYou Must Unlearn What You Have LearnedMarch 14, 2014
While in the middle of his Jedi training with Master Yoda, Luke Skywalker discovers his ship has sunk into the Dagobah swamp. Ever the whiner, Luke complains about how difficult it will be to salvage the ship. That’s when an exasperated Yoda bestows some unforgettable wisdom.
The iconic line from this scene in The Empire Strikes Back is “Do. Or do not. There is no try.” That’s an awesome line worthy of every t-shirt and Big Bang Theory reference. But I think Yoda’s line before that is just as awesome and maybe even more pertinent to someone like me.
You must unlearn what you have learned.
If you want to grow and succeed as a technology professional, embrace this fundamental truth you must. I’ve found this to be true several times in my career.
Learning NoSQL databases
I have spent most of my career working with relational databases like Oracle, SQL Server, PostgreSQL, and MySQL. This meant formal and informal training in normal forms in table design, SQL, stored procedures, and other critical topics for storing and modeling your data as efficiently as possible.
All of that stuff goes out the window with NoSQL databases like MongoDB and Cassandra. In order to understand how to model data well, I’ve had to cast aside all the relational concepts I’ve grown accustomed to and instead learn new ones like column-oriented storage, the value of denormalized data, the CAP Theorem, and whole new query languages. In the case of Neo4J and Titan, I’ve had to disregard tables altogether and consider the implications of storing and querying data in a big graph. It’s hard, but you need to unlearn all the old relational rules if you want to be an expert at modeling cloud-scale data.
Learning new programming languages
You can write a love poem in any language, but it sounds a lot better in French than it does in German.
I have spent most of my career writing code in Java, and I have gotten pretty good at it. I have two Java badges on Stack Overflow, and I even teach a course in Java. You can use Java to build anything, but that doesn’t always mean you should.
For web applications, Ruby on Rails is far superior. For standalone projects you want to get running fast, Python is far superior. For Big Data analytics, Python, Scala, and Clojure are far superior.
I’m simplifying a bit, but the point is that I’ve had to unlearn a lot of the concepts that became second nature in Java in order to excel in other languages. I had to ignore everything I knew about static typing in Java and get used to the pros and cons of dynamic typing in Ruby and Python. Forget those cumbersome null checks in Java; I had to understand how to use Option for a more elegant way of handling null in Scala. I still find myself falling back into old Java habits when I write code in other languages, but as Luke knows, unlearning is never easy.
Passing the PMP certification exam
This is less about technology and more about project management, but Yoda’s words ring true here too. Whether you like it or not, PMP certification is kind of a big deal. Whatever you think you know about project management, you need to unlearn it fast if you want to pass the PMP exam. Not because it’s wrong necessarily. But because you need to be able to articulate the project management principles defined in the PMBOK rather than in your head.
The PMBOK breaks every project down into process groups and knowledge areas, and each project management process has inputs, tools and techniques, and outputs--all with official names. You need to memorize these precisely to pass the exam and become a certified PMP. What you call a “Risk Report”? You better know the PMBOK calls it a Risk Register on the exam, and don’t be surprised if “Risk Report” shows up in the choices to mess with you. If you are a proponent of agile software development and think another season of American Idol sounds more appealing than the idea of a Change Control Board, you better check yourself. If you are a successful project manager (especially an experienced one) hoping to get PMP certified, you have to unlearn the practices and even the terminology you’ve adopted so successfully in favor of the PMBOK’s. At least for the four hours you’re taking the exam.
So if you want to succeed in technology and project management, listen to Yoda and be ready to unlearn what you have learned. Otherwise, that is why you fail.