Regrettably Paused

About a year ago, there was one employee that posted an angry rant about the lack of communication between managers and development staff when big changes were coming. The managers actually responded positively and said they will work on it in future. Well, it’s happened again.

It seems she was working in a subteam on a project, and her subteam was never told their project was on-hold. She heard the rumours/news from someone else, and posted this rant before the managers fully declared it to the department:

If a project is “regrettably paused” or abandoned in future, please would you consider announcing this news in the form of a department-wide meeting, inviting all those who were involved with it?

This gives people the opportunity to ask questions or make comments, much like you would if a doctor was giving you bad news.

Developer on a cancelled project

We have had a tendency to cancel projects, big or small over the last year. Some have involved my work where I had finished development – and it only needed to be signed off by Testing. 

Another manager made an unrelated post about them sorting out the project plans and bug fixes. They said there were “300 pieces of work in various stages of the software delivery lifecycle. We’ve decided to continue 189 items, reject 35, and move 76 back to the Backlog for further review.” I don’t know the details of these changes, but I really hope they haven’t cancelled loads of inflight work. It’s just demoralising to have your work cancelled, and a waste of time when it wouldn’t be much work to complete it and get the new features out to users.

Maybe there’s nothing you can do about it. If managers insist we want to follow a new process, shuffle the teams about, then the current work basically needs to be abandoned otherwise the new teams cannot form.

Working On The Wrong Project

This post, How do I tell my boss I’ve accidentally been working halftime on the wrong project for the past year?, appeared on Stack Exchanges Hot Network Questions, and it is an interesting story. Is it true though? It’s definitely hard to believe.

Even though the process and management where I work is a bit slack sometimes, I just can’t imagine this scenario could possibly happen. There’s too many failures that have to happen for it to get to that stage.

A tester starts a new remote-based job and is assigned to 2 projects. 11 months later, he realises that he was only supposed to be assigned to 1 project, and was wrongly invited to the initial meeting because he shares the same name as another staff member.

When he has one-to-one meetings with his manager, he has somehow talked about work in a way that the manager didn’t realise he was working on the wrong project.

He eventually meets his team in person, and it seems some people knew the other staff member with the same name, but not enough to realise this person wasn’t the same.

I have no idea how this can actually happen.

There’s definitely going to be situations when you realise two people have the same name in your company, and especially if it is you that shares the same name. Someone emailing you by mistake; receiving an email from the other person; seeing a post on whatever chat app they use eg Slack/Teams.

Surely you have daily stand-up meetings where you talk to your team. Someone would surely realise you aren’t the person they expect, unless they all accepted it was a different person, but then they wouldn’t act like you were the other person when you physically met up.

If they really did believe it was their original colleague on the project, and there were no meetings, surely one of the team members would have communicated to the other person to ask them how they are getting on.

If the organisation only assigned a Tester to 1 project, surely there would be a point where you say you were too busy with “the other project” and would be challenged. They must be assigned to a couple of projects as standard, but then that means this person should have been assigned to a third project. It makes me wonder what the other guy was doing. The original poster says they were “focusing on other work”. Probably chilling for a year then 😀

If you have to log your time, surely a manager would realise something isn’t right when they look at the overall figures, or just your own..

If this Tester was comfortable doing both these projects, doesn’t that indicate Testers are actually underutilised and are only working at 50% capacity? I do think Testers could easily get assigned more work but they always seem to claim they are really busy.

It’s a mystery.

The Changes #3 – Tech Stack

Recently, we have a new CTO and a new Head Of Development. Like all new managers with power, they want to make their own changes.

In The Changes #1, I explained changes to job titles of Testers. In Changes #2 I explain that Developers are also affected.

Our previous management decided our upcoming software would specifically use the cloud service AWS, whereas the new managers want a “cloud-agnostic” approach (work with all the clouds!). So they want us to have the possibility of using one, or a combination of: Azure, Google or AWS – although the emphasis seems to be moving to Microsoft’s Azure. 

Currently, I don’t think there is much rationale for this. Everyone specifically learned how to use AWS, so will need some time to adapt to the differences. When people started learning about Cloud Technologies, the problem of “Vendor Tie-in” was raised and instantly dismissed by the previous management. It makes sense to ensure you have that flexibility, because if your provider increases their costs, then you can easily migrate if you had the architecture for it.

Another change is that they want every product to have their source code in GitHub. Maybe it does make sense to have all our products in the same place. The reason we have them scattered is mainly because our products were acquired by a series of acquisitions, so the original companies had chosen their own languages and technologies. However, our core, flagship product is already in Azure DevOps, and given that the main cloud provider is going to be Azure, surely it makes sense to keep it all in one place?

These changes to jobs, processes and technologies seem to have solely been decided by the CTO and Head Of Development. I feel like they haven’t discussed these ideas with the Development staff at all. I’m intrigued by what other arbitrary changes will be forced on us. With any change, I think you always have to ask yourself “what is the problem we are trying to solve?”. If you can’t explain the problem, then it shows you are making changes just for the sake of it.

Recently, I have been reading Sir Alex Ferguson’s “Leading” book and came across a great quote:

“There is no point suddenly changing routines that players are comfortable with. It is counterproductive, saps morale and immediately provokes players to question the new man’s motives. A leader who arrives in a new setting, or inherits a big role, needs to curb the impulse to display his manhood.”

Sir Alex Ferguson (ex Manchester United football manager)

I thought it was a very relevant and appropriate quote for this situation.

Test Coverage

The “Test Governance Lead” announced that all developers will need to report on Unit Test Coverage. We explored similar demands several years back, but we soon realised it was a rubbish metric. How do you measure Unit Test coverage? There’s a few ways and they all have limitations on their accuracy and usefulness. Teams were also adding “attributes” to the code (ExcludeFromTestCoverage) which also manipulated the figures.

My opinion is that it’s okay to report on as long as you just look at the overall trends and don’t overreact to the actual figures. If a figure says 50% and there’s never any problems with the code, and the figure is still 50% in 3 months time; then it is all good. The problem is that managers just look at the figure then start putting pressure on developers to do something about it because they want the number to be higher.

An experienced developer responded to the “Test Governance Lead” with a blog post which opens with the line

“Let me use one of my son’s toys to explain…”.

https://danashby.co.uk/…/code-coverage-vs-test-coverage/

What a great opening line for a blog. It’s like a passive aggressive statement from the developer there. He didnt directly insult the  “Test Governance Lead”, but indirectly called her naive/dumb by using the blog.

Years ago, on multiple occasions, I witnessed a developer talking to one of the high-ranking managers, boasting about his 100% test coverage. He was obviously trying to manipulate the manager’s impression of him to increase the chance of promotions. 

Not so long ago, there was a team that kept on boasting about their 100% test coverage, yet developers using their code library were telling them that major functionality was broken.

Development Department Objectives

About a year ago, the Head Of Development shared a list of development objectives that she was responsible for. Although each point sounds good, how do you even achieve these? and how is she held responsible for them if she succeeds or fails?

1 Reduction in Major Incidents

A Major Incident can simply be a bug that many users would see and was introduced in the most recent release. It could also be a high-severity bug; e.g. a feature is completely unusable, or if you could see someone else’s data.

You could have some kind of policy enforcement, like increasing automated tests coverage which you run on every release. It’s not going to catch everything though, but it’s a start. I think this objective is okay.

2 Reduction in Major Incidents fix time 

How long does it take to fix a bug? Every bug is different. You need to recreate it, then come up with a fix, then test it. Sometimes the feature may partially depend on a 3rd party and you may need some complex set-up to get the feature working. Each of these aspects can take between a few hours and weeks. It’s out of your control. 

What you can change is the time between the user encountering the issue, and it being assigned to a developer. I have found that sometimes issues are discussed on a Wednesday, then somehow get assigned to me at 3pm on a Friday and there’s discussions on who can work weekends for it to be deployed on Monday at the latest. Yeah, we can definitely improve that process, but the overall metrics are essentially just going to be based on luck.

3 Increase rollout pace

I’m not involved in the deployment process, but sometimes this is beyond our control anyway. Some of our customers will refuse updates, or request we delay patching them to when fewer users are using their system.

4 Reduction in issues 

If it was so easy to not introduce issues, then surely we wouldn’t introduce them. Maybe some people think developers introduce issues on purpose to keep us in jobs! However, there’s plenty of new feature requests and improvements we could be doing, but we spend so much time fixing bugs. We would much rather be introducing new, cool features.

Again, you could improve processes like automation coverage, but it’s easier said than done. Even if developers write Unit Tests, we have Manual Testers verifying our changes, and sometimes other Automated Tests – bugs still get through.

You could reduce the chance of issues by making the releases smaller. Fewer changes mean lower risk of breaking anything. Not releasing at all means there will be zero new bugs. You could make this metric appear better, but by lowering the productivity in the department.

Conclusion

I actually don’t know if we achieved these. I wouldn’t have thought so, but the Head Of Development got some kind of promotion, and some award for her work. If we did succeed, it would be by pure chance. I don’t recall any kind of initiative or process change that made a difference.

Protected Time

We often find that managers will arrange meetings when everyone appears to be free, but they don’t consider if it is actually a good time. So they often arranged meetings during lunchtimes. After our Head Of Development announced that he wanted to ban the practice, many managers seemed to ignore this and carry on. It eventually got flagged to HR who then declared it was going to be a group-wide process, and we can no longer have meetings between 12-1

I know many people who like to have their lunchtime at 1, but I guess they should adapt for convenience. I guess you cannot block meetings between 12-2 to cover all possibilities.

Our new CTO arranged an hour-long training session 12-1. It wasn’t that he wasn’t aware of the policy; he declared that he knew the policy – and was deliberately violating it.

“We have deliberately scheduled it within protected time as this is exactly what we should use our protected time for – a chance to learn and develop ourselves.”

CTO

I stated to a colleague:

“I thought the protected time was protected so we can actually eat… I’m currently developing myself with a sausage and egg sandwich”

Me

I don’t get why he thinks the protected lunchtime should be used for training. It was specifically to ban meetings during this time. If we had food ready, we could eat while listening. However, others may need to cook, want to go out for food, or like to eat with their family.

Name and Shame Emails

Don’t you hate it when you get an email stating that you haven’t followed a process correctly, but then everyone else that has also made the same mistake is listed in the “To” field of the email. So it’s basically “naming and shaming” everyone.

One particularly patronising work email I have received recently is the one where you haven’t submitted your timesheet. There’s massive screenshots of the website with red circles and arrows pointing at each button you need to click in order to submit it.

It’s so dumb because it only makes sense if you have NEVER submitted a timesheet: If you have submitted several weeks worth, then missed 1 week, why do you need step-by-step instructions of which buttons to click? You know what to do, all the email needs to say is that you have missed a week, and it should state the date that you missed.

However, out of the 3 times I have received such a patronising email, there was actually only 1 time where it was actually accurate. The other 2 occasions, I checked the timesheet and everything was showing as submitted. I can only assume what they did was prepare the email a few days prior to sending it. Then in the meantime, I had gone and filled it in. Either that, or maybe it was a bug in the software.

If you are basically going to criticise someone, at least you need to make sure it is accurate. Then it’s advisable not to make it known to everyone by sending mass mails.

On a related note, I received the following email today:

As you may be aware, all colleagues are required to complete the Data Security training annually. 
Our reports show that your training is still outstanding. 
The training needs to be completed by Friday 30 April at the very latest. A status report will be sent to the Directors on Wednesday 28 April.

I don’t recall seeing any previous email about it. Yes, it is supposed to be an annual thing, but surely I’m not supposed to create my own reminder – where is the autogenerated reminder? When I went to do the training, it was actually 1 year and 3 months since I did it last. So in my opinion, that’s their mistake but now I am receiving an email that tries to make me feel like it’s my fault. With only 8 working days to complete it, surely it’s possible there are some colleagues on annual leave during this time, in which case I’d imagine they will then have the Directors on their back.

Ironically, part of the training involved General Data Protection Regulation (GDPR). One of the examples of a failure was about sending emails with all the recipients in the “To” or “CC” field, rather than the “BCC”. It’s probably really relevant when sending external emails, rather than the internal email I received about the timesheet. Still, it made me smile, and I think the general principle applies that you shouldn’t receive unnecessary information about people.

“What interaction have you had with varied stakeholders?”

One of our apprentices said he needs to fill in an “evidence” piece which questions aspects he has experienced on the job. Since he has mainly been studying for exams and filling in forms, he hasn’t had much chance to actually do any real work. So he wanted me to help him come up with ideas of what he can write about.

I don’t think we have that much interaction with people outside the immediate team really, but it really depends on how you interpret the question. I guess this particular question is just about stakeholders which includes anyone with an “interest” in the software.

I always thought it was annoying when we got asked questions like this on appraisals; usually the focus being on people outside your team/department. It’s not part of our job really, since we have a hierarchy so you would just get your manager/team lead to either arrange a meeting, or perform the action on your behalf.

The key thing for developers is to raise questions about requirements with a Product Owner. So if the requirements aren’t clear, or your investigation has uncovered new information – then the solution isn’t as simple as people imagined it would be. Then you could then agree on changing the requirements with the Product Owner, or creating a new “work item” with the additional requirements to implement at a later time.

Maybe you would need to talk to an Architect to come up with an overall solution to a complex problem. 

Sometimes we email the UX team for UX designs or to ask the Technical Authors to write us a nice user-facing message to display in a dialog box.

Ideally, in a perfect world, these things would be alongside the requirements since you would think there would be a process before it comes to us. But we never really work like that.

In a recent project, the requirements were vague anyway. It was more like “Feature doesn’t work for certain users” …they want to select a Proxy user and that user’s details are sent in the message. So I made those changes but then you realise that they could want to use the feature, but maybe haven’t configured it correctly. So you need to tell the users. So I’ve put in a message box to tell the user certain config is missing from their user. I’ll need to get the Technical Authors to write the actual message. It should also be confirmed by the Product Owner that they want it to work like that.

A Tester then found another potential issue and suggested we add a default behaviour in a certain scenario, but that would be something the Product Owner decides. Do you want to switch the default, or do you want to just tell the user this method is invalid, and they have to manually switch to a different method? But then maybe we would want to ask the UX team what they think the user flow should be.

I guess the conclusion here is that it’s always hard to know exactly what the system should do. You end up having some requirements but then when you implement it/prototype it, then you realise that there are other scenarios that you should also take into account. So sometimes it is an iterative process: there is a bit of back and forth with the conversations between these stakeholders.

Shots Fired On Inexperience: Leaked Transcript

Intro

Even though all software developers should take part in code reviewing their peer’s code, I find most developers I work with aren’t that interested, so ultimately it comes down to a few high-ranking developers, plus me.

Recently, we have been rejecting a lot of bad code from inexperienced developers. It’s fine being inexperienced as long as you have a team to support you and help you eventually produce an effective solution. I think what happens is – there’s not enough seniors (or seniors that are actually good), so the code gets into their Project Branch. Then, when it is time to merge in for the Main release, experienced developers review the code and reject it.

I often specifically get asked by the Software Delivery managers to review code to ensure it is in a good state for the release. We had a group conversation where we were discussing the current bad state we are in. Software Delivery managers had asked Darren, Dave and me to review a project.

Participants

Darren, Dave – Principal Developers

Mark, Michelle – Software Delivery Manager

Me – the silent observer

I’ve given the developers names that start with D, and the managers names that start with M, so it might be easier to follow.

The Conversation

Darren  08:36

Whole lot of Nope in this Code Review.

Mark  10:52

Judging by your review comments, this doesn’t look to be something that can be resolved in the next couple of days. Does their implementation need to step back and restructure?

This might need another call

Have any of you guys been involved from a high level view for this Project?

Darren  10:55

The changes to the Database are totally inappropriate, and possibly way off the mark of what is needed.

Changes to the Database filing are non-trivial, if people don’t understand it, they need to reach out for help, not just smash code in.

Our product is going to turn into a legacy codebase very quickly if this behaviour carries on.

Dave  11:11

We do keep getting Code Reviews to Main with unworkable solutions. It’s highly frustrating, and a big waste of our time. Most of the time, the code or even the work item has not been reviewed by an expert-level person before a review to Main is requested. On occasion, someone gave correct advice in the first instance which was then ignored.

We need to fix this, and have help from you guys raising the problem.

Darren  11:14

The solutions feel like a very reactive approach to programming… Very little thought for design.

Mark  13:02

So have any of you guys been approached about this Project before this review  was raised?

Because I think this ties in with the whole idea of needing an Subject Matter Expert during the construction of the project rather than at the very end – something that we’re trying to drive forward

Dave  13:07

only about 2 days ago 😖

All our Subject Matter Experts are on the New product 😛

Darren  13:08

I reviewed the previous incarnation of it, without the concerning the Database changes.

“All our Subject Matter Experts are on the New product” Even so, I might have made time to discuss this with someone if asked.

Dave  13:09

yeah same

My point is that the day-to-day design and building of the projects is led by inexperienced devs. The developers are not being mentored while developing the code – but instead, at the end of their code writing; which should be something a lead developer is doing

It’s good to have the view throughout the dev process, or at least the start, as well as quality checks at the end – which should be a straight-forward “yeah, you’ve not done anything crazy, it meets the coding standards and is what we agreed”.

Mark  14:43

Yeah. This is all the good stuff which me and Michelle are trying to address as well. Trying to have a Subject Matter Expert assigned to each project during construction just for that overarching view, and to give a steer when needed.

I.e. a month ago this could have been caught at the start by saying “don’t make these changes within the Database itself” haha.

Darren  14:51

To be fair, you don’t need a Subject Matter Expert to tell someone not to dump a load of copy and pasted code from one module into another. Just someone with some experience in developing software to a higher standard than “Hello World”.

Michelle  14:52

“Hello world” just triggered some terrible school flashbacks.

Dave  14:52

Agreed, but as a business, we need Seniors to point out when people are constantly doing silly things to their line manager.

Michelle  14:57

It’s the experience aspect that is the biggest challenge, if there was a better ratio of experienced people to inexperienced people areas where skills are not good enough, they would start to improve (or at least that’s the theory).

Everything just seems stretched way too thinly at every turn. Hell, it isn’t just development that has the problem.

Darren  15:00

I’d also add: knowing anything about the teams working on the code would help.

I can’t know everyone, but I don’t even know what the teams are, what they are working on, who the seniors / leads are to discuss with.

E.g. if someone has a problem with code my team is doing, then I’d expect to be brought into the loop (either to explain our position, or to understand the other sides)

Dave  15:06

Who do we talk to, to at least pass the buck on the issue and raise it?

Michelle  15:11

I think it is more for the Development Director. It’s something me and Mark have brought in fashion everytime we come across an example. Difficulty has always been what to suggest to fix it within the limitations of what we got

Dave  15:21

Certain business types don’t understand the value of good engineers and will simply get the cheapest money can buy, in the hope the decent engineers will act as quality gates and stay with the company.

It must be soul-destroying, working away in an office across the globe, with ‘experts’ in the UK saying if your work can or can’t join the rest of the product. It’s not the right thing to do.

They need infrastructure mirroring ours, and separate projects would be a great way to achieve it

Darren  15:25

Last I knew, the other office still have Development and Testing as separate departments

Dave  15:25

This just reinforces the stereotype that Ben bangs on about: the company is ruled from the UK. Normal companies have different product sectors at different locations, because it mitigates these problems

Michelle  15:27

All valid points. What Dave is saying are points raised verbatim by more than a few people who have been in this world for a while. As for soul destroying: 100% agree it has to happen to catch this stuff; but each time it’s caught it will knock you back that little bit more

Just needs some kind of sensible structure that is adhered to. But then again – if no one is made to follow something, who will?

Dave  15:30

Yeah, for me, it’s responsibility, if you don’t have to pay for your actions, then it drives bad behaviour. But since we maintain our Product, having to pick up the bugs, see the customers complain on Social Media, see the error reports on live and backlogs grow, we’re a lot more invested

it is feeling more and more like, knock this feature out as quick as possible, throw it over the fence at UK law-enforcement, see if it goes through

👮

With responsibility you’re driven to get the right structure in place, you want to place experts/leads with the teams and have them monitor each day, because it soon becomes a very long task to get fixed last-minute. Top-down approach, drives the 9-5 job behaviour, lack of interest and minimum viable work ethic.

Darren  15:32

+1

Which goes back to my point about who the teams actually are. And we really need to do proper ownership. I still own large bits of our Product, because I care about them!

Dave  15:34

Same. Developing and code reviewing isn’t my job, really. However, I don’t want to see the product damaged and go to waste, because it helps people, genuinely.

Darren  15:34

Would be so much nicer to say “I don’t look after this any more, just do what you want and hope nobody gets sued” 😣

And it isn’t any one change that is unsafe, it is the poor quality, lack of adherence to existing designs, just piling code in, coupling stuff together, changes in the wrong place, etc that lead someone else to create a unsafe bug later – usually without anyone batting an eyelid.

OK, some changes are totally unsafe too – a few weeks ago, I have to point out that you cannot calculate an age in months by doing ageInYears * 12

😖

Dave  15:48

So, if I were to write some general comments without mentioning names, and send them to the Development Director, expressing that we’re at our wits-end, would anyone be prepared to back it up or be a part of the revolution?

Darren  15:50

Feel free to add my name to give clout to this

Dave  15:50

sure, I will of course send to you first to check

Summary

  1. Not enough people willing, or have the ability to review code. – I always find this a weird one; given that I reckon 90% of a developer’s job is reading existing code. If you cannot review code, then can you be a good developer?
  2. People aren’t putting enough thought into the architecture, or adhering to well-known standards like SOLID Principles – This is the kind of behaviour I saw in developers I’ve written about like Colin and Derek.
  3. The ratio of Juniors to Seniors is far too high, which not only is a problem now, it is a problem in the future when the Juniors haven’t progressed enough.
  4. The rapid hiring of staff has meant you don’t know who people are, what they are working on, and what their level of experience.
  5. Hiring cheap staff has caused some resentment/uncertainty with UK staff. Pay seems frozen and more jobs are moving abroad. It wouldn’t be that bad if the staff we hire are cheaper and are good, but they often just appear to be cheap.
  6. It would be better to split the offices into separate products so people feel like they have full ownership. There’s other problems too like time-zone differences and general communication problems.

Software Development Interviews

I think a big challenge during the Software Development hiring process is how to determine who is good or not. 

Sometimes companies give large projects as a do-at-home test, but this puts people off when they currently have a job and have other commitments that take up their free time.

You could be given a smaller task, but then it may still not give a good representation of how someone codes, and you could easily get someone else to write it for you.

Other companies leave it until the interview and make developers write code in a manner that is completely out of their comfort zone; e.g. using pen and paper, or a whiteboard. Apparently, Google makes you write code in a shared Google Doc.

I’ve sometimes been given a timed test to complete at home. So you are emailed a list of varied questions and have to quickly code them then send them back via email within an hour.

The challenges they make you do can be varied. Sometimes they can be really basic, using fundamental concepts you will use on day 1 like simple loops. Sometimes they opt for the computer science route, and ask you to implement classic algorithms, maybe a sorting algorithm like bubble sort. Sometimes I have been asked to create a structure like a linked list, or a Directed Acyclic Graph.

You could specifically study these typical questions and then get past the code part of the interview process – even though in a real job you would struggle when posed with various real-world problems. There are plenty of websites that sell training courses that target these algorithms because they are so widely used in the hiring process.

So in the worst case, you will be writing code with a pen, with no resources to help you, under pressure from people watching and judging you.

Yet, when you are employed, you are using an IDE like Visual Studio on a PC, have more time to come up with a good implementation, and can use many internet resources to help you. You will need a good knowledge of the existing codebase, and be utilising 3rd party libraries.

You need to be able to communicate effectively with team members, use Google/Stack Overflow to find solutions/answers. I think it’s important to be able to do code reviews, and show debugging skills, but this is never tested as far as I’ve seen.

In a high-pressure interview, you don’t get a representation of how the person is day to day. I tend to panic in an interview, but am completely relaxed in my job. Even when there is a tight deadline, it still doesn’t faze me as much as an interview situation. So I’d say you can’t even reliably test “ability to handle pressure”.

There was one time we have used this typical interview approach for internal candidates. What’s the point giving a programming test to a software engineer that’s currently employed at your company? It makes sense to give this test to someone moving from another department. I got denied a Senior promotion using this method, yet most of my team members would have vouched that I was among the best in the team. Yet, underperforming Developers got promoted using this process. I’ve written many stories about them here (Colin, and Derek).

I’m not sure what the best way of judging developers, but I would probably go for a programming test using a laptop while allowing use of the internet (or just the interviewer’s knowledge). The test would involve writing some new code, but building upon some existing code which has a bug or two that the candidate is required to debug and fix. The final part of my test would be to review a selection of code changes to see how they handle Code Reviews. This could take a few hours, so I’d only include a few standard questions.

Currently, it’s a failed system if someone can be an excellent programmer, demonstrated by a comprehensive Github profile, yet fail an interview because they couldn’t come up with an optimal solution for some problem while being surrounded by a panel of intimidating interviewers.