Where do you find the time to get productive in functional programming?

Let's be honest here. We're all busy. How can we get productive?

People email me a lot (which is great, btw). They say things like this:

I feel that I can appreciate the concepts of FP (Clojure, and data Scala), but I'm not sure how I can be productive enough to make a decent living.


I have familiarized myself with FP and messed with Haskell enough to get a sense of the ideas in it, and also enough to realize I wouldn't get to productivity with it fast enough to not go broke.

Listen, the last thing I want is for you to go broke learning functional programming. But what most people who ask this don't realize is that most of the time, people don't ever get productive until they're working in the language full time. Hiring managers know this. Every job has its own deployment setup, development environment, and tool chain. Onboarding a new hire is a pain and much of the time you're not productive for weeks. This non-productive time is just part of the cost of hiring a new person.

The takeaway is this: When you're applying for a job, focus on what you have proven you can do in the past and ways you have demonstrated your potential, not on how you're not productive yet. We're going to diver deeper into that as the course goes on. Some jobs will want you to be productive right away, some assume you won't be, and yet others wish their hires could be productive immediately but will settle for unproductive for a time.

Trust me on this. Most of my first few weeks at my new jobs has been wasted setting up accounts for the various systems, configuring my development machine, and dealing with undocumented deployments. But then that sets up the next question: What do you really need to know to be hirable? We'll tackle that next time. If you're not signed up, find the opt-in form at the bottom of this page.

Employers might be willing to train you up on a new language or technology stack, but they're going to want to know that you'll be able to learn what they teach. And they're going to want to know that you understand the principles of good functional code, which are always harder to teach. That's why at PurelyFunctional.tv we focus on the timeless ideas in functional programming. Sign up for a membership today.

Action for the day:

Look over your list of jobs from the previous actions. Pick out a few technologies and libraries that you're unfamiliar with. Look up their web pages and see what they're all about. Are they similar to other systems you've been productive with? Do they have tutorials and getting started guides? Do they have active online communities that you can lean on for answers? Or are they like Oracle that needs a certification to be able to touch?

Chances are, they're not intimidating and you'll be able to study up a tiny bit before an interview, just to be able to talk confidently about them. Once you're hired, you'll probably be working with someone who's already mastered the library and you'll learn what you need quickly. But this research will be invaluable when you're preparing to apply and for the interview. Next time we'll see exactly how much you need to learn in each technology.

More posts in the Career Guide