Skills, skills, skills!!! Which ones should I learn? Which ones do I need to land the job, to impress the client, to prepare for the future, to stay relevant? What programming languages should I learn? What technologies should I master? What business books should I read? Is there a course I can take, or a certification I can enroll in? Should I focus on being a specialist to ensure I am always the "go-to person" despite commoditization, or should I concentrate on generalist skills so I can always see the forest for the trees? A mixture of both? Is there a Roadmap? A Bible? A Guru? Help!!!

Look. Languages change, technologies evolve, and so-called experts come and go. Just when that awesome course ends something new pops up that the course didn't cover. Just when you became an R ninja, Python came around the corner and became the de facto. Just when you finally mastered how to lay out a kick-ass data pipeline using Hadoop, Spark became the new thing. Just when you figured out how to sell "personalization" to clients, some bad press killed the buzz word. What is an aspiring professional to do? There will only ever be one answer to this...you need to learn to solve problems.

But you want specifics. You want to know where to focus your efforts. But this isn't the right way to think about it. If you start with specifics you become myopic to the skills you DO have and try to apply them to every problem. As Maslow's hammer tells us, using one tool for all purposes is fraught with danger.

Problem solving is THE skill you need to learn and the ONLY way to learn it is to jump into problems and attempt to solve them. I promise you that everything will fall into place if you make problem solving your 'career lifestyle.'

"The languages you learn, the technologies you use, and the way you frame your thoughts will be a byproduct of your attempts to solve the problem."

When you are trying to solve challenges you don't use a language because it happens to be hyped. You don't use a technology stack because some expert of the day said this is how you do big data. You don't use a specific implementation of leanbecause you read an article by a millionaire who swears by it. When you are solving problems the only thing that matters is SOLVING THE PROBLEM. What is it the client actually needs? Put all the toys that the cool kids are playing with to the side and have an honest conversation about the problem that needs a solution. This is the only criterion that should govern what approach you take and...here's the key...your skills in the decided-upon tools of choice will grow as a result.

Not only will this be a much better way towards the solution, but it will deeply ingrain in you the specifics of that particular language or technology or overall approach. You will learn where it works and and where it doesn't. You will witness the weak points and the strong points first-hand, and will actually see how the solution maps to the pain points of the organization you are trying to assist.

When I was younger I used to tutor university students in math, physics and chemistry. They would look at the problem and then look at me with a blank stare until they finally asked "so how do I solve this?" I would answer "I don't know." The look of "what the hell am I paying for" washed over their face for a few seconds until I said look...there is your textbook, here are your notes, and here is the problem. I bet we can figure out how to solve this...shall we try? Of course I did know how to solve these problems but that wasn't the point. I wanted the students to realize that the only skill they should be leaving university with is the ability to use the resources available to them to solve a challenge. THIS is the skill that is timeless and will ALWAYS serve you in the future. Not a particular approach, language or technology; those things change.

Okay, but what about the fact that companies are looking for specific skills and if you don't have them you won't land the job. First off, any company worth your time knows that they are hiring you for your ability to use available resources to solve a challenge and you should be able to cite examples of this. But even this aside, does it make sense to start with these languages and tools? Sure. Those languages and tools are popular for a reason. But the point is it won't always be that way. If you want to learn Python, go solve a real problem with the language. Go grab a public database and see if you can find something interesting or even make a cool data-product out of it. If you do great, if you fail even better. Jump in and fail constantly and you will be awesome at Python...but more importantly you will be awesome at solving problems. So when Python goes away you bring your ability to look at data, think about the problem, talk with domain experts, work through solutions and build something cool with you.

Show me any R ninja, Python guru, Hadoop wizard or Six Sigma Blackbelt and I am not impressed. These are just the tools and trends of the day and they won't be here tomorrow. Show me how you try and solve problems. Show me what you have built and most importantly tell me how you have failed. If I threw you into the jungle with unknown legacy tools or a hot new language that just popped up could you solve the company's challenges?

Instead of listing languages and tools in an attempt to engineer your future go solve a problem. Go solve a hundred problems. Then take a look at the list of skills you have; the languages you know, the technologies you've mastered, and the approaches you take. Your career will always be a byproduct of the challenges you've tried to solve.