Functional Programming For Dummies
Book image
Explore Book Buy On Amazon
For many people, the reason to learn a new language or a new programming paradigm focuses on the ability to obtain gainful employment. Yes, functional programmers also have the joy of learning something new. However, to be practical, the something new must also provide a tangible result. The purpose of the information here is to help you see the way to a new occupation that builds on the skills you discover through the functional programming paradigm.

Traditional functional programming development

When asked about functional programming occupations, a number of developers who use functional programming in their jobs actually started with a traditional job and then applied functional programming methodologies to it. When coworkers saw that these developers were writing cleaner code that executed faster, they started adopting functional programming methodologies as well.

Theoretically, this approach can apply to any language, but it helps to use a pure language (such as Haskell) when you can, or an impure language (such as Python) when you can’t. Of course, you’ll encounter naysayers who will tell you that functional programming applies only to advanced developers who are already working as programmers, but if that were the case, a person wouldn’t have a place to start. Some organization will be willing to experiment with functional programming and continue to rely on it after the developers using it demonstrate positive results.

The problem is how to find such an organization. You can look online at places such as Indeed.com, which offers listings for the languages that work best for functional programming in traditional environments. At the time of this writing, Indeed.com had 175 Haskell job listings alone. Jobs for Python programmers with functional programming experience topped 6,020.

A few websites deal specifically with functional programming jobs. For example, Functional Jobs provides an interesting list of occupations that you might want to try. The benefit of these sites is that the listings are extremely targeted, so you know you’ll actually perform functional programming. A disadvantage is that the sites tend to be less popular than mainstream sites, so you may not see the variety of jobs that you were expecting.

New functional programming development

With the rise of online shopping, informational, and other kinds of sites, you can bet that a lot of new development is also going on. In addition, traditional organizations will require support for new strategies, such as using Amazon web Services (AWS) to reduce costs (see AWS For Admins For Dummies and AWS For Developers For Dummies, by John Paul Mueller [Wiley], for additional information on AWS). Any organization that wants to use serverless computing, such as AWS Lambda, will likely need developers who are conversant in functional programming strategies. Consequently, the investment in learning the functional programming paradigm can pay off in the form of finding an interesting job using new technologies rather than spending hour after boring hour updating ancient COBOL code on a mainframe.

When going the new development route, be sure you understand the requirements for your job and have any required certifications. For example, when working with AWS, your organization may require that you have an AWS Certified Developer (or other) certification. Of course, other cloud organizations exist, such as Microsoft Azure and Google Cloud. The article at zdnet.com tells you about the relative strengths of each of these offerings.

Creating your own functional programming development

Many developers started in their home or garage tinkering with things just to see what would happen. Becoming fascinated with code — its essence — is part of turning development into a passion rather than just a job. Some of the richest, best-known people in the world started out as developer entrepreneurs (think people like Jeff Bezos and Bill Gates). In fact, you can find articles online, such as the one at Skills Crush, that tell precisely why developers make such great entrepreneurs. The advantage of being your own boss is that you do things your way, make your mark on the world, and create a new vision of what software can do.

Yes, sometimes you get the money, too, but more developers have found that they become successful only after they figure out that creating your own development environment is all about business — that is, offering a service that someone else will buy. Articles, such as the ones at hackernoon.com and Codeburst, tell you how to make the transition from developer to entrepreneur.

The functional connection comes into play when you start to consider that the functional programming paradigm is somewhat new. Businesses are starting to pay attention to functional programming because of articles such as this InfoWorld offering. When businesses find out that functional programming not only creates better code but also makes developers more productive, they begin to see a financial reason to employ consultants (that’s you) to move their organizations toward the functional programming paradigm.

Find functional programming jobs at forward-thinking businesses

Many businesses are already using functional programming methodologies. In some cases, these businesses started with functional programming, but in more cases the business transitioned. One such business is Jet.com, which offers online shopping that's like a mix of Amazon.com and Costco. You can read about this particular business at Kiplinger.com. The thing that will interest you is that Jet.com relies on F#, a multiparadigm language similar to Python from an environmental perspective, to meet its needs.

Most languages want you to know that real companies are using them to do something useful. Consequently, you can find a site that provides a list of these organizations for Haskell and for Python. Languages that are more popular will also sprout a lot of articles. For example, the article at https://realpython.com/world-class-companies-using-python/ supplies a list of well-known organizations that use Python. You need to exercise care in applying to these organizations, however, because you never know whether you’ll actually work with your programming language of choice (or whether you’ll work as a developer at all).

Doing something really interesting as a functional programmer

Some people want to go to work, do a job for eight to ten hours, and then come home and forget about work. This information isn’t for you. On the flip side, some people want to make their mark on the world and light it on fire. This won’t work for you, either. This section is for those people who fall between these two extremes: Those who don't mind working a few extra hours as long as the work is interesting and meaningful, and they don’t have to manage any business details. After all, the fun of functional programming is writing the code and figuring out interesting ways to make data jump through all sorts of hoops. That’s where job sites like Functional Works come into play.

Sites such as Functional Works search for potential candidates for large organizations, such as Google, Facebook, Two Sigma, and Spotify. The jobs are listed by category in most cases. Be prepared to read for a while because the sites generally describe the jobs in detail. That’s because these organizations want to be sure that you know what you’re getting into, and they want to find the best possible fit.

These sites often offer articles, such as “Compose Tetras.” The articles are interesting because they give you a better perspective of what the site is about, and why a company would choose this site, rather than another one, to find people. You learn more about functional programming, as well.

Developing deep learning applications with functional programming

One of the most interesting and widely discussed subsets of Artificial Intelligence (AI) today is that of deep learning, in which algorithms use huge amounts of data to discover patterns and then use those patterns to perform data-based tasks. You might see the output as being voice recognition or robotics, but the computer sees data — lots and lots of data. Oddly enough, functional programming techniques make creating deep learning applications significantly easier. This article is interesting because it looks at a number of languages that are important in the world of functional programming. You can learn more about the world of AI in AI For Dummies, by John Paul Mueller and Luca Massaron (Wiley), and the world of machine learning in Machine Learning For Dummies, also by John Paul Mueller and Luca Massaron (Wiley).

Writing low-level code with functional programming

You might not initially think about using functional programming methods to write low-level code, but the orderly nature of functional programming languages makes them perfect for this task. Here are a few examples:
  • Compilers and interpreters: These applications (and that’s what they are) work through many stages of processing, relying on tree-like structures to turn application code into a running application. Recursion makes processing tree-like structures easy, and functional languages excel at recursion. The Compcert C Compiler is one example of this use.
  • Concurrent and parallel programming: Creating an environment in which application code executes concurrently, in parallel, is an incredibly hard task for most programming languages, but functional languages handle this task with ease. You could easily write a host environment using a functional language for applications written in other languages.
  • Security: The immutable nature of functional code makes it inherently safe. Creating the security features of an operating system or application using functional code significantly reduces the chance that the system will be hacked.
You can more easily address a wide range of low-level coding applications in a functional language because of how functional languages work. A problem can arise, however, when resources are tight because functional languages can require more resources than other languages. In addition, if you need real-time performance, a functional language may not provide the ultimate in speed.

Helping others in the health care arena with functional programming

The health care field is leading the charge in creating new jobs, so your new functional programmer job might just find you in the health care industry. If you regard working in the medical industry as possibly the most boring job in the world, read this ad. The possibilities might be more interesting than you think. Oddly enough, many of these ads, the one referenced in this paragraph included, specifically require you to have functional programming experience. This particular job also specifies that the job environment is relaxed and the company expects you to be innovative in your approach to solving problems — which is hardly a formula for a boring job.

Use your functional programming skills to work as a data scientist

As a data scientist, you're more likely to use the functional programming features of Python than to adapt a wholly functional approach by using a language such as Haskell. According to this article, Python is still the top language for data science.

Articles such as the one at kdnuggets.com seem to question just how much penetration functional programming has made in the data science community; however, such penetration exists. This discussion details good reasons for data scientists to use functional programming, including better ways to implement parallel programming. When you consider that a data scientist could rely on a GPU with up to 5,120 cores (such as the NVidia Titan V), parallel programming takes on a whole new meaning.

Of course, data science involves more than just analyzing huge datasets. The act of cleaning the data and making the various data sources work together is extremely time consuming, especially in getting the various data types aligned. However, even in this regard, using a functional language can be an immense help. Knowing a functional language gives you an edge as a data scientist — one that could lead to advancement or more interesting projects that others without your edge will miss. The book Python For Data Science For Dummies, by John Paul Mueller and Luca Massaron (Wiley), provides significant insights into just how you can use Python to your advantage in data science, and implementing functional programming techniques in Python is just another step beyond.

Research the next big thing as a functional programmer

Often you’ll find a query for someone interested in working as a researcher on a job site such as Indeed.com. In some cases, the listing will specifically state that you need functional programming skills. This requirement exists because working with huge datasets to determine whether a particular process is possible or an experiment succeeded, or to get the results of the latest study, all demand strict data processing. By employing functional languages, you can to perform these tasks quickly using parallel processing. The strict typing and immutable nature of functional languages are a plus as well.

Oddly enough, the favored languages for research, such as Clojure, are also the highest-paying languages, according to sites such as TechRepublic. Consequently, if you want an interesting job in an incredibly competitive field with high pay, being a researcher with functional programming skills may be just what you’re looking for.

About This Article

This article is from the book:

About the book author:

John Paul Mueller has written more than 100 books and 600+ articles on everything from networking and home security to database management and heads-down programming. His technical editing talents have helped more than 70 authors refine and polish their manuscripts. John's books address every level of skill from beginning to advanced.

This article can be found in the category: