I’m not currently looking for a new job, but I’ve been dying to write an article or two on the job search arena and how abysmal it has been, and how much worse it seems to be getting (from what I’ve read).
Interviewing for a senior-developer level job
First of all, I’ve been in the business professionally since 1994 as a Software Engineer. If you have any doubts about whether I’m a senior-level dev or not, I can assure you that I am. One of the most annoying things I’ve discovered over the years when interviewing for a new job is how many companies don’t actually have senior-level devs. Oh, but the devs think they are. Let me give you an example of what transpires (and I’ve experienced this so many times).
I start by submitting my resume to a dozen or so jobs that are looking for a senior developer, asking for the qualifications that I have. I don’t bother with ones that I think I might be able to do (like switching to Java when I’m a C# programmer, or going back to PHP, which I haven’t touched in 15 or more years).
I usually get no reply, but on the occasion when I get a reply, there is usually a phone call interview. It’s the pre-interview, interview. Sometimes it’s just HR filling in the blanks. Other times, it’s the senior-most dev the company has that wants to find out if I have the chops to work at their company.
Here’s where the dev asking me questions tips his/her hand. They begin by asking me technical, obscure questions about C#. Like “How many base classes can you use with a class?” Where I’m like, “I’ve never had a use for more than one base class, but I’m not sure. That’s not something I memorized in my 30-plus years of dev work.” Now, that tells me that the person on the other end of the phone is really looking for some guy that is a walking dictionary of random language trivia that I could look up in ten seconds (hello, Stack Overflow). Or in the instance above, I just quickly created two dummy base classes and tried to add them to a dummy class. Oops, Visual Studio tells me I can’t do that. What is the purpose of burning brain cells to memorize that trivia?
Here’s the kind of question I expect. Something along the lines of: “We have a reporting system that tanks our database in January due to tax seasonal reporting of our customers. What would you do to design a system to prevent this from happening?”
Yes. Now that’s something I can sink my teeth into. Using queues and a reporting API that can be tuned such that it will only spike the database by a predetermined maximum amount. And, it doesn’t actually have to use a queue, like RabbitMQ. Oh, it could just be a request put into a table that the API grabs one at a time. The status of what the reporting API is working on would be updated and shown on the customer’s website. It could even email or SMS the customer when their report is ready. The report, which is probably going to be a PDF or Excel, can be stored somewhere to be downloaded when it’s ready.
I know other technical details that could be applied. Like, to increase the number of reports that can be processed at once, a read-only database can be mirrored to be used by the report engine. If the data is not something that is immediately needed, a separate database can be bulk updated at night. That database could be used for the reporting.
And, so on…
In fact, I could probably throw out hundreds of ideas on how to handle that particular problem. But, I also have solutions for other high-level, technical problems, plus I have the ability to put together a design that can be worked on using Kanban or Scrum, with a team of programmers that can create the stories and perform regular backlog refinements. I can do top of the waves estimations that would have to be fine-tuned as the project is in progress. I have the ability to interview and select team members for a highly functional team. These are things that a senior-level programmer can do.
Want another crazy interview story? Oh yes. Yes, you do.
I interviewed for a company in Bethesda, Maryland. They explained to me (over the phone interview) that they were having difficulty with their database keeping up with traffic. They had a public-facing website where people can look things up (I’m trying to keep the company vague), and they had customers who paid to put their product on the site through a custom control panel. The public was tanking their site.
They invited me in for an interview. I was working for Credible Behavioral Health Care at the time, working with medical software. At the company I worked at, we had 300 databases that were housed in five SQL Server instances. It was horizontally growable. And it worked. Therefore, I had experience in growth and the problems that come with it.
I arrived at the Bethesda company’s office and discovered they had paid parking, and their company did not reimburse (it was pricey, too). Plus, my drive would be more than twice as long as driving to my current company, so this job was not looking good.
When I entered their building, the interior was under some construction. This factored into my decisions as I was waiting to interview. You’ll see why in a minute.
The guy who was hiring me came out to meet me, then took me back to his office. We walked into a large square room (not nearly as large as the open bays at Credible). There were long folding tables. The kind you would set up for the county fair. Maybe two or three rows of them. Each table had about four desktop computers, all different and home-built, sitting on the table top, with programmers hammering away at keyboards while seated in those metal folding chairs. I wondered if this was a temporary area where their overflow programmers were located. You know, because the building is under construction or something. Maybe they were expanding, and they had three times as many programmers. Because I can tell you that Credible had about 30 programmers. I only saw maybe 10 or 12 programmers in that space.
The manager who interviewed me had an office to the side of the room. There were a couple of other offices that branched off from that room as well. I talked with the manager for some time, then he took me to the owner of the company (one of the other offices branching off the main room). The owner fancied himself as a senior-level programmer, too.
First, the owner asked me a question about how I would solve their DB problems, and I explained that I’d have to dig into their system (assuming they hired me) and research why they are having their issues, but I assured him that parallel databases are usually the way to go. Assuming they can break their data set into partitions. Of course, there may be other ways of solving their issue (like using multiple hard drives across different tables). All of this would need research first. Can’t just run out and solve a problem without knowing what the real problem is. Otherwise, I could be wasting my time.
The owner dismissed my idea about parallel databases. I explained how Credible organized their data to overcome load problems. He squinted at me and asked why anyone would do that. I was a bit taken aback.
The owner goes on to explain that one of their clever solutions was to use RabbitMQ to queue data save requests from their paying customers when they hit their save button. Then that slows down the writes to the database and solved their problem initially, but now they’re running into queue overflows. I was very good at keeping my eyes from rolling at his most awesome of awesome solutions. Which is better known as vertical scaling.
I didn’t say much to his vertical scaling method. At the end of the interview, he bragged about how he loves having his developers all in that room outside his door. He has the ability to stand at his door and holler at a dev to do something, and it gets done.
Yikes!
With one statement, he told me a lot. Like, their dev team consists of those people sitting in the sweatbox. And, they are not going to get any quiet concentration time. And, the bigwig, who thinks he’s a know-it-all, will not entertain any ideas for horizontal scaling. And, they are probably operating on a shoestring budget (judging by the home-built PCs and awesome desk arrangement). And, I should run fast and run far.
Needless to say, I didn’t think they’d call me back. But they did. To tell me that they didn’t think I was a great fit. I thanked them and hung up. Had they asked me to work for their company, I would have happily turned them down. In fact, I really felt bad for their programmers and wanted to poach them, but I didn’t know what their qualifications were. Probably not very good if they settled for that dump.
I have a dozen more stories to relay, but this will do for now. I also want to talk about the latest AI bots blasting out resumes, and HR using AI bots to filter through those resumes. It’s all bots talking to bots now. Anybody out there like this new paradigm?