Code Monkey home page Code Monkey logo

blah's Introduction

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

blah's People

Contributors

chadhamre avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.