Interning at Ackama

I worked at Ackama as an intern between November 2018 and March 2019. In that time I worked on an internally used Rails app that was built to help manage requests for purchases by Ackama employees. Below is a little bit about what I learned about Ruby on Rails, as well as the culture and work life at Ackama.

My experience with Ruby on Rails

Ackama primarily builds websites using Ruby on Rails. I found Rails to be a very solid framework that does most of the heavy lifting for you when it comes to creating a website, for example it has implementations of website functionalities such as databases and mailers so these can be incorporated into a website quickly. There is also a large range of ruby modules (called gems) which can easily be incorporated into your app to perform specific functions, an example of this is Devise which is a gem that contains a full implementation of an authentication system (including features such as password reset emails). One problem that I found with Rails though is that it has a steep learning curve.

One of the main quirks of Rails is that it is very particular about how things are done. The way that this framework was designed means that some functions effectively need to be implemented using specific design patterns (unless you use some janky work arounds), some Rails functionality is also limited to certain parts of the framework. These design decisions were deliberate. There are two major benefits to this approach, firstly it means that the structure of Rails apps is fairly consistent (which makes it much easier to onboard Rails developers on a project) and secondly, it strongly encourages users of Rails to develop their apps according to good design practices (making it easier to maintain an app and reuse different sections of it in other apps). One consequence of this structure is that it makes Rails significantly harder to initially learn as you also need to understand what each of the different parts of a Rails app are for and what each one can and can’t do.

Another aspect of Rails that can make it difficult to learn is that the framework is dependent on a range of different languages including HTML, Ruby, Javascript, CSS, and JQuery. This means that Rails is not hugely suitable for first attempts at web development. My education in software engineering has spent very little time focussing on web and the only one of these languages that I felt comfortable using when starting Rails is Javascript. This means that in addition to learning my way around Rails, I also needed to upskill in all of those other languages. CSS in particular proved to be difficult to understand initially, the first pull request that I submitted that contained CSS code had 52 comments.

Even though I found Rails intimidating to pick up originally, I found it to be easy to use once I found my way around it. It has its quirks but Rails does so much under the hood that makes it worth using regardless.

Culture and Mental Health

One thing that really impressed me about Ackama (and one the reasons that I wanted to intern there) is the company’s dedication to helping take care of employees and to help build create an environment that is healthy to work in. An example of this is that Ackama has one of the most comprehensive discrimination policies that I have seen from a company, included in this policy is the explicit mentioning of groups who are usually only implicitly covered by these types of policies such as neurodiverse and non-binary people, this is also the only discrimination policy that I have read that explicitly states that the company prioritises the safety of minority employees over the comfort of other employees if any dispute occurs.

Ackama is also really good about trying to maintain work-life balance despite being in a deadline-driven industry. This is really important to me as we in the tech industry can very often overwork ourselves. It’s a poorly kept secret that the workload of an engineering degree is brutal if you want good grades, I would sometimes find myself doing university work for over 60-70 hours a week. Since I started full-time work I’ve found myself to be less stressed out and enjoying coding a lot more.

There is also a range of policies designed to encourage employees to get to know each other beyond the tech-office standard Friday drinks. One example of this is coffee pairings. Each employee at Ackama is assigned to a coworker and that pairing grabs coffee on company time. This means you get to meet other people working at the company that are involved in different disciplines and different parts of the company.

Investment Time

One of the unique things about working at Ackama is Investment Time. Investment Time is time that is set aside for employees to develop their skills or to undertake side projects, this occurs all day every Friday unless an urgent client issue comes up or there have been public holidays that week. In addition to being a programmer, I am also a composer and sound designer that is looking at trying to find work in the games industry. During investment time I was able to do dedicate a fair amount of time each week to practicing these skills (because they were also things that would enhance my technical skills), something that I had been wanting to do for a very long time but have not had the time to due to the extensive hours that come with studying engineering at university. I also spent some time learning languages that I have not worked in extensively such as Ruby and Python.