Hey! It looks like you're using an old browser - here at Makers we are always looking to use the most cutting-edge features the web offers and unfortunately your browser doesn't allow us to do this. We know you can't always switch, but we strongly recommend using the latest versions of Mozilla Firefox or Google Chrome.

Emma's story

Software Developer at ThoughtWorks on £32,000

Ruby
Python
Javascript

Before Makers I trained as a historian of gender, education and technology. Coding is like craft-making, figuring out puzzles, even experimenting in the kitchen, activities I enjoy doing but would never have thought could be related to software engineering. It requires teamwork, imaginative thinking, and curiosity. It’s language-learning, problem-solving and communication all in one - I love it and because of that I got into coding.

Code sample


            require 'set'
            
            class Cell
            
              attr_reader :slices, :value
            
              def initialize(value)
                @value = value.to_i
                @slices = []
              end
            
              def add_slice(slice)
                @slices << slice
              end
            
              def solved?
                @value && @value != 0
              end
            
              def to_s
                return '_' unless solved?
                @value.to_s
              end
            
              def solve!
                return if solved?
                assume(candidates.first) if candidates.length == 1
              end
            
              def assume(value)
                @value = value
              end
            
              def candidates
                (1..9).to_set.subtract(neighbours)
              end
            
              def neighbours
                @slices.flatten.map(&:value).inject(Set.new) {|set, digit| set << digit}.delete(0)
              end
            
            end
            

I chose to present this code because I am proud of the small, clean methods each with obvious names and clear responsibility.

Want to hire developers like Emma?

Request a call