2013-2016: Cloudless Studio & Visuality
My longest-to-date contract with Visuality, a RoR software house from Warsaw, is over. Now's the time for some reflections.
It's now official. The end of 2016 is going to bring a closure for my contract with Visuality, a one-of-its-kind Ruby on Rails software house from Warsaw. Our joined web development adventure started in April 2013 so it's been almost 4 years and it's by far the longest contract that I've had pleasure to complete.
As far as software engineering is concerned, you'll be faced against many opinions about how often you should change jobs in order to stay sharp, motivated, challenged and paid. Among others, I've been told by my peers that:
- I'll soon do same things over and over and quickly stop developing new skills
- Due to that lack of challenge, I'll be completely burned out in two years tops
- I'll never get a serious raise without changing the job
Still, I've consciously chosen to stay for longer in this very unique working environment, which a small software house startup definitely is. I was lucky enough to start at the size of 3 bosses + 3 employees in an office that was a serious health hazard and with a toilet that could lock you for night. Then I was lucky enough to see the crew growth to almost 30 people total. I had a chance to code at 4 offices, in about 25 projects. And I could finally visit the toilet without fear.
Now, let me share a pocket full of insights and findings about how it all worked out. I'll try to draw some generic conclusions out of them, applicable for all developers working or aiming to work in a similar environment to the one I had at Visuality.
How it starts
When dealing with small companies, you usually get to talk with your future boss directly during the recruitment process. I was lucky enough to talk with all three of them when I came to Warsaw. From today's perspective, I know how important that talk was for me and how it helped me make a fitting contract choice. Why? Because in startups you can safely assume the character of the company is highly determined by the character of its owners.
If you pay close attention on your first visit in your hypothetical new office, you may already notice if there's a common ground in areas such as:
- Common long-term goals
- Personal growth opportunities
- Working culture
- Sense of humor
Remember that it goes in both directions. As it should. I think the only way for it to work out for both sides in such a small company is when there's a mutual feeling of valuable and pleasant companionship. So I'd consider it very important to actually show a bit of own character right from the start. Recruitment talk may be a stressful experience but there's always going to be a fitting moment to tell something unique about yourself or make a joke.
Lastly, when it comes to my recruitment process at Visuality, I'll always be grateful to my bosses for not asking me "which animal I'd like to be". And that's speaking from the experience of having more than one recruitment talk at that time. Certainly, I prefer transparency and sheer honesty over a template-powered psychologist wannabes. And that's exactly what I got. I mean the honesty, not the wannabes :)
1. Building complete products
In corporations like Google or Facebook you'll often (depending on a position of course) only get to work on some small piece of the product puzzle, so getting to see the whole picture is indeed something that you'll only get to do and enjoy in small teams. And only after you stay there long enough to prove yourself (or yourselves) as capable of delivering a serious project. End to end.
I managed to get there and now I consider this by far the biggest benefit from those years spent at Visuality. I also consider it the biggest fun factor and the biggest source of growth to have been able to participate in project evaluation, planning, architecting, coding, deployment and support.
2. Continuous growth VS boredom
It's absolutely not true that spending a lot of time on one contract will make you bored and will impede your progress. It all depends on what you do and not on who your boss is. Of course what you do depends on your boss but that's a separate point (the next one to be precise).
The logical way to look at it is that if you grow and become more and more efficient and useful and let your bosses recognize that, then they'll most certainly want to make an use out of it. If so, then you will naturally get to face new challenges and do new stuff. You'll be neither bored not halted. Considering that, it may actually be better to stay in one place and get recognized for the hunger of challenge that you have. That was at least my case, as I believe.
3. Bosses & honesty
Do yourself a favor and find yourself a boss you feel you can be honest with. And be so. This way you'll be able to communicate the issues and personal needs that you know will come up sooner or later, especially if you plan to work with one contract for longer. This is a prerequisite for the previous point. You should be always able and welcome to communicate what projects and environments you'd like to work with.
Otherwise, you will end up going for option B which is changing a job just to fix some minor annoyances that could be worked out...
I believe a clear communication between me and Visuality was one of the main reasons for me being usually really happy about what I work and get challenged with.
4. Passion & responsibility
For me, the key for staying in the game is to let my passion to coding out on a daily basis. This makes me learn new stuff and spend my private time thinking about new ideas, optimizations, technologies and solutions.
But at the end of the day, you'll be expected to responsibly estimate and deliver some tasks, without overcomplicating things and getting stuck on too much research of fancy new libraries or reiteration just to use
fancy-lib-v2.0-breathtaking instead of
fancy-lib-v1.1-old-n-boring. And sometimes you'll have to do uninspiring stuff, like finding that ugly bug.
So my idea at Visuality was to carefully pick the right time to jump in with initiative and become driven by passion. The longer I've stayed on a contract, the more of such moments I've faced. I've always tried to assume the things I'm passionate about were indeed useful for the projects and businesses I've worked with. As they definitely should.
5. All in one & self-organization
That's yet another point specific to small software houses, but still useful with contractor of any size. In small teams, you should be ready to be few people in one. In my case, it was something between a full time Ruby on Rails back-end developer mixed with a quite a bit of JS front-end programming, some CSS trickery pulling and periodical but otherwise intensive and non-trivial dev-ops episodes. For me that was always a plus. Also, I was quite prepared for that after doing some small freelancing completely on my own prior to the Visuality contract.
The other related factor is the ability to organize one's own work, because the smaller the company the less of an actual project management you'll get. During my time at Visuality, I've witnessed a clear division between programmers who enjoyed being sort of their own PMs, just like I did, and those who suffered due to the lack of clear and formalized chain of command. So this one seems to highly depend on personal preferences.
6. Open space - startup style
It's an important thing to note that startup size open space brings people together. Considering the amount of time spent together every day, it's a little like having a second family. Of course, you'll be working most of the time, but you'll also get a laugh together or comment issues with clients on a daily basis.
Not only that, you'll also get a share of each other's bad moods, frustrations and views on such delicate topics as religion or politics. You'll surely get to learn how to respect other people's opinions and habits. It's a developing experience and the one that, although arguably more intensive in a small team, ultimately applies to all team sizes and personal life as well.
7. Make company grow
I must say it was truly satisfying to see Visuality grow each year I've worked there. Being a measurable (although smaller each year) fraction of the crew made me feel like I have an impact on the whole company and its success. Now, how much will your contribution to this or that project at Google affect the company? It's not like it never will, but with a small company you're almost guaranteed to see and feel that growth. Moving 3 times to the bigger office in less than 4 years is a great success of Visuality and I'm ultimately proud to be a part of it.
Besides the measurable growth of company wealth and size, there are other things that made me feel like having an impact. For one, I was able to discuss technology choices with my CTO and, to some degree, affect our technological direction. I was also able to do presentations and lightning talks in order to introduce new technologies and coding patterns to everyone. Finally, I was able to see how my ideas affect our business and turn out to be either good or bad.
8. Chillout zone VS its placeholder
I've heard first-hand about companies in which chillout zones are nice and dandy, but for some reason people barely use them. It many be:
- Bad placement
- Wrong atmosphere
- Always too tight sprint schedule
Fortunately, that's not the case at Visuality. I had my fair share of FIFA matches and I've embraced a whole new way to perceive a workplace. Thanks to all those who were there to have their asses kicked by me after a long working day and curse you all who dared to stand in my way to ultimate virtual football domination :)
9. Litle things matter
There's one more thing that I got to appreciate at Visuality. It's how little things can help when you're struggling to close that big feature and need some affirmation or appreciation. Here are some examples:
- It may be seeing your boss remembers to say "hi" to you literally every day, regardless of how busy he may be on that day
- It may be your boss remembering to order that special kind of tea or coffee that turns regular Joe into an unstoppable coding cyborg
- It may be the knowledge that you can leave the office in case of family emergency and be asked how it played out the day after instead of being afraid for your contract
In the end, you just can't appreciate enough being treated like a person and remembered about.
Thank you Michał, Marcin and Michał! Thanks, the Visuality crew, both current and the past! I sincerely hope to see the company grow further in 2017 and beyond. I've had hell of a time.