Badges to earn
Writing good code is an art. And therefore, evaluation can be subjective. We get it. But bad code is easy to spot and we believe there are some basics that should be in place. The things to keep in mind are the following. Can others maintain your code? How easily can you add new features? Is your solution simple? etc.
Here's a quick video walking through the badges to be earned:
https://youtu.be/4S-8nboe9IY
We've broken this down further and you can see the individual parameters below:
Functional / Object Modeling (OOPs)
For many of our coding challenges we look for application of Functional paradigm or Object oriented paradigm.
Functional Programming is about factoring a program into small modular pieces that do one thing and doing it it well and can be tested, individually. Functional programming is the process of building software by composing pure functions, avoiding shared state, mutable data, and side-effects. Functional programming is declarative rather than imperative, and application state flows through pure functions. Contrast with object oriented programming, where application state is usually shared and colocated with methods in objects. Read more about it here.
In OOPs, a good code solution would model the classes as close to the real world. Identifying the state and behaviour for real-world objects are the first steps towards a good object model. You can read how to earn the OOPS badge here.
Readability
Like Martin Fowler famously said “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” Here we look for ease of understanding the code (nested if-else & for-loops make it hard to understand code), language conventions, variable names, patterns used etc.. Maintainable code simply means “code that is easy to modify or extend”. At the heart of maintainability is carefully constructed code that is easy to read and easy to change/extend. You can read how to earn the Readability badge here.
Build
Here we look for build scripts that would help you work easily in a continuous integration environment. So the build script would build out your solution, execute it, run tests, handle dependencies etc..You can read how to earn the build badge here.