11

My location is in the United States.

I am a senior software engineer with a Computer Science degree, and I am typically responsible for training new or junior-level staff. With recent companies I have worked for, I have not been as involved in the hiring process of technical staff. At each company, the hiring committee sent a new hire, who was a math major, to my team for software development positions, and I found both employees to be very underqualified or fully unqualified. In one case, the employee earned their math degree a very long time ago; in the second case, the new employee was a recent graduate. In both cases, I found that the employees were lacking knowledge of basic skills, such as:

  • object-oriented methodology and programming
  • software development life cycle
  • change management
  • database normalization, etc.

I was surprised to notice this phenomenon, when for software development positions, there is an emphasis on STEM-related degrees. I have worked with many engineering majors throughout my career, and a number of them have become quite successful programmers.

With the previous company, I worked with the hiring committee to change their interview questions, and the quality of new hires improved. For the current company, I am in the process of doing the same.

I checked the course requirements for a Math Major at my alma mater, and they had 4 tracks for specialization. 3 of the 4 tracks had no required or suggested computer science courses. 1 specialization listed 2 introductory computer science courses as optional.

From this, I think the criteria for software development candidates should shift to “STE” (not Math) degrees or “computer science related fields.”

Question: Do others find a similar phenomena occurring for Math majors in Software Developer positions? Historically, like in the 1980s, a Math major seemed sufficient for a development job, but perhaps times have changed. Frankly, I have a preference for hiring computer science/engineering majors. If a candidate is a non-COSC/Eng major, then they need to prove themselves by passing rigorous interview questions. Granted, the COSC/Eng majors should pass the same set of questions. I had tended to assume that Math majors came with a certain level of computer science-related knowledge, but apparently this seems to not be the case.

Please note that I am finding similar dynamics with candidates that have pure “Data Science” degrees (not Computer Science degrees with Data Science tracks).

6
  • 1
    Comments are not for extended discussion; this conversation has been moved to chat.
    – Kilisi
    Apr 18, 2021 at 21:34
  • 6
    Why are you quizzing data science candidates on "object-oriented methodology and programming" or database normalization? Or are you hiring people with data science backgrounds to write enterprise applications? Because I don't see that working too well for either one of you... Apr 19, 2021 at 0:20
  • 4
    I'm voting to close this question because it's about discussing trends in hiring that would largely consist of anecdotes and opinion as opposed to anything resembling an objective answer, which doesn't lend itself too well to the Q&A format of this site. Although which degree someone has is an unreliable measure of knowledge, knowledge isn't everything, different institutes can have very different programs, the skills a job requires is subjective and you're welcome to filter CVs based on whatever legal criteria you wish. Apr 19, 2021 at 1:42
  • 5
    FYI, I was a CS major at MIT 40 years ago, and none of your bullet items were covered in our curriculum (I think they teach OOP now, though). And some of the best programmers I knew happened to be math and physics majors.
    – Barmar
    Apr 19, 2021 at 5:30
  • 1
    You have weird hiring specifications. When I hire a junior software developer, I expect them to have an education in that field, just as I would expect them to be certified electricians if I hire for electrical work. Whether it's a completed apprenticeship or a Bsc, but something. I would not hire random STEM majors, the same way I do not hire random STEM majors to rewire the office. Maybe talk to your hiring board about this.
    – nvoigt
    Apr 19, 2021 at 10:57

9 Answers 9

7

Depends on what you need.

A former colleague graduated in maths and would apply what he learned in the problems he solved, but he would have to be taught the principles Comp Sci graduates would have been taught. He was a good problem solver and at times we needed someone with great mathematical knowledge.

I did mechanical engineering at university but took a computing course (A-Level computing at a British sixth form). There is a lot of the Comp Sci I don't know but I love programming and haven't found it difficult to get jobs.

You need to identify what your team lacks and what skills it needs. You wouldn't have a team full of front end developers, nor would you have a team full of back end ones. You would also want a team with both male and female team members because of the benefits of diversity. Likewise, I think having a members with different skill sets will be more beneficial, even if they need to be taught some basics.

The main thing I would look for, if they don't have experience or knowledge, is why they want to do programming and if they will enjoy it. If they enjoy it they are more likely to improve.

On the other hand, if there's not much maths and you just need code monkeys, maths graduates may not be your best candidates.

1
  • I mean, it also depends on what kind of things OP's team builds. I can think of many applications where you simply don't need a math major on the team. But then I can also think of many where this would indeed be awesome.
    – xLeitix
    Apr 19, 2021 at 8:50
36

As a math major turned programmer myself I am guilty of being quite biased. Nonetheless I think it is very much sufficient.

At my company we primarily hire physics, maths and computer science majors for junior positions. The best programmers we have are a physics major and a maths major.

A math major is by no means a guarantee of any computer science knowledge. Unless they elect to do so, the only crossover that there is likely to be is combinatorics. Even if they do elect to do some computer science, it’s liable to be quite a bit more abstract than the knowledge you’re asking about.

I think it just comes down to a different expectation of a junior, for me I do not expect a junior to know how to do anything really, I instead want the ability to learn things and very strong problem solving skills. As such interview questions we set are essentially just creating, simply described in English, algorithms to solve certain problems and a proof of their correctness and complexities.

Database normalisation is a good example of the sort of thing I would expect to be obvious to a good candidate. I would ask them if this is a good way to layout data given these constraints, and they would say no, and end up normalising the database without ever knowing what database normalisation is.

7
  • 2
    I have a maths degree and never did combinatorics. I however did Numerical Analysis which needed computer programs plus nowadays Statistics will require programming
    – mmmmmm
    Apr 18, 2021 at 17:24
  • 24
    This. In my personal experience, for junior software engineering jobs, hiring smart people is much, much more important than any kind of formal education or practical experience. Smart people can learn anything they need, non-smart devs create more problems than they solve, regardless of their degree.
    – Heinzi
    Apr 18, 2021 at 18:39
  • And even within mathematics, there's a significant difference between a student that's good as a mathematics student and a student that's good as a mathematics researcher. The former can get by with rout memorization, while the latter will transition to a programmer rather easily.
    – Nelson
    Apr 18, 2021 at 19:25
  • 3
    I will say, with both maths and CS degrees, that there still is quite a bit of time necessary to learn programming itself, if the candidate has never touched it. But yes, if they have the fundamentals down (201 is probably enough) and can learn, DB normalization is trivial to figure out. VCS is sheer shop-specific paperwork: pretty much every SWE job of mine had a different stack anyway.
    – obscurans
    Apr 18, 2021 at 20:06
  • 4
    @Heinzi depends on what you are looking for. And smart people with a matching education still are better than smart people without it. Where you put the "sufficient" line is pretty much up to the company, how much work they want to invest, what kind of workers they need and what the current market offers. Apr 18, 2021 at 21:04
12

Question: Do others find a similar phenomena occurring for Math majors in Software Developer positions?

Not really, not. I'd say you just, coincidentally, had a run of a few candidates being shoved at you who were useless (and coincidentally had math majors).

I'd say there's a phenomenon that:

  • among those who are very talented, natural, even self-taught programmers, IMO you do get a cadre who ("bonus!") are also math majors or excellent in math generally. The two go together.

It's a bit like, if you think of the world's greatest rock guitarists, a chunk of them also have huge piano skills. But certainly not all. And indeed it would be useless to suggest a pianist, who doesn't play guitar, as a guitarist.

It also depends on the field. For any programmer who works in 3D, game physics, simulation or the like, excellent to advanced math is de rigeur.

I think the criteria for software development candidates should shift to ...

Could it be you're envisaged a milieu which does not exist? There's no central committee for criteria, hence ...

Push back ...

I suggest, solution here is just push back harder when whoever-it-is sends you useless candidates.

It's business, make your point firmly and politely.

5
  • 9
    And some rock guitarists also have PhDs in Astrophysics! Lots of programmers are self taught and a degree in the "wrong" field doesn't necessarily mean they aren't good programmers. There are often times where I'd hire someone without a degree over someone with based solely on skill. Real world experience trumps most anything. In fact most shops I've worked for don't even really care if you have a degree (the exception being eBay where any degree was company policy, at least at the time). Often times those with compsci degrees actually make the worst candidates. Apr 18, 2021 at 18:48
  • hi @pinkfloydx33 ! Yes, you may have misunderstood my post there. One thing my outfit does is hire specialist programmers for companies, and indeed (sorry if I was unclear) often a math degree is THE preeminent thing I look for - for what that's worth. (In particular, in 3D, game physics, simulation or the like - but any programming field.) I was drunk the whole decade, but as I recall back in University, as for me I majored in pure math (whatever that is, I forget now - I think it means like "not stats" :) )) and physics.
    – Fattie
    Apr 18, 2021 at 19:14
  • Here's an interesting one: A famous mathematical proof was Alfred Kempe's incorrect proof for the four colour theorem, which stood unchallenged for 11 years. I saw it, and I thought that to a software developer the fault in the proof was absolutely obvious.
    – gnasher729
    Apr 18, 2021 at 20:40
  • 1
    "I suggest, solution here is just push back harder when whoever-it-is sends you useless candidates." Their job is to train new hires. Complaining to management that they don't have all the knowledge they need, when it's your job to give them that knowledge, is like a window cleaner complaining that the windows are dirty. Apr 18, 2021 at 23:37
  • 1
    @Acccumulation I mean, if their job is to take any candidate and train them, sure. But normally businesses have certain expectations on how fast that training is supposed to go. If the current candidates are not sufficiently pre-qualified to train them in the speed the company is expecting, OP can and should push back on one of the two angles (either what candidates go through the filter or how long it takes for a candidate to become productive).
    – xLeitix
    Apr 19, 2021 at 8:46
8

I'm a math graduate turned software engineer.

A mathematics major is not sufficient. It can be part of a foundation.

The programming courses I had as part of the mathematics track were mostly useless for software engineering. They helped with some details, every now and then. I had a minor in computer science. That did help with programming, but alone they would have made me a mediocre programmer, not a software engineer.

My contribution to the team was the combination of mathematical thinking and computer science. The development of algorithms, sometimes. Taking care of edge cases in my methods. Dumping other logical branches after showing that they would be error cases, anyway.

5

It's not them, it's you. Your expectations of a junior software developer are way off the mark, and the failures you've observed may well be due to you not training them enough.

I think it just comes down to a different expectation of a junior, for me I do not expect a junior to know how to do anything really, I instead want the ability to learn things and very strong problem solving skills. As such interview questions we set are essentially just creating, simply described in English, algorithms to solve certain problems and a proof of their correctness and complexities.

That's perfectly reasonable. But that's not consistent with what you expect from hired candidates.

Tools change a lot faster than concepts. A mid-career software developer who learned the tools of 20 years ago and never learned anything else would likely not know the tools you're using. Check on popular programming languages of today: 20 years ago, C# was brand new, JavaScript was a very different beast, so were Java and C++ and PHP, Python was pretty niche. Smartphones didn't exist. Change management mostly meant CVS or proprietary systems. So you can't expect a typical software developer to just cruise by on what they learned in school.

It's not wrong to want to hire people who already know the specific tools you're using. But then you aren't hiring juniors. By definition, if you want people with specific job knowledge, you're hiring experienced people.

What you can expect from juniors is to know core concepts. It's reasonable to insist that a junior hire for a software development job knows the basics of programming: translating simple requirements expressed in a language that humans understand, into a language that computers understand. It's even reasonable to expect that junior hires know the basics of the specific technology you work with: if your teams does programming in Java, you may want to specifically hire graduates who've studied Java. But they're unlikely to know all the language features and libraries and tools that you take for granted.

Object-oriented methodology is just one of many methodologies. It's far from being relevant to all programming, and in my experience many developers who don't have a solid theoretical background tend to put too much emphasis on it and to not realize that sometimes other paradigms are a better way to solve problems. For example, whenever you're consciously using a “design pattern”, it means you're using a paradigm that isn't straightforward to express in your language. Many popular design patterns are in fact basic concepts of imperative or functional programming. A junior hire who learned Haskell in school may well recognize these patterns better than a senior developer who never learned a functional programming language.

The software development life cycle is all about programming in the large. You don't need to think about SDLC for a one-off hundred-line program written by a single person. And no matter what they majored in, a student has mostly worked on this kind of programs. SDLC is something you need to experience. If you're asking graduate textbook questions about SDLC in interviews, that'll tell you if they've memorized textbook definitions, but it won't tell you if they're going to write maintainable code.

The same goes for change management, plus that is mostly about knowing specific tools.

Database normalization is a theoretical topic that can be learned in school. But it's far from being universal in computer science education, and far from being relevant to all software development jobs. If it's very important to what your team does, it's reasonable to prefer to hire candidates who are familiar with it. For most development jobs, though, the theory isn't that important, compared with the skill of designing a database layout, for which the basics can come with experience, and being an expert is a job of its own.

In my non-representative experience, the nature of a software developer's degree is not a good predictor of how good they are at their job. (That's for “general” development – if you're writing software used in finance, natural language processing, medecine, materials modelling, cryptography, etc., then knowledge of the science involved is definitely a plus.) The only aspect of the job where I've seen a correlation is that more advanced theoretical degrees are a good predictor of being good at writing documentation: math PhDs tend to be much better at it than IT technical college graduate. (A much better predictor than being a native speaker!)

1
  • It's not a matter of training, it's a matter of the OP not communicating requirements to the hiring committee - or perhaps of the committee ignoring those requirements. Software development is a broad field: despite having a BS in math & physics, I've made a more than decent living at it. Yet I've never worked with databases, avoid OOP whenever possible, and probably don't know the particular change management system or fad development methodology they're using. If they hired me, the OP would probably consider me unqualified, too - because I am, for that job.
    – jamesqf
    Apr 19, 2021 at 3:20
4

There are different types of jobs that could be described as "software developer," and there are different types of people.

Some jobs require little creativity or originality, and little ability to think outside of the box. This is the type of job where you just want someone who can be a database administrator who plugs away year after year, doing a competent job and keeping things running. The type of person who could succeed long-term in this type of job is someone who has lots of specific training related to the job and will not go crazy with boredom. If you can't find someone who has this specific training, at the level of pay you're offering, then you could also look at people who show the ability to be trained, and then you'd train them.

Other jobs do require creativity, or at least the ability to solve problems that are not presented in some kind of standardized form. The type of person you want for this job could be someone who has a math degree, or it could be someone like Bill Gates, who dropped out of college but did highly creative software work as a teenager on his own initiative. For this type of position, it's ridiculous to reject them because they don't know what database normalization is. If they need to know what database normalization is, they can read a book on it.

Rather than asking people interview questions about some currently trendy buzzword in software management, you could try focusing more on what the person has done. If they have a github account, look at their code. Does it have comments? Does it do interesting and creative things? If they've had a previous job at a widget manufacturing plant, look at their recommendations and see if they figured out creative ways of improving widget throughput. You can also try seeing whether they know about the specific area of software that they've done work in. If they did a hobby project involving computational linguistics, then ask them questions about unicode normalization, not about database normalization.

A university is not a trade school, and their job is not to produce workers who are ready to start producing useful work for you without any learning curve. And a math degree from Berkeley with a 3.8 GPA is very different from a degree in math education from Cal State Fullerton with a 2.2 GPA.

1
  • 2
    "A university is not a trade school, and their job is not to produce workers who are ready to start producing useful work for you without any learning curve." This is not a universal view. The official view of the Australian government, for instance, is that this is what universities basically should be.
    – nick012000
    Apr 19, 2021 at 2:20
4

I am someone who has hired a lot of software developers over the years, have a mathy background myself, and know a lot of mathy people.

Summary: Maths backgrounds can be very helpful in dev, but are not themselves sufficient. Problem solving is all very well, but dev practices are essential too.

As you note, devs coming from maths usually do not have a basic grounding in SE practices.

A proportion of math people working in dev never really get on board with team working and dev practices. Too focussed on being what they see as brilliant programmers, they do not understand development as a team sport.

On the other hand, many of the very best devs I worked with or led were of maths or physics background.

So, do consider Maths/ Physics when hiring, but when filtering the CV and interviewing, look for more:

  • Have they invested time in learning programming: a breadth course; their own time, even high school?
  • Have they invested time in learning something about SE practices; anything on GitHub etc?
  • Do they understand that SE practices and teamworking are critical to job success and that this is as important as developing programming skills?
  • Can they show evidence they are really invested in a career as a developer?
  • What do they know about development practices, even if no experience of their own?

Even given all that:

  • Do you and your team have the bandwidth to provide training on basic skills?
  • Is there any company policy that believes you should?

Have a you had a conversation with your hiring committee? If HR people only, do not expect much more. If it contains devs, it might be fruitful.

1

In both cases, I found that the employees were lacking knowledge of basic skills, such as:

  • object-oriented methodology and programming
  • software development life cycle
  • change management
  • database normalization

This is actually a shock to me, as a software engineer I can see how one might struggle to grasp the concepts of change management, development lifecycles, platform requirements, UX principles, ISO standards and all the boilerplate stuff. But when it comes to programming, especially OOP principles like passing arguments, returning values, boundaries of scope, etc. mostly came from pre-existing principles in higher mathematics. Even at the lowest level, under the hood of Assembly code is Boolean algebra which is comparable to US high school algebra, everywhere you look in OOP you can find aspects, rules and conventions that long predated computer science, they were adopted into computer science (mainly from mathematics) while keeping their original names, just a few examples: arguments, arithmetic logic, selection, variables, conditions, all come from mathematics. Then there's things like classification which comes from mathematics but also works the same in biology and chemistry.... long story short: If someone has what it takes to get a degree in Mathematics (presumably with high school STEM knowledge) they are so much within touching distance to becoming a programmer, it could be done in a month or two: that is, turning a disciplined mathematician into a disciplined programmer, sure there's a bit of learning to do, but if this person is serious about becoming a programmer they surely should take some time to learn the fundamentals of programming, they have the best head start in terms of education, why not capitalize on such a valuable foundation?

This could either be down to laziness or reluctance to move beyond the boundaries of one's field (so to speak). Either way it has a lot to with attitude. If I had a team looking to hire and a young mathematician with little coding knowledge wanted a job, given they had a good attitude and work ethic I wouldn't hesitate to hire them.

2
  • The concepts of passing arguments, returning values, and scope existed LONG before OOP came along. Certainly they existed in FORTRAN 66.
    – jamesqf
    Apr 19, 2021 at 3:07
  • Just because they recognise the actual concepts from mathematical principles, doesn't mean that they recognise whatever the specific name or buzzword is in your field or methodology. I once nearly failed an interview, because (coming from a Microsoft background) I said "Sequel" rather than the IBM-descended "Ess-Que-Ell" — something which didn't impact my ability to do the actual job. Might be that once these candidates get an introduction to OOP, they realise that they know all the concepts, but not the name! Apr 19, 2021 at 10:46
0

There are several different issues here. For one thing, there's a difference between knowledge and aptitude. If you're looking for candidates with software knowledge, it would be silly to expect a math degree to be a good signal for that. (But then, even a software degree isn't ironclad evidence of software competency). But if you're looking for candidates who have the aptitude to learn software skills, then a math degree is a decent signal.

You say that your role is to train new hires, so it appears that your company is looking for aptitude rather than knowledge. So if you get a new hire who doesn't know about object-oriented programming, etc., it sounds like it's your job to teach them about it. If you find that they aren't able to learn these subjects, that's a legitimate concern, but depending on your company's expectation, them not knowing these things may not be.

Historically, like in the 1980s, a Math major seemed sufficient for a development job

There's some ambiguity in that statement. Without context, I would read it as saying "Having a Math degree was enough for someone to hire a person". However, you seem to discussing whether a Math major is enough that they should be hired, which brings up an ambiguity between "Getting a Math degree is enough to show that someone is qualified" versus "Getting Math degree is enough to cause someone to be qualified".

The process of getting a Math degree is certainly not enough in itself to cause a person to become qualified. At best there's enough of a correlation between people having the skills to be a software developer versus them getting a Math degree that hiring people with Math degrees is effective at getting people with those skills. In other words, you would be using a Math degree as a proxy for what you're really interested in. If that's the case, you should consider whether you can more directly measure what you want.

Ultimately, your company should look at what empirically works. If your company is finding that there are qualifications that are better indicators than a Math degree is, they should focus on those. But this is an issue for your company, not you personally. You can give your input, but the final decision isn't in your hands, and if you are assigned new hires who need a lot of teaching, then it's your job to teach them.

Not the answer you're looking for? Browse other questions tagged .