Do .NET and Java developers really argue? Can a programmer lock himself in an empty room with his computer and speak to nobody? And how does an idea for a blog post develop? These are just some of the topics I have discussed with Michał Warkocz, .NET developer and blogger.
Michał, how did it happen that you started working at Goyello?
I learned about the company from a friend of mine. He got to know about Goyello from his friend, working here at that moment. I checked the website and found a job offer for .NET developers. I sent my application and got a call from the HR Department on the following day.
Have you always wanted to become a programmer? Or have you ever considered any other options?
I have always known I want to be an engineer. You know, I wanted to be able to say one day: Trust me, I’m an engineer! 😉 I didn’t know whether to choose software or hardware, though. Eventually I chose the Faculty of Electrical and Control Engineering at Gdańsk University of Technology. As part of my engineer’s degree assignment I created a quadracopter flight simulator together with my colleagues. I was responsible for mathematics and algorithms in that project. It was then that I took the decision – more than in hardware I was interested in software. And it was software I wanted to deal with in my future job. I started my career in the computer game industry.
That’s what I was going to ask you about. You used to work for a game dev company. Here at Goyello you deal mostly with business applications. What was the reason for such a change?
The game industry seems interesting and fun. But that is only what it look like for outsiders. If you know the topic inside out, you are aware of the fact that game development has little to do with playing games. You mostly deal with the architecture of a given solution. Besides, it’s a small market. Game dev companies are few and far between in Poland. Not all of them offer stable employment conditions. And I wanted to be hired by an employer who would offer me a long-term cooperation and opportunities to develop. And that’s what it looks like here at Goyello. I’ve been working here for a year now but my team leader already wants to know my career plans for the next two years.
What are you working on at the moment?
Since the very beginning at Goyello I’ve been a member of a team working on projects for our British client. We develop a system for selling car insurance policies. I cooperate with the client’s marketing team. They present their ideas, together we work on them and discuss the details and then we are responsible for implementing them. I also support our Test Department in implementing automated testing, especially regressive one.
What does it mean?
When developers write code, the number of lines increases with time so it often has to be modified at later stages of the application development. Meanwhile, different functionalities of the app have already got linked to each other. They depend on one another. So if you modify a line of code, it may influence some parts of your application and change the way they function. In fact, they can stop working correctly. Testing the application manually to search for such bugs would take too much time. That is why we implement automated regression testing to find them.
Was it at Goyello that you first learned about Agile?
No. In my previous job I also worked in Agile. I had a mentor who spent two years teaching me the method and its rules. So I came to Goyello with certain knowledge about Agile.
Is there anything you particularly like about Agile?
I’m a big fan of Kanban. It’s a method that lets you join practically any project, not only an IT one. Kanban lets you visualise your work. In Kanban there is a chart with several columns. In each column you can see tasks written down on real or virtual post-it cards. Each task has its estimation and priority. As the work progresses each card is being moved to subsequent columns, e.g. from the TO DO column to the DOING one and so on, until the task is finished. Each column has certain limits, which means there can’t be too many opened tasks in it. Due to such an approach you can clearly see bottlenecks as well as your progress. According to Kanban team members organise their work themselves.
What does it mean?
If a team member is free at the moment and can take on a task, they take the first card from the TO DO column. They don’t have to ask what to do. They simply deal with the task.
There is a certain stereotype of a developer. You know, an introvert spending days and nights alone on the computer. Does it really look like this?
It seems that many people choosing this profession think their work will consist in spending time on the computer and writing code. They won’t have to speak to anyone or get in touch with other people. It looks a bit different in reality. When you develop business applications you have to be constantly in touch with your clients to be able to analyse their needs. Often instead of exchanging contracts and other documents all you need is a short Skype call to make things clear. A developer is surrounded by other developers and clients – all of them need to cooperate. That’s what Agile is actually about.
So how do developers deal with this reality?
I can speak for myself – the fact that software development doesn’t mean you are all alone with your computer all the time was a nice surprise for me. I’m glad that I can cooperate with other people. Only in this way can I get the best results.
Speaking of communication – I heard .NET and Java developers argue about which technology is better – .NET or Java. Is that true? I also heard your weekly knowledge sharing meetings must be held separately. Otherwise arguments might arise.
It’s true that we have separate .NET and Java meetings. But the .NET vs Java disputes at Goyello are rather friendly banter than real quarrels. There are discussions on the Internet about these two technologies – which of them is better. In fact, Java and .NET are very similar. The main difference is that .NET is supported by Microsoft and Java is an open source environment. Java is multiplatform, .NET is not. However .NET has more powerful tools. If you want to solve a problem in Java, you have a hundred or so libraries. In.NET there are three but they are well thought out and really working. Often the client decides which technology is to be used in a project. They are for instance used to using a certain database and they choose technology accordingly.
Our conversation will be published in Goyello blog. You are one of our most active writers. Why do you write?
First of all – I write because I can. 😉 Goyello Blog has already gained a strong position and it is quite popular. So I’m sure someone is going to read what I write. Besides, here I can write about things I’m interested in myself. Finally – and this may be the most important reason – I write because I like helping others. In my articles I often present problems I had to deal with in my work and solutions to those problems I’ve managed to find. I want to share them with my readers. If someone makes use of any of them – that’s really great.
Where do you find your topics?
Topics come from my own experience and everyday work. For instance, I have come across something interesting in the project I’m currently in. I decide it’s worth presenting in the blog so I do it.
Is there any path you follow to write a good blog post? Do you wait for inspiration or you don’t start writing until you come across an interesting topic?
Ideas take time to develop in my head. First a seed needs to be sown, which means an idea for an article comes to my head. Then it has to incubate. I consider different ways of dealing with the topic. When the topic is well thought out and ready to be presented I write down my ideas. I don’t usually wait for inspiration. And I don’t start to write a post until I know what and how I want to deal with a topic. Luckily, several authors publish in our blog, which means I don’t have any pressure to publish a post every week because readers are waiting.
As for you career – what are your plans for the future? Are you going to specialise in anything else? Move to a higher position?
I’m going to gain more and more knowledge in .NET development, which is my area of expertise at the moment. Ultimately, I want to be a software architect. However, I don’t really aim at a certain name of a position. I would rather like to get to a certain level of knowledge and experience. Software architects deal with the greatest and most difficult tasks and provide support to IT teams. They know solutions to many problems. An if they don’t, they know where to find them.
As you already said, you started your career in game development. Are games still an important part of your life?
They are, but not computer games. I love to play board games. It is a great way to spend time away from your computer, go back to the good old analogue times for a while and interact with real people. My favourite games are Battlestar Galactica – based on a SF series and featuring psychologically interesting characters – and Zombicide. As you may have guessed, the second one is all about zombies. 😉 Sometimes I participate in game events. Recently me and my fiancée Dorota have taken part in a game marathon at the PGE Arena stadium in Gdańsk. We were breaking the record for the number of people playing Dobble simultaneously.
What else do you do in your free time?
I invest time in my own development. I take part in meetings of the Agile 3M group and TrojQa, testers community in Tricity. I read about Agile and project management a lot. I do my own projects as well. And I have a dog. It’s a German shepherd called Faust. I take him to dog trainings. He has already got four certificates.
Do you have any dreams you would like to come true and can share with us?
My biggest dream is to see as much of the world as I will be able to and to come back with great memories. I would also like to learn scuba diving. I have already took part in an introductory diving course. I haven’t drowned, which is quite a success in my opinion. 😉
What are your conclusions after the first lessons?
That you have to have a good head on your shoulders – be responsible and think. That’s the main rule you have to follow. And never economise on good equipment. Remember to service it regularly.
So what now? Are you going to go diving in shipwrecks?
Diving in shipwrecks is not a good option for me. My imagination is too vivid for that. 😉
Dive safely then!