/ Engineering

Our guide for new engineers and data scientists

This article spells out everything you need to kickstart your journey as an AL engineer or data scientist.

If you are reading this because you are joining the Altitude Labs team, first off, we're excited to have you on board!

We strive to make Altitude Labs a great place for engineers, data scientists and designers to work. In part, this means making sure you work alongside bright, proficient and motivated people. It also means helping you grow both as a person and an engineer.

We have developed a curriculum to help you hit the ground running so that we can focus on advanced concepts from Day 1.

It is VERY important that you set aside an estimated 100-150 hours of time to go through this material. You are expected to know this material thoroughly on the first day to join us.

If you have any questions, feel free to contact us!


Contents


Typing

Applies to: Everyone

The keyboard is our instrument through which we make magic happen. It helps if we are able to type accurately, quickly and without looking at the keyboard.

If you cannot touch type, please dedicate a few hours each day to learning it. This will help you tremendously.

Requirements:

  • Be able to type accurately, quickly and without looking at the keyboard
  • Touch the mouse and mousepad only when you absolutely need to
  • Know common shortcuts on Mac OSX

Impostor Syndrome

Applies to: Everyone

"Impostor Syndrome" is a term for the persistent and foreboding feeling that I am undeserving of my position, that everyone around me is more talented and qualified than I am, and that any day now the other shoe is going to drop. It's all bad news, of course; feeling unqualified only sandbags future learning. Don't be alarmed! For numerous reasons it's a common experience for many engineers. Read up on how to approach it.

Imposter syndrome does not only apply to code. It also applies to being resourceful, selling yourself, public speaking, communication, speaking up, initiative and other soft skills. Be ready to step out of your comfort zone when you join us.


Debugging

Applies to: Everyone

Debugging code in the browser is convenient, since all modern browsers come with a powerful debugger built right in. The debugger gives you the ability to pause the execution of your program, inspect the values of variables in real time, and even run new code in a live context if necessary. Leveraging those tools to analyze and determine the cause of unexpected behavior is the most essential programming skill you will ever learn.

Google Chrome, our browser of choice, has a great set of development tools that we'll dive into.

Takeaways:

Reference:


Terminal

Applies to: Everyone

Takeaways:

  • Be able to create, update, remove, navigate folders and files in Terminal without using Finder or excessive googling
  • Understand the folder structure on a Mac
  • Be able to use the following commands instinctively: cd, ls, mv, cp, rm, pwd, mkdir, scp, ssh
  • Be able to create ssh keys and add them to Github with the help of an online tutorial

References:


Git

Applies to: Everyone

Takeaways:

  • Know what a version control system is and why you'd want to use it
  • Be proficient with git commands including clone, push, pull, add, status, diff, commit, rebase, branch, cherrypick, log, reset and remote
  • Be able to create a feature branch and make a pull request
  • Be able to interactively rebase your feature branch if history has changed

Reference:

  • GitImmersion: Labs 1-30:
    Part one of a comprehensive Git walkthrough. It assumes no previous experience, which makes it a friendly introduction to Git.
  • GitHub - Forks and Pull Requests:
    A quick video covering two of GitHub's most important features: forks and pull requests. These features are central to collaborating on open- and closed-source projects and are a main component of the workflow you'll use at Altitude Labs.

Web (Frontend & Backend)

Applies to: Web engineers

Takeaways:

  • We use the technologies like React, React Native, Node, Sass, Webpack, Gulp, ES6, MySQL, PostgreSQL, MongoDB and Amazon Web Services at work. Be sure to have some understanding of what they do and how they work
  • Know your Javascript fundamentals: syntax, closures, the keyword this, differences between ES6 and ES5, promises, async functions
  • Be comfortable converting a design image into pixel perfect HTML and CSS. This means using as few HTML elements as possible
  • Basic understanding of CSS rules (e.g. difference between block, inline-block; what is float; what is position: absolute, position: relative, position: fixed; when does vertical-align apply?). CSS is mostly comprised of rule-based principles which can be learnt in your own time. It is not meaningful to have to go through them at work.
  • Know how relational and NoSQL database work. Understand what database migrations are.
  • Understand how templating systems work
  • Understand the difference between functional and object oriented programming
  • Be comfortable creating and working with RESTFul API in Node.js

References:


iOS

Applies to: Mobile engineers

We use Objective-C and Swift as our development language for iOS apps. Be sure to familiarize yourself with the following concepts:

1.Objective-C Basic : Introduction of String, Number,Array and Dictionary
Strings, Numbers, Arrays, Dictionaries
Duration: 1 Hour
Although these are some fundamental topics, we recommend you to read through them to make sure that you didn't miss any essential concepts.

2.Auto Layout
Link
Duration: 0.5 - 1 Hour
Since there are multitude of iPhone deivces with different screen sizes in current market, this tutorial demostrates how to make an adaptive layout.

3.MVC and Delegate
Link
Duration: 0.5 Hour
Demonstration of how to use delegate.

Link
Duration: 0.5 Hour
Concept of MVC design pattern and why delegate is so important.

4.Declare private variable in Obj-C
Link: http://inchoo.net/dev-talk/ios-development/how-to-add-a-property-via-class-category/
Duration: 15 Mins
Objective-C does not have access modifiers. However, it's a good practice to separate public and private variables. This tutorial shows a workaround to declare private variable in Obj-C.

5.Obj-C style guide
Link: https://github.com/altitudelabs/wiki/blob/master/style-guides/style-guide-objective-c.md
Duration: 1 Hour
Now You've mastered the essential knowledge of iOS development. However, to be a good team player, you need to know how to make a clear and readable code so other people can review your masterpiece easily. Please read this wiki page in detail. It might cost you a lot of time but it will benefit your career.

6.Simple UITableView
Link: http://www.appcoda.com/ios-programming-tutorial-create-a-simple-table-view-app/
Duration: 0.5 Hours

6.UITableView with custom cell
Link: http://www.appcoda.com/customize-table-view-cells-for-uitableview/
Duration: 0.5 Hours

7.JSON in iOS
Link: http://code.tutsplus.com/tutorials/getting-started-with-jsonmodel--cms-19840/
Duration: 0.5 Hours


Android

Applies to: Mobile engineers

We use Android Studio as our development environment. Read up and familiarise yourself with the following concepts.

Fragment
Link: http://www.vogella.com/tutorials/AndroidFragments/article.html

How to pass argument to fragment using static constructor
Link: http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html

Custom ListView, GridView, RecyclerView
Link: http://www.codelearn.org/android-tutorial/android-listview#Custom-ListView-with-BaseAdapter

ViewPager
Link

Multithread
Link

AsyncTask
Link

Screen rotation
Link: http://www.gitshah.com/2011/03/how-to-handle-screen-orientation.html
Link: http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html

JSON
Link: http://www.survivingwithandroid.com/2013/10/android-json-tutorial-create-and-parse.html

Networking
Link: http://hayageek.com/android-http-post-get/
Link: http://www.vogella.com/tutorials/AndroidNetworking/article.html

ImageLoader API for image cache and display
Link: http://www.101apps.co.za/index.php/articles/gridview-tutorial-using-the-universal-image-loader-library.html

ActionBar
Link: http://www.androidhive.info/2013/11/android-working-with-action-bar/

Custom view
Link: http://www.vogella.com/tutorials/AndroidTouch/article.html#singletouch

Memory management
Link: https://www.youtube.com/watch?v=_CruQY55HOk
Link: http://android-developers.blogspot.hk/2011/03/memory-analysis-for-android.html

Re-using layouts
Link: http://developer.android.com/training/improving-layouts/reusing-layouts.html

Justin Yek

Justin Yek

Partner & Cofounder @ Altitude Labs. Responsible for our in-house personalization technology Metisa.

Read More