Category Archives: Uncategorized

Have an architecture north star

Imagine you have a magic wand and you could change your architecture all at once – what would it look like? That’s your north star. It’s a shared and documented idea about how the architecture would look if reality would not stand in our way. How many services would you have? How would they communicate? Where would the data be stored? What would the deployment and build look like? What about the tests? Do you know it? If yes, write it down. If not, get together with other clever minds in your company and write it down.

There are a few important points here. First, there should be broader agreement – it shouldn’t exist only in your head. Ideally, the north star will be something that can be shared with every engineer and technical manager in the company. Everybody should know where you are heading.

Imagine a team is implementing a new product. Should it be a new service or a module within an existing service? How should it communicate with other components? You really don’t want to have everyone reinvent the wheel or wait for an architect to provide all the answers. The north star architecture should answer most of the routine architectural questions.

Of course, the north star is just a direction, don’t be sad if you will never get there. Getting rid of your monolith will take ages, but the north star should show you how the architecure will roughly look once the refactoring is done.

Moreover, the north star is a moving target. It will change and it’s OK. You will learn new things, there will be new requirements, the business will pivot and so the north star will move accordingly. And this is good news, by iterating on the north star, you will learn a lot.

Additinally, there will be detours. The north star will point in one direction, but the everyday reality will force you to go in another one. And it’s OK too. The important point here is that you should know that you are diverging and why.

Lastly, the discussion on the north star helps you to focus on the long term. It’s way too easy to get swamped by the urgent short term tasks. Thinking about the north star gives you the opportunity to focus on the long-term. The product part of the organization has a long term vision, engineering should have it too.

62a190b81f6e0b6663d16336_Agile_autonomy-3300585152

I am looking for a job

I am looking for a job. In short, I am looking for a hands-on tech leadership role, ideally around the JVM ecosystem.

I can offer

  • Pragmatic approach to software design and system architecture
  • I have learned to prefer simple design
  • I am able to evaluate trade-offs and pick the least worst solution.
  • Expertise in Java and Kotlin, Spring, and Spring Boot
  • Experience with microservices
  • Experience with Kafka and event-driven systems
  • REST APIs
  • Postgres
  • I am a huge fan and evangelist of TDD and automated testing in general.
  • I really love pair or mob programming. I really believe it provides a huge advantage to the teams. I can help you adopt it.
  • Tech leadership. I have experience in technical leadership of teams and coordination of multiple teams.
  • Governance. I have lead and participated in REST API, GraphQL, OCSF governance
  • Architecture guidance.
  • I am not afraid to make decisions.
  • I am good at cutting the scope.
  • If you want to see my code, you can check my open source projects.
  • Or you can check some of my talks. The ToC one is pretty good.

I am looking for

  • Either a place where I can learn something, or have enough influence to make positive changes.
  • I really love coding, but I enjoy design, architecture, tech leadership, mentoring etc. Therefore, I am looking for some tech leadership, architecture roles. Staff engineer is the role that suits me best.
  • Autonomy, Mastery, Purpose
  • I am looking for a company that understands the importance of trust and ownership.
  • I would like to work on something that makes the world a better place.
  • In Prague, CZ or remotely in EU timezone

My CV and LinkedIn profile.

Are you interested? Send me an email to lukas@krecan.net

Hledám práci

Chystám se zase začít hledat práci. Protože blog používám mimo jiné k ujasnění si myšlenek, zkusím si tu sepsat co a proč hledám. Nečekám, že to bude někdo číst, tradičnější CV, je k dostání třeba tady.

Co nabízím

Moje nejsilnější stránka je programování v Javě na back-endu. Dělám to už dlouho, o Javě a velké části jejího ekosystému vím první, poslední. Na druhou stranu se stále mám ještě co učit. Programování mě navíc baví, takže se ho stále snažím držet.

Jsem fanatik do automatických testů. Jsem přesvědčený, že dobré testy dělají rozdíl mezi udržovatelným kódem a hromadou #$!$#, do které se každý bojí šáhnout. Bez dobrých testů není možný agilní vývoj, continuous deployment a další věci, o kterých všichni básní. Proto udržuji open-source projekt JsonUnit, který kdysi vznikl, protože jsem potřeboval v testech porovnávat JSONy a nic na to neexistovalo.

Pak se taky starám o ShedLock, přispěl jsem do Springu kus kódu na mockování WebServiců a tak. Už jsem říkal, že mě programování baví?

Celkem se vyznám v architektuře. Nicméně zastávám názor, že architektura je věc, která se špatně mění, a takovou věc přeci nechcete. Přijde mi důležitější mít dobré testy, které vám umožní refaktoringem napravit špatná rozhodnutí. Zkrátka, nevěřím v neprogramující architekty a v architekturu vytesanou do kamene.

Další moje silná stránka je selský rozum. Umím se držet při zemi, když dostanu zadání, dokážu v něm najít to důležité a to ostatní ignorovat. Umím si v hlavě srovnat, jak je co potřeba udělat a pak to i dokonce i zrealizovat nebo alespoň zařídit. Často vidím věci, které ostatní nevidí. Pravidelně se mi stává, že vidím zřejmé řešení, které ostatní nenapadlo. Samozřejmě to platí i naopak, občas nevidím to, co je jasné ostatním.

Nebojím se udělat rozhodnutí, nejhorší co se může stát je, že bude špatně. Většinou stejně člověk lituje těch rozhodnutí, které udělal jen tak, mimochodem.

Mám zmáknuté agilní metodiky, ale zatímco před deseti lety mi to všechno přišlo snadné, teď už vidím, jak je těžké změnit chování svoje i ostatních, tak aby to nějak v týmu fungovalo.

Pak tak nějak umí i ty věci kolem, jako AWS, Kubernetes, Linux, trochu JavaScriptu s Reaktem, databáze a nevím co ještě, ale spíš jen tak good-enough než nějak skvěle.

Taky mi přijde, že umím věci vysvětlovat, věnovat se mladším kolegům a obecně technické lídršipování.

Slabé stránky

Baví mě programování, nebaví mě většina ostatních věcí. Párkrát jsem jako bokovku dělal Scrum mastera nebo i team leadera, ale nejde mi to a nebaví mě to. Když můžu programovat, tak nemám na ostatní věci chuť a energii. Opravdu si myslím, že mi to programování jde, takže mi přijde škoda dělat věci, které někdo jiný dokáže udělat lépe a nejspíš i levněji. Takže pokud potřebujete někoho, kdo bude lidem schvalovat dovolené a bavit se s nimi o platu, mým směrem se nedívejte.

Dokážu být docela dominantní, což je občas dobře, ale často špatně. Jsou schůze, na kterých dokážu docela dlouho přesvědčivě mluvit, dělat rozhodnutí a tak. Snažím se to omezovat, ale zjistil jsem, že spoustu ostatních programátorů tu potřebu nemá, takže mívám na dominování dost prostoru. Snažím se s tím pracovat.

Občas jsem negativní, když mě věci štvou, tak je to na mě vidět. Občas je to jen upřímnost, když mi něco přijde jako blbost, tak to řeknu. Občas je to ale zbytečná negativita. Snažím se to změnit, ale jde to hrozně ztuha.

Pak taky kladu hloupé otázky. Moje oblíbená je „Jaký problém tím vyřešíme?“. To je vlastnost, kterou neplánuji měnit, ale lidi to občas štve, takže to dávám do kolonky slabých stránek.

Co hledám?

A teď to nejdůležitější, co hledám? Jak plyne z předchozích odstavců, chci programovat v Javě (nebo Kotlinu) na back-endu. Rád předávám své zkušenosti, takže můžu někoho i technicky vést, můžu navrhovat architekturu, navrhovat řešení, ale jen pod podmínkou, že se dostanu i ke kódování.

Rád bych přičichnul k Machine Learningu, mám nějaké základy, ale rád bych si vyzkoušel nějaké uplatnění v praxi. Nicméně ML je něco, co bych se spíš potřeboval naučit než, že bych to dokázal rovnou dělat.

A to nejproblematičtější nakonec, rád bych dělal něco užitečného. Co to je? Úplně nejradši bych se podílel na řešení klimatické katastrofy, do které se řítíme, ale chápu, že takové projekty nejspíš zatím v Čechách nejsou. Takže se spokojím i s děláním něčeho, co někomu alespoň trochu zlepší život. Do Liftaga mě třeba nalákali na to, že se snaží z města dostat zbytečná osobní auta.

Asi jsem v tomhle idealista, ale přijde mi zbytečné budovat další banku, další nástroj na posílání spamu, zobrazování reklamy, další skvělou mobilní hru na výměnu virtuálních kartiček nebo něco co už tu dávno je, ale tentokrát na blockchainu. Rád bych jednoduše dělal něco, co je užitečné.

Takže pokud byste věděli o práci, na kterou bych se mohl hodit, napište mi prosím na lukas@krecan.net.