My Two Month Internship at Ona Kenya

Ona Staff
August 03, 2015

by Anne

The Application Process

My journey towards working with Ona was a systematic. It began with wise counsel from a former lecturer. His advice was quite simple: “If you trust your programming skills, you can apply for the jobs at Ona. Female candidates are encouraged to apply”. It was both thrilling and unnerving considering the global promotion of gender equality.

Take it or Leave it!

After much deliberation, I decided to take up the challenge. I sent my application with the required information and crossed my fingers hoping HR would take notice it. Fortunately, I got a response from the Peter, the CTO, to set up a time meet. That was a cause to celebrate! Count yourself lucky when you are invited for an interview before you finish your final undergraduate exams lest you get into the job of “looking for a job” when you are done with campus. The interview was conducted and then there was the “real interview” — software tests. This is a task that separates the men from the boys (well, in this case women from girls :)). It may not be as hard as it sounds, but it is the main gateway to working with Ona as a developer. I had 4 days to write a clean, logical code snippet that achieved a task! The final step of the application process involved a thorough code review with a group panel. They liked my thought process and code structure and I managed to join the team as an intern. The rest is history.

My first week at Ona was a great one. At a minimum, I did not starve my first day because Ona veterans were moved to treat me to lunch. Also, since I’m thinking about food, the best part of graduating in the course of my internship was enjoying some cake: graduand

The Induction

The first month at Ona involves an induction process into understanding what Ona is and the kind of business they engage in. Then, you are introduced to the improvements that beta.ona.io brings to the table. You need to schedule time with each employee to find out the work that they do at Ona. They are pretty awesome people by the way! Oh! I forgot to mention that you HAVE to make your first git commit during your first week. Besides, Dickson would always emphasize ABC (Always Be Committing) whether your code is working or not.

Mmmh… FP

Joining Ona without prior experience in functional programming may seem very intimidating at first but thank God for adept engineers who are ready to direct, help and challenge you through the learning process. Forget the Object Oriented Programming concepts and web development basics in HTML and CSS, Ona gives you a chance to learn Clojure among other languages and technologies like Om, React, Python, Django, Ansible, Vagrant etc. For some of you, this sounds very strange, right? You are not alone. I first heard about Clojure and ClojureScript during my first week at Ona. I remember telling my former classmates in campus about Clojure and not even one seemed to have ever heard about it, let alone written ‘Hello World’ in Clojure. So what is Clojure? Clojure is a modern functional programming language that features a concise syntax, elegant concurrency support and frictionless Java integration.

Invitation to Test Driven Development

One great thing that I have learnt at Ona is Test Driven Development. As the name suggests, it simply involves testing your logic/code before implementation of your code for production, which of course fulfills that test. If you write your test first, it means you actually understand the intended behaviour of your implementation. In my experience, I have written tests using clojure.test and midje. Midje provides a migration path from clojure.test to a more flexible, readable, abstract, and gracious style of testing.

Let’s look at a simple example of a test to add two numbers using clojure.test, say 1 and 1. Create a new Clojure project using the lein template. Replace the default test with the one shown below:
(deftest add-1-to-1 (testing "addition of 1 and 1." (is (= 2 (+ 1 1)))))

We know the sum is 2. So why do we have test for that? Even a 1-year-old child knows that! The truth is we just need to verify that 2 is the actual result of adding 1 and 1. So this proves the actual operation of addition. To run this test, you need to simply run lein test in the REPL. If all goes well you should see the following output:

test

You can now write tests for any other behaviour or function you need to implement.

All in all, being at Ona Kenya especially as a fresh graduate provides a great learning experience for anyone who wants to take on a career path in software development. Data structures and functions cease to be theoretical concepts that you heard from your professor in first year of campus, but you actually get to work with them in developing solutions for your clients.