Software architecture is not about technology, and what is even more important it is not about business.

It is not a full time job,
it is not position in CV,
it is not set of rules and principles,
and for god’s sake it is not about best practices.

Software architecture is about change. About being leaders of change.

Software archit…


Practical Spring Data

Practical Spring Data

This time I will conduct training, “Practical Spring Data” at 33rd Degree conference. So if you want to become master in Spring Data, different NoSQL models and get to know how to write less to express more, come and join me on 11th of March in Warsaw.

Tagged , ,

Do you really hate frameworks?

“Do you really hate frameworks?” – this question won a contest for the most popular question after my talk at JDD this year. I don’t remember exactly how many discussions I had after my presentation, how many questions about my personal trauma caused by programming languages, paradigms and frameworks. I have to say that this makes me feel good about my presentation. I don’t know if you liked it, if you liked my style, slides and my English was good enough. One thing I know for sure is that my message was heard and was not lost in translation. I tend to have people confused after my presentations, they don’t know what I wanted to say.I usually have too many thoughts at once, too many views and never ever show last slide :).

Do I really hate frameworks?. Yes I do. Do I? No, I don’t hate them. It is really complex and dynamic relation. It is hard to say if I love or hate, something that is not alive. I can love or hate people, but I cannot say the same about frameworks. At the end of the day it is all about people, people who create and use frameworks, paradigms and programming langues. It is all about us,
lost in a universe of unknown , which expands with the speed of light. It is all about us, who master our skills to communicate better and better with machines, and lost our ability to express our thoughts in a “human readable” form.
Continue reading

Tagged , , , ,

JDD 2012 and local space distractions

JDD 2012 and local space distractions

I am back. With tons of ideas to try, new memories and people I will always remember.

I am posting a link to my presentation, which turned into “abstract musings and my own trauma of frameworks, languages and paradigms” according to one of attendees. Thanks all who have come to my talk, gave me feedback afterwards and sipped “cherry” with me till late night at after party.

See you soon.

Me and my systems at JDD 2012

Me and my systems at JDD 2012

See you soon in Krakow at JDD 2012, this time we will deconstruct systems in English, for the first time ever in history :).

Speaking at Eclipse Day in Kraków

Speaking at Eclipse Day in Kraków

I will be speaking next week at Eclipse Day in Kraków, about systems that fail, viscous circles, feedback loops and how to deal with common system traps. All in a context of software architecture and design, a slightly revisited version of my talk from 4Developers conference.

Great insight into modern distributed computing

Great insight into modern distributed computing

Be careful you will have to ready a least twice to catch all ideas and thoughts, but it is definitely “must” read for all software craftsman :).

Tagged ,

The Paradox of core versus support domain

The Paradox of core versus support domain

This is not new post. This is something I published over two years ago. My former CTO came down from his ivory tower and asked me to remove this post from Internet. He sent me long email, about me being unprofessional, because people can connect through my LinkedIn profile where I work, and connect my writing with the state of the product. Brilliant. I leave the judgement for you, think for yourself and question authorities, especially fake, usurpatory authorities.
So why I publish this post once again? Even if I don’t like it and I don’t think is even worth reading and I disagree with few points.
Because I promised myself that one day life will move on. Life will surprise me and changes will come.
It is time for a change.
Why it took me so long?
Because for past 4 years I worked with the best team ever. I was waking up every day not to write code, because in this system it was impossible. I was waking up to meet crazy, passionate freaks like me. We were team, we were one. The chemistry between us was unbelievable. And people hated us, which was kind of cool for the twisted personality like me.
We were working from coffee shops (Choco Cafe on Wiślna street simply rocks), we were challenging our limits every day. We were not thinking out of the box, we were out of the fucking box. Box full of rules, regulations and office politics. Writing custom parsers to do code translations, instrumenting code for transaction deadlock detection, horizontal scalability based on custom JDBC driver, parsing tcpdumps full of JGroups shit, cutting, mangling code bases going from 40 minutes (really) to 8 minutes of compile time, migrating technologies like crazy, you name it, we did it. It also included tons of bad decisions, incorrect estimates and broken promises. But we enjoyed it and other people hated us, because we were arrogant dreamers, believing in code, trying to change world, taking proud of their work. People hated us because we had a whole lot of fun, we were smiling, we were doing things we wanted to do. What I have learned is that people don’t like when other people have fun, when they enjoy their work. Sad. My biggest mistake as a leader of this team? I became one of you, Jose, Tomek, Marcin, and second Marcin, Jacek, Damian, Paweł. I was so excited about things we were doing that I didn’t noticed what is going around. My mistake and I would repeat it over and over again. Because your job is not your life, life doesn’t end there. There is meaning behind deadlines, overtime, failed builds, stupid code and pointless discussions about JVM internals. Behind all these stupid things, there are people and memories and endless stream of shots of cherry vodka. Guys this is for you, my, big, personal, thank you. In a year from now I won’t remember this code and projects. But will remember you.
The rest of this post is irrelevant. It is just promise I made to myself.

Systems grow, systems change, systems evolve, systems become “big ball of mud”. I am not going to start a discussion about the forces which turn beautifully designed systems into “big ball of mud”, not this time. It just happens, it comes and goes, just like financial crises, seasons, ice age.

One day, you wake up, and you find yourself in the middle of deconstruction of your “big ball of mud”. Your “mothership”, your flag product, your “darkest matter of the universe”. You may ask youself, what is next? How to do it right? This time.
Continue reading

Tagged , , , ,

Fork and join with Mule 3

Ooops…, I did it. I decided a couple of weeks back to get out of my comfort zone. My comfort zone of writing posts in my native language, which is Polish. As human, you are not able to make progress, continuously improve your life, if you don’t seek ways to get out of your comfort zone.
As always in such situations I am apprehensive, even terrified. Terrified that I will loose my “flow”, will be criticized and in many cases you will misunderstand my intentions and thoughts.
If you find “syntactic bugs” in my posts, please feel free to write a comment.

This time I am going to shed some light on interesting problem I’ve been fighting with some time ago.

Out of many projects in our company, we have a product which uses Mule ESB, to build integrations with third party providers. It works as a broker, which sends the same message to various providers over variety of protocols and using many different messages formats. Later on responses from providers are aggregated and sent back to client.Easy job, isn’t it?

Recently we got stuck with interesting performance related problem. Same message can be sent to hundreds of providers, and it may take significant amount of time for all providers to process and send message back. Problem is not new and nothing unusual. Looking at the very heart of the problem you can easily say that it can be solved with “fork and join” pattern.
Continue reading

Tagged , , , ,

Dekonstrukcję architektury czas zacząć.

Dekonstrukcję architektury czas zacząć.

Czas płynie nieubłaganie, nowy rok nabiera rozpędu i nastał czas najwyższy aby zebrać w sobie troche siły i samozaparcia na kolejną projekcję wniosków i przemyśleń.

Minęło już ponad pół roku od momentu gdy przekroczyłem próg nowego biura, zasiadłem na nowym krześle, zapuściłem “żurawia” w “nieprzebyty lazur oceanu kodu”.Czas więc na podsumowanie i słów gorzkich kilka w temacie architektury i jej, a także mej “niemocy”.

Śpieszę też, z wyjaśnieniem, iż poziom mojego cynizmu nie uległ zmianie, więc niechaj teraz wszyscy czytelnicy przekręcą pokrętło regulujące współczynnik akceptacji dla cynizmu do właściwego poziomu.

Od ponad pół roku zasiadam jako sprawiedliwy (i czasami despotyczny) król Artur przy Okrągłym Stole “Core Architecture”. Nie zaprzeczę ani też nie potwierdzę, że bawię się przednio, znalazłem w końcu swą przystań a w niej właściwych ludzi na właściwym miejscu.

W czy więc problem i co skłoniło mnie do naruszenia spokoju i zebrania myśli ponieukładanych?
Nikt tak naprawdę nie wie co robimy, nikt tak naprawdę nie jest w stanie ocenić naszej pracy, jej jakości i celowości. Architektura tak jak i w większości poprzednich “kombinatów” jest tajemnym zakątkiem w Mrocznej Puszczy, gdzie brzydkie wiedźmy, o aparycji ukraińskich “pracownic utrzymania dróg” na trasie Częstochowa-Warszawa,w kotle warzą tajemnicze mikstury, zatruwające życie programistów, chłopaków od “hostingu” i dziewcząt z “supportu”.

Continue reading

Tagged , ,