/blah

Primary LanguageJavaScript

About Blech Blog

Blech Blog is a great decent terrible blogging platform written in pseudocode. We want you to make it less terrible.

What are we gonna do?

We'll show you some files from the Blech Blog project. We'll ask you to read through each file and explain what's bad about it. Then we'll ask you to improve/fix the file.

How should you tackle this?

Step 1: Take your time to read through the file and understand it as a whole. No bonus points for firing off complaints line-by-line or finishing fastest. Take notes about problems you see with the code as you go along. You're welcome to ask questions of your interviewer.

Step 2: Once you understand as much as you can about why the code is flawed, explain the problems to your interviewer. We want you to speak about:

  • Why the code is bad
  • What consequences the bad code will have on the software
  • How the code could be fixed/improved

Step 3: Rewrite the code to make it better. You can write in pseudocode or your preferred language. If you write in pseudocode, you can call methods/libraries whatever you wish, so long as the names are intuitive.

Tips & Suggestions

  • Each file should be considered in isolation. Don't worry about how your answers for a previous file might influence best solutions to the current one.
  • Assume you have complete control over the entire codebase. If an external object seems poorly designed or its fields/details aren't specified, assume you can change/specify whatever you wish for the sake of your solution
  • We're looking for you to identify flaws and suggest design improvements. When it comes to flaws, don't overthink things. The flaws we're looking for are unambiguously bad for widely agreed reasons, not our own subjective preferences. When it comes to design improvements, we're more interested in how you explain & defend your ideas than any objectively 'right' answer

What we're testing

We're looking to evaluate:

  • Your ability to understand code
  • Your knowledge of broadly accepted coding principles/practices
  • Your ability to implement & improve code

There are no obtuse or "gotcha" answers - we dislike algorithms/patterns/practices a diligent programmer wouldn't see in their day-to-day work. In short, just treat this as though a terrible codebase has been dumped on your desk, and you've been asked to fix it.

PS: Our real code is better than this. We promise