Articles

[PL] Przechodzę na polski / Switching blog language to Polish

For english-speaking readers – I decided to switch blog language to Polish as an experiment. I want to check if that will increase freaquency of publishing new posts or increase number of visitors. At the same time some universal posts may still be in English so don’t disconnect.

Wierzę, że “Polcy i Polaki” zrozumieli. Raz kozie śmierć! Chciałbym sprawdzić, czy po polsku uda się pisać szybciej a w rezultacie częściej i więcej. Mimo wszystko mój styl bycia, żartowania i pisania jest właśnie polski. Poza tym część rzeczy o których chcę pisać odnosi się konkretnie do polskiego środowiska, pracy, prawa i trudno byłoby to wszystko pisać/czytać w języki angielskim.
Na początku zakładałem, że pisząc po angielsku piszę do wszystkich. Ale jak coś jest do wszystkiego, to jak wiemy jest do niczego. Odnosząc to do bloga, czasem mam wrażenie, że jest do nikogo, nie ma życia. A chciałbym właśnie pisać do konkretnych grup ludzi. A może oni też woleliby komentować pod artykułem po polsku? Zobaczymy.

Continue reading

Advertisements
Articles

Getting rid of technical debt

This post was inspired by excellent article by Bastian Buch, Effective Steps to reduce technical debt: An agile approach.

What is technical debt?

Technical debt may be considered as work that needs to be done to complete the project, but not done before delivering the product. I personally like to say that it’s all the undone work that makes developers proud or at least satisfied about the system they develop. It’s all about the issues that we promise to do in our less busy sprints, TODOs in code, sticky notes etc. It’s present in almost every project, but the only thing many of us do with it is complaining. Here is a list of ideas helpful to get rid of this debt using agile approach. It’s really hard because reducing technical debt is out of normal flow that is “implementing features”. That’s why you need a good plan to get rid of it.

1. Control technical debt

It’s not that technical debt comes from nowhere nor it’s that bad developers come to the team, make a mess and disappear. Technical debt starts with the lack of time. Initially it’s right – business value is more important than developers’ satisfaction. But then comes the deadline, another sprint in a rush and the team forgot to implement these unit tests, refactor this copy-pasted module or fix the hack in domain logic. Instead of trying to not create more technical debt, let’s try to control it in a proper way. One way is to have an inventory with items having a brief description. Then such a knowledge persists even if the only developer knowing the details has left the company.

2. Estimate & prioritize

After you gathered all the items in one place it’s time to put them in some order so that it’s easy to get something and just do it without analysis of the whole backlog. It’s good practice to order items in two dimensions: by their cost and returned value. The most important thing is to come to conclusion that cheapest but most valuable issues should be done first, and the most expensive with lowest value will probably never be done.

3. Visualize

The third, but the most important point is to visualize this inventory. This was a revolution that hit me while reading the article of Bastian. Before we had “TODO” items in code, but who knows how many. We had Onenote page (our wishlist) gathering all the things that we want to do for our project when we have time, but we just push items onto the list, never pull from it. We had “As a Developer I would like …” tasks in JIRA, but they were lost among hundreds of issues originating from “real” users. In all cases the inventory is hidden and the team pretends that there is no debt. But imagine that the inventory is visible next to the scrum board. Then it’s impossible to ignore the debt. You have an instant access to the inventory, both read and write. It’s clear when there are too many items. We go through this when we have a minute or two.

image

4. Put on a strategy

When everything is ready it’s time for the strategy: do the cheapest stuff in your innovation/research/study time (it should be around 20% of your capacity) – all in all such technical tasks is a great opportunity to sharpen your skills. More expensive tasks must wait for approval of Product Owner and come into a sprint with other issues. All in all you can always split them into smaller ones if you think that in that shape you can still benefit from them.

5. Involve Product Owner

Your product owner should know that you have debt. It’s the problem of the whole team. Tell him the cost of the debt (sometimes you need to realize it even for yourself). Sometimes it’s easy because implementing new features must be preceded by getting rid of the debt for some technical reason. Sometimes it’s harder, because of long term consequences of poor code coverage or just a mess in solution structure. All in all PO must be aware of it because they give the green light to do bigger issues as parts of the sprint.

Other ideas

Beside technical debt we also put on the same board optional technical tasks. Actually it fits the definition of “things to do to be proud of the system”.

We always wanted to try implementing gamification in our team and I think it’s a nice opportunity for us. By solving technical issues we get “virtual money” and we could praise ourselves for doing it. We can also track the average earning for each month. It’s always good to measure because such numbers motivate.

I really recommend to try it yourself

Articles

Finally Master of Engineering!

After 5 years of studying I’ve finally  got academic degree. I gave myself a week of relax and taking some breath and now I can take this blog seriously (it’s just one of many plans I got while writing the final project). Nevertheless, now I can tell my opinion about studying.

After high school young people have to decide what to do, to choose university or to work and gain experience. Elderly would say, that academy is the only solution. Unfortunately (or not)  time changes. Now everyone (or majority) is M.Sc, M.En etc. In real job you need experience rather than academic knowledge (I can’t imagine university that prepares students to be real specialists). But employers need something more than just another M.Sc.

Of course universities are helpful. For example bankers would say that your credit scoring will increase after studies:]  On the other hand in the world of Masters of Science it would be weird not to be one of them. But in my opinion it’s not the main goal. The best solution is to mix working and studying. So forget about Cambridge, Stanford, Harvard and other reputable universities in any country. Take studies, that let you work as much as you want. I’m sure it would be perceived better by your future employer.

Finally I see one great benefit of studies – they put pressure on working on your own projects. Normally, after 8 – 10 hours of working it’s hard to convince yourself to work on another project. But for the final project you have to find time! And thus you became smarter.

Articles

Hello world!

Hello, I’ve already found out that it’d be nice to come out of my private den and meet some subscribers :-] And there’s no single reason for doing that: practicing language, learning new things, comparing wordpress to own platform 😛 … Don’t be thrifty in your critics.

Have a nice reading!