At CodeNation, you are constantly surrounded by motivated and driven peers in a fast paced environment. You will work with the most talented engineers and thought leaders to shape the future of product development.
We build our technical leadership by developing and growing our talent internally. We strive to provide optimal conditions to campus recruits in order for them to eventually grow to be Chief Architects at an accelerated pace. Our assessment process is geared towards identifying the strengths and passion of a student and mapping those to our work. The focus is to ensure a good overlap of talent, passion and organisation to build a long lasting relationship.
We are obsessed with the quality of the code we deliver. We believe in clean code that is terse, self contained and easy to modify. In all candidates, we look for the ability to write efficient code as concisely as possible without giving up too much on readability. The language of choice does not matter as long as you have a firm grasp over it. We stress heavily on the evolutivity of the code - its ability to adapt to new constraints without requiring major changes to the design of the software.
If there is one thing every candidate gets asked, it is to design an algorithm to solve a particular problem. The purpose is to understand if you have the basics down, or, can at least identify core/basic data structures, respective implementations, and minor optimizations thereof. If you have a good grasp of algorithms and data structures, you are likely to write good code. It helps if you possess working knowledge of some commonly used data structures and core CS concepts - Arrays and Strings, Linked Lists, Stacks and Queues, Trees and Graphs, Recursion and Dynamic Programming, Sorting and Searching, Object Oriented Design, Scalability and Memory Limits. In some cases, you may need to understand, use or modify data structures not found in common textbooks. In some cases, you may need to come up with new data structures or combinations.
To make the process clear and faster, translate the problem into a few patterns and solve said problem using them. Most importantly, explain, discuss, express your views.
Your approach matters much more than reaching the precise answers. Rushing to a solution rarely helps. Think about it, understand the mechanics of the situation, look at the problem from multiple perspectives.
Follow a direction that gives effective practical solutions to complex problems by making smart tradeoffs. Show your ability to ramp up quickly and to go into depth into any area. Be tenacious. Be creative. Start from scratch and take different approaches each time. It builds your toolbox of techniques and thinking modes. To enhance your problem solving ability, focus on how you go about understanding the problem being presented. Once you fully understand the problem, similar problems become easier to solve.