Object Oriented Vs Functional Programming For Recruiters

Object Oriented Vs Functional Programming For Recruiters
Post Author: Aaron Decker | Image by Gerd Altmann from Pixabay
Date published: May 24, 2020

Let's introduce "Object Oriented Programming" (OOP)

Object Oriented Programming (OOP) is a programming paradigm based on the concept of "Objects".

I'll put it in another way: it's a way of programming where you focus on performing actions on things, or put in terms of language - its about using verbs on nouns.

Let's think about an example: you have an application that is used to track applicants to jobs (an ATS system). The Applicants and Jobs would be the Objects (nouns) in your OOP system. Actions like "apply", "interview", "notifyOffer" "notifyRejection" might be the actions you can perform on these objects.

Simple right? That's because OOP is meant to be a way to model the real world which consists of things like this.

The fundamental concepts are simple, but OOP has a lot of fairly complex academic ideas, design patterns, and principals built up around it. If somebody decides to quiz a candidate on advanced OOP concepts the interviewer can make this quite challenging if they choose to do so.

I don't want to get into the weeds too much in this post but definitely do check out the wikipedia page on OOP to get an idea of the terminology you will hear people throw around.

Okay, so what about "Functional Programming?" (FP)

Functional Programming (FP) is a paradigm where programs are built by creating, composing, and applying functions.

If you recall from basic algebra the concept of a "function" is the same here. This is a thing that takes some argument and returns some result. Remember making graphs where you input "X" and get an output of "Y", and you would call that function f(x) = y ? We are talking about the same thing here.

Functional languages are based on something called Lambda Calculus which is a formal system based on mathematical logic that is used to express computation. It's an underlying foundation of how most functional programming languages are designed.

What does this all mean? Well, one of the advantages of functional programming languages is that in theory you can catch a lot more of the errors in a program at compile time (meaning before it's actually run), because you can mathematically "prove" correctness. In practice though, using strong static type systems in languages like Java allows you to similarly eliminate many types of errors at compile time.

Which languages use OOP?

Basically all of them. Or, at least all of the ones you've probably heard of or have seen in job descriptions. Java and C# are the 900 lb gorillas that are both strongly object oriented in their design. Almost every popular programming language you will see advertised has OOP concepts built into it, or at least the ability to program in an object oriented style.

List of languages with many Object Oriented features

I'll just mention these here so you can get an idea. These are languages where either most everything is an "object" and Object Orientation is a required concept, or they have full support of object oriented programming features.

  • Java
  • C#.NET
  • C++
  • JavaScript (arguable, but I'd call this true)
  • Ruby
  • Python
  • PHP
  • Go

List of languages with strong Functional Programming features

These are languages that are considered "functional". Programming in these languages is in general a very different experience as compared to the list above.

  • Haskell
  • Erlang
  • Clojure
  • F#.NET
  • OCaml
  • Erlang
  • Lisp (or "Common Lisp")

List of languages that have optional Functional Programming features

You can't really call these functional languages but these languages have added support for using many functional programming style paradigms.

  • C++ 11
  • Kotlin
  • Python
  • PHP
  • JavaScript
  • Java 8

Who uses OOP and who uses FP?

There is a funny line on the wikipedia page for Functional Programming:

Functional programming continues to be used in commercial settings.

It's funny, because somebody actually felt the need to mention this. For a very long time in the recent history of programming (probably from about the 90s up until just about literally the past couple of years) Functional Programming had a reputation of being unsuitable for use in commercial projects and strictly limited to academic settings.

This has changed a lot in recent years but in many ways OOP languages still dominate the industry and use of functional programming languages are still in a minority.

Some of this is just momentum: if you teach OOP in schools, and everyone else is using OOP and it's hard in general to simply find programmers (let alone the "right" ones with special skill-sets), you are going to use OOP languages at your company.

The trends are definitely toward using more functional features in all languages and there has been a huge resurgent interest in using functional programming languages for commercial and open source projects, but history has been more in favor of OOP until recently.

How this relates to developers and the job market

The thing you should understand as a recruiter is that there are some programmers that are deeply interested in functional programming. They look specifically for jobs that will allow them to use functional programming languages.

There are also some employers (mostly smaller specialized companies that can afford to be picky) that only use functional languages and are looking for these special programmers that know these languages.

But, if I didn't make this clear already I would be surprised if this group was even 5% of the industry. And part of this is because that a pure functional programming language like Haskell is so different, it's like learning to program in a totally new way for somebody not familiar with this style.

Here is another important thing though: all the time this trend seems to be increasing, and people are making functional styles of programming more popular in all languages. This is especially true in JavaScript: numerous tools have made it possible to use more functional paradigms when writing JavaScript.

Summary

Functional Programming and Object Oriented Programming are different paradigms that programming languages are built upon.

Currently, the industry is dominated by OOP languages, but this trend is changing. Functional languages are becoming more popular, popular OOP languages are getting functional features, and everyone is starting to use these.

There are some candidates and employers where this distinction between programming paradigms is very important.


Want updates?

Want new posts about tech topics emailed to you? Sign up to the list below 👇

Also, if you are interested in learning technical topics through a video course specifically created for recruiters, don't forget to check out the courses I offer.

The main course "How to Speak Software Engineering Jargon for Recruiters" is specifically designed to help tech recruiters get up to speed fast on technical topics.


Written By Aaron Decker

I'm currently a co-founder and head of engineering at a venture backed startup called Bounty. I tend to think of myself as a backend engineer that can work up and down the stack in Typescript. Previously, I have worked as a Tech Lead and hired teams, and as a Senior Software Engineer at multiple fortune 500 companies building large products. I also did a brief stint teaching programming courses as an Adjunct Instructor at a local community college, which taught me a lot about breaking down complex things into understandable chunks.