38 Degrees Campaign Technologist (Ruby Developer) Application

alt text

The file within this directory called solution.rb contains the solution to the problem described below:

'Please write a Ruby programme which will print the numbers 1 to 100 on separate lines, except for if the number is divisible by 3, in which case it should print ‘People’, or if it is divisible by 5, in which case it should print ‘Power’. If the number is divisible by both 3 and 5 then it should print ‘People Power’.'

This solution has been provided as part of the application process for the role of Campaign Technologist (Ruby Developer).

To run this program:


  • Clone this repository
  • Within your terminal, navigate to the folder where you've saved this repo and enter ruby solution.rb
  • See terminal for results

Answers to the following questions included in the application process are also included below:

1.) Of the projects you’ve previously worked on, which was your favourite, which was your least favourite, and (in each case) why?

My favourite project thus far has been my personal rendition of the classic game Space Invaders, which you can find here: https://github.com/felipeldn/spaceinvaders2.0. This was my favourite project as I deliberately chose an idea which was vastly different to the applications I'd become comfortable building up until that point (social media clones, blogging applications, twitter clones, etc). Combining creativity and research in order to come up with game logic, as well as putting a stronger emphasis on learning how to work with keyCodes and EventListeners, along with some other challenges while building the front end, was both challenging and fun. Seeing people's reaction to playing the game also gave me huge satisfaction.

My least favourite project thus far has been a 'reading tracker' which I named 'BookNotes', you can find it here: https://github.com/felipeldn/BookNotes. The reason this was my least favourite project was more so due to factors outside of programming. Learning the fundamentals of React for the first time while simultaneously working for the NHS during the height of the pandemic was rather stressful, which made the learning process more of a slog than the usual fun of learning and implementing new things.

2.) What are the key skills and lessons you’ve learned from them that would help you in this job?

Patience, resilience, persistence, grit, tenacity and diligence.

As far as technical skills, both these projects were much more challenging on the frontend. Diving deeper into JavaScript expressions, JSX, React Components, State and Props was definitely a challenge, but a fun one.

3.) Describe to a non-technical person what an API does

An API is a software intermediary that allows two applications to communicate with each other. That is to say, the API delivers your request to the provider you're requesting it from, and subsequently delivers the response back to your application.

4.) What does the proverb “Don’t let the perfect be the enemy of the good” mean to you in the context of software development?

To me, this means that the best solutions usually lend themselves to being broken down into digestible steps/chunks. One of the things I struggled with as I began my coding journey, was trying to immediately think of a perfect, finely-tuned solution before diving as far as I could into the problem. Oftentimes, a much more efficient process would be to arrive at a solution which is efficient and does the required task, and then building on/refactoring from there.

5.) What do you think are the key ethical responsibilities of a software developer?

Again, on a personal level, I think it'd be a great waste of the problem solving skills of a developer to work on projects which are mainly destructive (i.e. weapons systems manufacturers). We all have responsibilities to our community (both local and global) regardless of our skills. However, with software developers being in such demand in these particular industries, I think it's important to educate oneself on the impact these kinds of companies are having on our planet, as well as our fellow human beings.