The phone interview had 3-4 basic programming questions (What is inheritance? Explain what functional programming is. What is the difference between a class and an object?) along with a bunch of your typical STARS Questions.
3-4 days later, I got an email to come in for an in-person interview with the manager and a senior developer. The first thing they asked me during the interview was if I wanted to continue - explaining that it was primarily for a functional programming position. I knew the position was related to the Scheme language going in but I had hoped that it would only be a small part of the stack. As many developers know, functional programming is not a very transferable skill. Regardless, I continued with the process because I had come all the way out there.
One of the first things that the interviewer asked was how I felt about pair-programming. This seemed like an awful sign right away given that it was one of the first things being brought up. Clearly this was important to the company and a major strategy going forward. I tried to be diplomatic in my approach but clearly stated my distaste for the practice. The manager tried to convince me of it's benefits by stating that it can bring together people from other teams to work together more efficiently. I was doubtful of that implementation and felt that it's more likely a core principle of American Family's dev department given that it was brought up in both the phone and in-person interview. I would be extremely skeptical of working here if you do not like pair-programming. I'm doubtful that I'm in the minority considering that most programmers learn and develop by coding alone. I found their insistence on it to be a little unsettling.
One of the other things they tried to convince me of was that they were a "tech" company. This sounded more like a PR pitch than a grounded statement. Most companies have a heavy tech focus with their products considering that it's 2017. The things is, their primary product is insurance and not tech. A 90 year-old insurance company trying to pass themselves off as an EPIC or Google is kind of like your grandpa trying to be one of the "cool kids" at the skate park.
They explained that they wanted to "break down the cube walls". While this idea might sound good to someone unfamiliar with the industry, this is more like management trying to further control the workers. When you are constantly exposed to other workers, you won't be going on Facebook or Reddit out of fear that you will get called out for it. I like working in an environment that promotes trust. If I get my work done efficiently, using the internet occasionally shouldn't be an issue. They argue that it encourages communication, which is pretty silly to me. Standing up and talking to someone two-feet away in an adjacent cube doesn't hurt communication in the slightest.
Throughout the process they asked me a bunch of STARS questions. These were pretty annoying as you would expect, they asked multiple questions where I had to explain specific situations where I overcame obstacles on the spot.
For the technical part they had me go to the whiteboard and show them how I would go about designing any program that I had in the past. I did more talking than drawing but the interviewer assured me it was alright and didn't push me on. Wasn't sure if that was a good or bad thing.
They also asked me what abstraction was.
Next, they had a diagram-related problem where they wanted me to expand the diagram to account for adding a new method that could be accessed by multiple classes in the most efficient way possible. I wasn't really sure how to use the format they provided but had a general idea on how to accomplish it. I ended up stumbling my way to the solution. I drew a box to represent a class and had arrows going out of it. The interviewer asked what type of class it should be. I said an abstract class and he told me it should be an interface instead. A minor fault but I also took a little too long to come up with an answer due to the open format of the problem.
The final problem had me going through a chunk of code line-by-line and telling the interviewers what was wrong. Pretty straightforward and I feel I did alright. Towards the start of the problem I glanced at a missing semi-colon that was in the middle of the code but told myself I should start at the top and work my way down. I ended up missing it on the way down and cursed myself after. I was told after I had completed the challenge that finding the endless loop was what they were mostly looking (which I had done). While this assured me I had done adequately his "mostly" wording implied that I had missed that semicolon or didn't explain the other stuff as well as I could have.
The interview in itself wasn't bad but the company seems to have a lot of policies that I think many programmers would find disagreeable. Just a fair warning.