How big is your Dev-Team? Into what functional sub-teams is it divided?
TimeTac currently has more than twenty developers working on state of art time tracking solutions. They are organized in four development teams: two full stack web teams, a native apps team and an integrations team. Each team is capable of delivering a feature end-to-end. There is also an independent DevOps team. Most of the individual engineers are specialized towards either frontend or backend.
How is your development team organized and what reasons led you to organize in that particular way? What are the advantages and disadvantages?
Dev teams at TimeTac continuously improve. Periodic retrospectives allow us to inspect and adapt our processes to best fit our needs. Our full stack web teams use core scrum with two week iterations. Scrum fosters transparency, and the short feedback loops help us to reduce risk while still allowing developers to focus. For our other teams a kanban based approach has proven efficient.
All engineers can participate in our communities of practice. These are special interest groups focusing on, for example, frontend technologies or test automation best practices. Our communities of practice foster inter-team learning and innovation. They also help prevent finger-pointing and build solidarity between teams.
What makes your team, in comparison with other teams, special?
The best thing about TimeTac is our company culture. Every member is eager to help the rest of the team. Our engineers are genuinely humble and friendly and always up for learning something new. We try to maintain an environment that nurtures focus, with few interruptions, while still giving colleagues the assistance they need.
How is your development department integrated into your recruiting process?
The entire recruiting process is conducted by the software engineering department: writing the job descriptions, representing the company at job fairs, inviting candidates and conducting interviews. All of this is accomplished by members of the software engineering team. Representatives of the relevant community of practice prepare interview questions and organize coding challenges for the candidates. We always closely evaluate how applicants fit to both the target teams specifics and the organizational culture.
We know that talented employees are the key to TimeTac’s longterm success. To demonstrate this importance, the CEO gets to know the most promising candidates before an offer is made.
Is there a set procedure for new hires? How are they integrated?
New talents are brought up to speed by going through an onboarding program that is part of our TimeTac Academy. Since we believe that learning by doing is one of the keys to successful learning, training sessions and real life junior jobs go hand in hand. Every new engineer has a mentor that guides the learning. The mentors also make sure that new employees get integrated into the team. That includes taking them to team lunches, inviting them to play darts or tabletop soccer and the like.
What do you look for in addition to technical qualifications when you are looking for a new developer?
We are well aware that our tech stack is demanding. Since we are constantly innovating and trying to keep our stack current, we’re interested in people who enjoy learning. In addition to that, to start at TimeTac, one needs to fit to our company culture. We want team players that enjoy collaborating in a multinational team. English is a must-have. It is our company language since TimeTac employees have more than a dozen nationalities.
What technical challenges are you facing?
In computer programming, the only constant is change. At TimeTac, we aim to find the best moment for adopting new technologies. This always leads to trade-offs. Some employees favor the latest and greatest, others prefer to use technologies with proven stability. Besides assisting the perpetual learning, it is a challenge to avoid falling behind while not jumping on a trend before there is critical mass.
Which technologies do you work with?
React, Redux, RxJS, TypeScript, Ext JS (legacy) - frontend web development
PHP (Symfony), MySQL, Redis - backend REST API development
Codeception, Jest, React Testing Library, Selenium - automated testing
Debian - deployed operating system
Docker, Github, Gitlab, Jenkins - continuous integration and deployment
Ansible - configuration management and provisioning
Java, Kotlin, Objective C, Swift - native applications
We do not expect candidates that are fluent in every element of our tech stack. Depending on the position, only a part thereof is important. In general, we prefer to hire talented learners that are interested in our domain and the technologies we use.
In engineering, everyone has freedom with regard to their preferred operating system, text editors, integrated development environment etc. The tech-stack for running our applications is fully dockerized as a common denominator. Everything that does not have to be local is in the cloud.
How have the technologies you use changed since your founding?
The most important changes have happened with regard to our continuous integration and delivery. While traditionally using Jenkins and bash scripts in the past, more and more of our automation code is now written in Python and Go. Gitlab runners have made life a lot easier and docker is omnipresent in our daily work.
With regard to our core products we value continuity while harnessing what new technologies can do. Hence, we allow our engineers to employ some of the most interesting new technologies. For example, the end to end testing code is written in the most recent version of EcmaScript with jest as a state of the art test runner.