estimated reading time: 4 minutes
We here at WorkGenius have a very strict and rigorous recruiting and hiring process, designed to create a very high performing team of IT professionals. At the same time we think it’s important to interact with each other in a relaxed, open environment which initially manifests in interviews being rather casual conversations. This disconnect - conversational interviews on the one side having high expectations on the other - seems to create some confusion among applicants, so we want to take the opportunity to explain to you what we expect from all our coworkers.
Why we care
We are creating something that is not an incremental improvement, not a new check out process or a slightly better price comparison site. We are rewriting the rules of how work gets done - to create flexibility for talent and business in the workplace. This is revolutionary.
Revolutionary ideas always require "revolutionaries", people with an open mindset, not afraid of failure, and ready to challenge the existing, the emerging and the tempting.
Henceforth, you may be a outstanding engineer and yet not be a fit for us. And here is why.
Dealing with code
Almost every developer is very skilled in dealing with their own code. They’re very fast in churning out features and when something breaks, they have an almost clairvoyant understanding of what is going on. When on the other hand someone else simply forgot a return statement at the end of a function, the debugging time can become astronomical. That’s a curious divide and we explicitly test your ability to effectively work with someone else’s mess code. How comfortable are you with dealing with the unknown?
Of course we don’t expect you to constantly make a mess, on the contrary we don’t expect anybody to make a mess, ever. Your code should always be clean, always be easy to understand, and always work. You should even improve existing code - within reason - on a daily basis.
Every day we make changes to the systems that make WorkGenius work - and genius. We fix the bugs that we - or others - left in. We add the features that move the community forward. We are the surgeons performing open heart procedures on a system with enough complexity to not fit into a single person’s head. For most developers this is a scary environment and they shy away with excuses like “this is shit, we have to rewrite everything”. Naturally, rewriting everything is almost never an option, but we want to move forward, we want to get rid of the bad parts and confidently go towards a bright future. This requires you to be confident in your abilities to read and understand code and trust your colleagues to be vigilant in reviews and mentorship.
Being a professional
We hire developers for what they know in eager expectation of their contributions. This means you should know what you’re doing. You should have a specific reason for every action you take and you should be able to express your reasons concisely. Playing around with code until it works by coincidence and then declaring “it works” is not good enough. You should be able to explain why it works, what the tradeoffs are and under what circumstances it stop working. That’s what it means to be a professional.
A great concept that allows all everybody to contribute, regardless of seniority and hierarchical standing. In practice we’ve seen that since requirements have not been checked and verified again and again in a flat hierarchy, they might not always be optimal. Thinking a bit about it flat hierarchies is less of a benefit but very much a challenge. It requires you to not just have the willingness to contribute, but the ability and confidence to do so. You should challenge technical solutions in the context of business goals, stand your ground defending your ideas, ultimately understand the best solution and then act accordingly. In the best case you can even produce data to back up your opinion and make it a fact.
Hopefully this sheds a light on our principles and if you find yourself in here, if you have similar ideas of how it should be, don't hesitate to get in touch.
Ivan (Lead Developer), Florian (Head of Development)