Interview by Thomas Peham
May 8, 2015
Photos by swat.io / Thomas Meyer
From agency work to building SaaS products.
Johannes Nagl, CTO at swat.io shares the story of the digital agency "Die Socialisten" and why they evolved to a SaaS business lately.
Share this interview:
Johannes, can you please describe yourself in a couple of sentences?
Hi, my name is Johannes Nagl and i'm currently CTO here at Die Socialisten, Vienna, Austria. We used to be a Social Software Development agency, but in the last couple of months we're transforming more and more to a "traditional" SAAS-startup. I'm in web-dev for almost 16 years now - that's exactly half of my life.
How does a typical day in the life of Johannes Nagl look like?
Although there is no real typical day in SAAS-business, there are some common, repetitive patterns. Reviewing a lot of pull request/code improvements in the morning, contributing at least the same amount of those improvements myself until late afternoon and doing some "nice to have" / research-things in the evening. Besides that, there are a ton of disturbances each day. API outages, critical frontend-bugs or internal dart-challenges with my colleagues.
How did your childhood influences the career choices that followed later in your life?
Well, my whole childhood is the one big reason why I chose what I do today.
I remember playing computer games like "Golden Axe", "Dune 2", "Warcraft 1". My older brother got one of his first computers back then and I always admired his skills to perform these good old "hacky" DOS commands.
Quickly I adopted all of his skills and some years later, suddenly I was the guy with my own computer and so much know how that all of my family members/friends would ask me for help. So it was a no-brainer to finish school and go to university to study business informatics. I never thought of any other career path. More importantly I never ever regretted my choice a single day.
How did your university time influence your career later on? Do you think it’s “necessary” to go to university if you want to get started in web development?
University time is a door opener for finding like-minded people and for increasing your network. But, as software developer, we're really lucky people. We don't need any specific education or certificates. I know many really, really good developers who haven't graduated from secondary school or don't have an university degree. In every job interview I've participated by now, there was always a focus on latest projects and project experience in general. As far as I can remember, I never showed any school certificates (lucky me!).
To put it in a nutshell: Working for a SaaS product for one month, I've learned more than in 4 years in university.
What was your motivation to start at "Die Socialisten"?
Five years ago, I ended working as a partner in a little software agency where I worked with two of my friends. After doing some research and interviews, I had multiple offers. It was always important to me to find a company where everyone (even up to the CEO-level) does exactly know what he/she is talking about. "Die Socialisten" was the perfect match: A small company with absolutely no hierarchies, a "hands-on" CEO and an incredible interesting field of expertise: Social APIs. The company was well known for the outstanding know how and so I decided to learn something new. I even created my very own Facebook profile back then. :)
Was there any "aha"-moments when technology "clicked" for you?
In my understanding, technology is always meant to be a silent butler. You shouldn't see it, you should benefit from the advantages it creates. Finding the best restaurants in a new town, participating in meetings with people on the other side of the planet, looking up every single topic you can imagine, ordering food from the best Italian restaurant around: Nowadays, this is all the default. It feels natural and as a result of this: It feels boring. So, what's the next step? Having watched the "Microsoft Hololens" demos lately, it really clicked for me. It's stunning to see the new opportunities and reducing the entrance barrier even more. If this would all be possible without wearing these clownish glasses, I would love it even more.
There is no real typical day in a SaaS business.
Can you tell us one thing you like about working as a CTO at "Die Socialisten"?
Speed. We adopted Facebook's "move fast" mantra and applied it to almost every aspect in our company/products. This starts with having virtually no hierarchies and ends up with 5-10 deploys a day. Everyone is encouraged to give feedback and to contribute so called "daily improvements" (small projects generally based on user feedback and/or developer pain) which aren't really scheduled on our roadmap.
With all the speed in mind, we're doing really well in competing with medium-sized, old-fashioned companies. I love to exceed someone’s expectations. And that is what we're really achieving every single day. I never saw this kind of speed in another company.
Can you share some (technical) challenges in moving "Die Socialisten" from a web\social media agency to a product company?
Although we're using the same toolkit now and back then, the development paradigm changed completely. When migrating developers from creating short-lived marketing campaigns to long-lasting, always-on SAAS-solutions, it's a big challenge to implement a complete new mindset regarding architecture, code and sustainability. The agency projects where often one-man-shows, where different coding styles were applied. Standardising these styles was one of the first efforts which paid out very quickly. Using tools like vagrant or continuous integration helped to focus on the product even more.
Of course, having no defined dead-lines in SAAS-products is a big change too. Marketing campaigns always have fixed dead-lines, a dev can work towards. So defining small sprints with easy to understand user stories is a good way to create “virtual” dead-lines.
What tool stack are you using on a daily basis?
My Mac OSX dock contains the following: Chrome, Firefox, PHPStorm, HipChat, SequelPro, Skype, Spotify, Twitter, Atom, GitTower. Besides that, we use GMail, Intercom, Sentry, Blossom and of course: GitHub.
Is there any technology/tool/project you'd like to explore?
There are always way too much things I'd like to explore. Currently, the list includes elasticsearch, React.js, Postgresql, Laravel, envoyer.io, docker, optimizely, hhvm, nuclide.io, postcss.
What advice would you give yourself as a 14 year old?
Trust yourself. Don’t be afraid to fail. Stay open-minded and keep pushing. Some things might be hard (especially for 14 year olds) but follow your path and everything’s going to be awesome.
What’s the biggest challenge for you when it comes to software testing? Especially because you’re handling different products (walls.io / swat.io)?
I think of this challenge very often. For us, there are two big problems:
Internally, we're having quite old code bases without 100% test coverage. Upgrading to new tech stacks (php versions, mysql versions, MVC-framework versions) or implementing new features is always a big risk. So we try to split our apps into smaller parts and introduce more automatic tests afterwards.
That said: If we had to start new products now, development of this products would differ a lot compared to the old "legacy" codes we have to manage currently.
On the other hand, we're having quite an old frontend too. With the increasing amount of users, the number of monthly bug reports concerning visually broken stuff is increasing too (much more platforms, different translations, mobile devices, …). So tools like intercom and usersnap help a lot to find/reproduce these bugs faster.
Do you have dedicated testing resources for walls.io and swat.io?
No, we don't have any dedicated resources yet, although there is a high-level commitment to test all the things. Starting a couple of months ago, we decided to increase the level of (automated) testing. We integrated CI/Codeship to our workflow / deploys and this helped a lot. In web development, as it's not really a rocket science like managing a nuclear plant, I deeply believe in testing as "yet another discipline, every developer has to know and has to integrate in his/her workflow". So, dedicated resources are a good way to maintain an already well-established testing environment. But it's more important that every developer has internalized testing in his/her mindset before.
What is your passion about building software?
Creating a difference! Every day I use software that sucks. That's because of a lack in user experience or because developers tend to implement shortcuts which break the user experience overtime. So I keep pushing myself (and our team mates) to think as users, not as developers, and find solutions to fix real workflow/"daily-business" problems. We often receive much more gratitude when launching a "daily improvement", where we change a small detail in the app (moving a button, renaming a button) then launching a completely new feature. Respect your users, Eat your own dog food and love what you're doing. That's how you create a difference.
What do you think will be the major challenges in SW engineering in three years?
Too damn high expectations. If you log on to Facebook, search something on Google, or fire up the newest mobile native app: everything’s working in realtime, is perfectly responsive and blazingly fast. As a small startup, you can’t compete with all these big players on the market when it comes to mature tech stacks or the variety of platforms you have to support. So the major challenge is to focus on your unique selling proposition and balance your resources adequately.
And how do you ensure to not lose your (and your company’s) focus on your USP?
This is by far the most important question yet - unfortunately it's also very difficult to answer it. I don't have a 100% satisfying answer to this, but I think the most important aspect is to always ask yourself the following questions:
>> How does a feature help to decrease a users daily workload?
>> How does a feature fit in the current featureset of your product? Would users expect this feature to be in your product, or would they benefit more, if the feature would be provided by another tool?
If anyone in the team raises any concerns about a feature, rethink/reframe the feature. Although you might have learned to focus on the essential things, there's always a chance that you're implementing something without a real value though. So my advise would be: Don't lose too much time by over-implementing things. Start with a MVF (minimum viable feature) in the first place.
Would you share 5 influential resources (books, posts, videos) you are currently reading?
Sure. I definitely recommend Arnold Schwarzeneggers 6 Rules of Success - an absolutely MUST WATCH!
Further on, I recommend to check out this React.js tutorial and these courses on Intuitive Integration Testing on Laracasts.
Make also sure to check out this emoji cheat sheet.(:stuck_out_tongue_winking_eye:)
For all facebook developers, I recommend the Facebook Live Status.