<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/pretty-feed.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Candost&apos;s Blog</title><description>Hunting timeless insights into humans and software and helping others on the way.</description><link>https://candost.blog/</link><item><title>Busyness Is a Choice</title><link>https://candost.blog/busyness-is-a-choice/</link><guid isPermaLink="true">https://candost.blog/busyness-is-a-choice/</guid><description>&quot;Busy&quot; is a shield we choose.</description><pubDate>Sun, 04 Oct 2026 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After I began playing in an improv theatre, I&apos;ve been observing people more. The more I observe, the fewer people I see who are willing to move out of their comfort zone. Even when they have the energy and really want to do something, like sign up for a hobby class or host a dinner with friends. When I ask why they aren&apos;t doing the things they would love to do, I hear the same answer from everyone, like they are in a choir. They are &lt;em&gt;busy&lt;/em&gt;. &lt;strong&gt;Everyone is busy.&lt;/strong&gt; People want to do a million things and never find the time. Perhaps they think time is like a material that can be mined, and they are waiting for someone to show them where to start digging. But they—all these busy people—have something in common. They &lt;em&gt;&lt;strong&gt;choose&lt;/strong&gt;&lt;/em&gt; to be busy. And they use busyness as an excuse to avoid showing vulnerability.&lt;/p&gt;
&lt;p&gt;&quot;Being busy&quot; is a choice. I know, I know, most people don&apos;t have the luxury of stopping work when they want to. So, naturally, they are busy with work. Still, what&apos;s left after work is still a significant amount of time that anyone can choose how to spend. Yet, they don&apos;t want to do anything. What drives me mad is that many use the job as an excuse. Sometimes to explain why they haven&apos;t yet looked into something they promised, sometimes to avoid learning about something as much as they would have loved to do, and sometimes not to meet up with someone they haven&apos;t seen in a while.&lt;/p&gt;
&lt;p&gt;A few weeks ago, I was sitting alone in a café as part of my Sunday ritual, and I eavesdropped on a conversation. I have no idea who these people were, but I can confidently say they were old colleagues working in tech companies in senior roles (likely &quot;Head&quot; or &quot;Director&quot; level or above). One of them asked the other about a common colleague and whether they have any contact with that person. I think you can guess the answer. It was no, because the person—after taking a sip of the flat white on a chill Sunday morning—said they really wanted to but had been very busy over the last few months.&lt;/p&gt;
&lt;p&gt;I found that excuse to be insincere. I am not blaming or shaming that person right now because I don&apos;t even know their name, let alone their life and personality. Still, I could sense the insincerity. For us, as a society, it should be okay to say, &quot;I wanted to catch up, but that sadly was not my priority recently. I have other things I consider more important these days. Once these conditions change, I definitely will.&quot; But no, we&apos;re &quot;just busy.&quot;&lt;/p&gt;
&lt;p&gt;Saying busy is the easy way out. Because almost everyone responds with, &quot;Oh, yeah, I understand&quot;, while sensing the affectation (and calling out the hypocrisy in their internal voice because they saw their last Instagram reel from a lake). Instead of using the B word, explaining life&apos;s priorities might expose the person. They might need to disclose what really matters to them, and this may make them feel vulnerable. I understand. However, when I hear the word busy, I immediately portray the person in my mind as either ashamed that they haven&apos;t yet done what we talked about, or not wanting to talk about it right now or with me. Instead of being straight up front and expecting empathy, they take the shortcut.&lt;/p&gt;
&lt;p&gt;It&apos;s okay, my friends. You can be busy with something that has great importance for you at that stage of your life. But remember, it&apos;s &lt;em&gt;&lt;strong&gt;your choice to be busy&lt;/strong&gt;&lt;/em&gt; with that thing. If you&apos;re not really busy and use it as an excuse, then think about it: why do you use the word &quot;busy&quot;? Why not, &quot;I can&apos;t do it these days because of...&quot;? I try to follow a communication principle: &quot;Say what you mean, mean what you say.&quot; Saying &quot;because I&apos;m busy&quot; is the opposite. You neither say what you mean nor mean what you say.&lt;/p&gt;
&lt;p&gt;Don&apos;t use busyness as an excuse. Find what&apos;s underneath. You may not really want to go to the movie with that friend who is asking. If so, ask your friend to do something else or stop seeing them. You may not want to sign up for a class you always wanted because your job cannot afford distraction right now. If so, just say that, not busy.&lt;/p&gt;
&lt;p&gt;Maybe you don&apos;t feel comfortable saying all these truths out loud. Still, be aware that you are using the word busy as a shield. Shield from the truth and an uncomfortable but genuine conversation. Maybe your colleague or friend will tolerate it for a while and cut you some slack, but don&apos;t do the same with yourself. Know why you are putting your shield up.&lt;/p&gt;
&lt;p&gt;If you&apos;re really busy with something you&apos;re passionate about and don&apos;t want to do anything else, it&apos;s okay. You can say, &quot;I&apos;m busy with that thing I care a lot about, and I&apos;m avoiding all other distractions.&quot; You don&apos;t need to juggle ten things at a time, even though the Internet and AI claim you can. Accept that you won&apos;t do other things at this stage of your life, and prioritise what matters to you.&lt;/p&gt;
&lt;p&gt;Be truthful and transparent with others; don&apos;t try to hide behind busyness. Because it doesn&apos;t work.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/busyness-is-a-choice/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/busyness-is-a-choice/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Magazines are superior products to newsletters</title><link>https://candost.blog/magazines-are-superior-products-to-newsletters/</link><guid isPermaLink="true">https://candost.blog/magazines-are-superior-products-to-newsletters/</guid><description>Newsletters turned into daily newspapers chasing recency. Magazines, with editors, themes and a slower cadence, are better products.</description><pubDate>Tue, 15 Sep 2026 06:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Most newsletters have turned into daily newspapers, publishing 3-4 pieces a week. If you&apos;re like me and subscribed to many newsletters, you find yourself in a constant &quot;catch-up game,&quot; never able to read and, more importantly, understand the content. For the ones you are able to read, you skim and delete them, thinking you got &quot;the gist of it.&quot; If you take a break from chasing the finish line in these newsletters when you go on a vacation, you feel like the world has gone too fast while you&apos;re lying on a beach. While the newsletters want you to think the world has moved on without you, magazines help you to see that it actually didn&apos;t.&lt;/p&gt;
&lt;p&gt;A few years ago, before a summer vacation, I didn&apos;t want to bring my phone to the beach. I wanted a light, cheesy read to &quot;waste&quot; time on the beach and not think about anything from my daily routine. I had books with me, but also wanted short reads. I picked up Men&apos;s Health and Monocle in the airport. While Men&apos;s Health gave me the cheesiest read I had in a while and helped me sleep for many hours on the beach[^1], Monocle unexpectedly opened new doors.&lt;/p&gt;
&lt;p&gt;After that vacation, I started reading Monocle frequently. But Monocle provided much more than its content. I found myself reaching for magazines unconsciously more and more. While wandering joyfully in Berlin bookstores, I came across a small bookstore called &quot;Do You Read Me?&quot; On my first visit, I spent ~30 minutes in that tiny store, looking through magazines and buying four I&apos;d never heard of before. As someone who reads articles, essays and opinions exclusively digitally, I discovered a different world (that existed for centuries).&lt;/p&gt;
&lt;p&gt;Those few magazines showed me how much better products they are than all the digital newsletters I subscribed to.&lt;/p&gt;
&lt;h2&gt;Why newsletters are not great&lt;/h2&gt;
&lt;p&gt;Most of the digital newsletters are not editorial products. I receive an email from a &lt;em&gt;writer&lt;/em&gt;, mostly talking about &lt;em&gt;a single topic from a single perspective&lt;/em&gt;. The creator economy and digital consumer behaviour have forced many creators to focus on a niche, losing the benefits of an editorial approach. Everyone tries to shout louder as an individual. As a subscriber, I must subscribe to multiple newsletters to get broad perspectives on a single topic. Yes, the curation newsletters exist, but they almost never collaborate with the writer of the articles they share. They act as sourcing machines, focusing on one part of curation—selection—and shifting the rest to readers.&lt;/p&gt;
&lt;p&gt;As a reader, I &lt;em&gt;have to&lt;/em&gt; subscribe to multiple newsletters, skim through the hoses of content machines just to find a good article that has a possibility of giving me an additional perspective. If I&apos;m lucky enough, I may leave my echo chamber and find another one. If I do this with enough newsletters, I may succeed in curating my ideas pool. But I have to do it every day and every week. Considering my RSS feed alone is reaching 50 items a week and I have interest in multiple topics, reading them all is impossible. There is no surprise that many people, including me, feel overwhelmed. However, the moment you stop chasing it for a week or two and come back, you realise that all articles deemed important to read were not important at all.&lt;/p&gt;
&lt;p&gt;The digital newsletter ecosystem is centred around &apos;recency&apos;, like daily newspapers. Most writers think that they must talk about something relevant to people&apos;s lives &lt;em&gt;right now&lt;/em&gt;. That&apos;s what grabs attention, and that&apos;s &lt;em&gt;the incentive&lt;/em&gt; for any writer. As a reader, when you stop consuming and look at the articles a month later, you discover that they are not as attractive as they were when you saw them right after they were published. Most content loses relevance over time.&lt;/p&gt;
&lt;p&gt;That, you find it less in monthly magazines.&lt;/p&gt;
&lt;h2&gt;What makes magazines superior&lt;/h2&gt;
&lt;p&gt;Long-term thinking often leads to better writing. The writer must detach from the daily hustle to expand relevance until at least the next issue. If you follow this blog for a while, you may know that I don&apos;t read daily news for the same reasons. Daily news is full of noise, clutter, and prediction. Something happens in a day, and all news agencies talk about that for days. The same is true for most newsletters. But monthly, bimonthly or quarterly magazines cannot do the same. Even if they do, they do it differently.&lt;/p&gt;
&lt;p&gt;The magazines are time-bound differently. They have set dates for production and distribution. The cadence forces them to approach daily news differently—discussing the long-term impact. Journalists and writers must detach from daily life to see the bigger picture and trends. In newsletters (and, similarly, daily news), you don&apos;t get this holistic thinking. As recency grabs the attention of the reader, there is nobody asking a writer to approach it holistically. Unlike magazines.&lt;/p&gt;
&lt;p&gt;All print magazines have editors who are responsible for building the magazine or its sections. Working across theme and design and working with writers, other editors, photographers, designers and artists to improve the quality of the articles, pictures and design results in a tasteful product. Each issue of a magazine focuses on an area and has a theme. Although most newsletters also have a theme, they call it a niche, magazines bring together different voices: sometimes with conflicting ideas; sometimes each representing a piece in a puzzle.&lt;/p&gt;
&lt;p&gt;The editor provides a filtering mechanism to eliminate pieces that won&apos;t fit into the puzzle. It&apos;s rare to have a low-quality text in a print magazine. Printing an article on paper forces everyone to up their game. All articles are vetted, edited, and each word is chosen carefully. The stakes are too high; the magazine business is ruthless. You don&apos;t get this quality mindset with digital newsletters. Because the production is &apos;free.&apos; If this newsletter issue is not great, the next one in two days has another chance.&lt;/p&gt;
&lt;h2&gt;How about personal blogs, big digital media, and curation newsletters?&lt;/h2&gt;
&lt;p&gt;Many print magazines offer digital subscriptions. I put their digital solutions into the same category as newsletters. When a magazine goes digital-first, print-second, its overall quality takes a hit. For example, Harvard Business Review&apos;s online website is full of crap (even with editors). Because their main focus is digital, the magazine&apos;s quality also suffers. Foreign Affairs is a good read in print, impossible to follow on digital. Monocle is already a packed magazine in print; digital is too much. However, when the magazine is print-first and digital-second, both solutions somehow become higher-end.&lt;/p&gt;
&lt;p&gt;On the other hand, I still deem personal blogs superior to newsletters and in a different lane than magazines. Never mind the romanticising of indie web, personal blogs have a different purpose. Their purpose is not to become a product. An up-to-date weblog is beautiful in its clumsiness, gorgeous in its lack of perfection, and great in its all-over-the-place content. I might be biased because I have put a lot of effort into making this blog. However, I keep the weblogs I follow in my RSS feed because they give a lot of ideas about the person behind them, and that&apos;s what matters in the end.&lt;/p&gt;
&lt;h2&gt;Writers against creator economy&lt;/h2&gt;
&lt;p&gt;Writing is a big challenge (from my experience), whether in print or online. Anyone who dares to publish their writing already goes through a lot of inner criticism. At first, the inner critic makes you hallucinate as a writer that your writing is of better quality just because you edited it a hundred times. However, in my experience working with a developmental editor, I can easily tell the stark difference between a text I edited twenty times and one a developmental editor edited once.&lt;/p&gt;
&lt;p&gt;Learning how to write in the creator economy is difficult. The rule of creativity says that to be able to write well, you have to produce hundreds of bad ones. Picasso produced hundreds and thousands of pieces, and only a fraction were masterpieces. Eminem &lt;a href=&quot;https://youtu.be/WgQI655FqtM?si=YEKBsuKWw1LRogBi&amp;amp;t=90&quot;&gt;writes thousands of songs on scraps of paper&lt;/a&gt;, and a fraction of them turn into a song. That&apos;s how creativity works.&lt;/p&gt;
&lt;p&gt;This nature of creativity, combined with unrestricted publishing, gave birth to many writers (e.g., me) who also write newsletters. I am happy that some earn a living from online writing, even though it&apos;s a difficult journey. However, eliminating editors and curation also means readers have to go through all our shitty writing. Worse, I don&apos;t see a way out.&lt;/p&gt;
&lt;h2&gt;All should coexist, but not like today&lt;/h2&gt;
&lt;p&gt;I&apos;m neither going to praise or romanticise the paper feeling and how good it&apos;s to hold in hand nor vilify the whole digital ecosystem. All should co-exist. My criticism isn&apos;t aimed at any writer, but at the direction of the newsletter ecosystem.&lt;/p&gt;
&lt;p&gt;We need to abandon most Substack-style newsletters where the writer only writes without &lt;em&gt;any&lt;/em&gt; editorial thinking. Although Substack-like platforms reduced the friction in writing, that friction &lt;em&gt;was&lt;/em&gt; necessary. Perhaps all writers should have their own website and think about how to structure content and build a digital reading experience, not just a single article.&lt;/p&gt;
&lt;p&gt;Instead of waiting for everything from the readers and pushing in all directions to grab more attention, perhaps we need more formats like the &lt;a href=&quot;https://www.theideasletter.org&quot;&gt;Ideas Letter&lt;/a&gt; or &lt;a href=&quot;https://humanistreview.ai&quot;&gt;The Humanist Review of AI&lt;/a&gt; or more writers like Maria Popova from &lt;a href=&quot;https://www.themarginalian.org&quot;&gt;The Marginalian&lt;/a&gt; who is a grand boss editor in the shape of a writer. Perhaps we need more good, old personal blogs. I do not know which one we need, but I know there is no silver bullet. All should co-exist and complement each other somehow. I guess.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. Not all magazines are great. You have to find what you like. We also need these magazines to get cheaper and become more accessible.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;[^1]: I never read Men&apos;s Health again.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/magazines-are-superior-products-to-newsletters/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/magazines-are-superior-products-to-newsletters/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Is Education for Industry or for Thinking?</title><link>https://candost.blog/journal/education-for-industry/</link><guid isPermaLink="true">https://candost.blog/journal/education-for-industry/</guid><description>Response to Guy Standing&apos;s short essay on education.</description><pubDate>Thu, 03 Sep 2026 08:48:00 GMT</pubDate><content:encoded>&lt;p&gt;I read &lt;a href=&quot;https://monocle.com/affairs/education-transforming-into-profit-industry/&quot;&gt;Guy Standing&apos;s short essay on education&lt;/a&gt; in Monocle&apos;s Issue #195. I have mixed thoughts about Guy&apos;s arguments.&lt;/p&gt;
&lt;p&gt;I think the introduction explains the whole article well:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The acquisition of knowledge is becoming more commodified, seen as a way of filling gaps in the workforce. But for a society to thrive, it needs to remember how to value learning.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I understand that education previously aimed to teach people how to think (influenced by thinkers like Jean-Jacques Rousseau). This focus has been decreasing over time, shifting the main purpose of education to fulfilling industry&apos;s needs. Humanity is increasingly abandoning critical thinking from multiple angles (e.g., AI is also nudging people to think less). People think less and follow what&apos;s given to them, hand over their judgment because they don&apos;t have the right mental tools to think clearly in different situations. I share the worries.&lt;/p&gt;
&lt;p&gt;However, this doesn&apos;t mean we change the whole education system to teach people how to think better, as in the old days. The old days were different in many ways. In less industrialised, less connected, less automated work, many educated people were able to master multiple fields because the fields were not that deep. These days, education is about teaching multiple subjects at an &quot;enough level&quot; so that people can find their next steps easily. Becoming more industry-oriented, from K12 to universities, is better because it gives people time to think and learn.&lt;/p&gt;
&lt;p&gt;With education focusing on filling the gaps in the workforce, it reduces the stress and worry about survival in the modern world. More money might not bring happiness beyond a certain threshold, but most people must first earn enough to cross it, and education is one way to do so (not the only way). In the end, education can give people the freedom to think.&lt;/p&gt;
&lt;p&gt;Thinking must be a side activity of work. The action of doing something teaches and gives someone a chance, while equipping them with tools to think better allows them to get better at the action they are doing (and also helps assign a value to it). From my perspective, the university must teach both, but the main focus should remain on building skills for the future. The more jobs we can fill and the more income people can earn, the more time they will have for learning how to think. There is no need to go back to &quot;good-old-days.&quot; First comfort, then wondering.&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://monocle.com/affairs/education-transforming-into-profit-industry/&quot;&gt;If education is only about earning, what happens to learning?&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/education-for-industry/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/education-for-industry/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Magazines are rarely sold in book stores in Berlin. Why?</title><link>https://candost.blog/journal/magazines-are-rarely-sold-in-book-stores-in-berlin-why/</link><guid isPermaLink="true">https://candost.blog/journal/magazines-are-rarely-sold-in-book-stores-in-berlin-why/</guid><description>Why bookstores don’t sell magazines?</description><pubDate>Sun, 30 Aug 2026 14:53:00 GMT</pubDate><content:encoded>&lt;p&gt;I never understood why most bookstores in Berlin (and perhaps in Germany) don&apos;t sell magazines.&lt;/p&gt;
&lt;p&gt;I&apos;m writing a new article right now about magazines and how they shaped my life in the last year. While writing it, I realised that for magazines I often go to stores other than bookstores. Weird.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/magazines-are-rarely-sold-in-book-stores-in-berlin-why/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/magazines-are-rarely-sold-in-book-stores-in-berlin-why/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Emails &amp; Essays &amp; AI</title><link>https://candost.blog/newsletter/mediations-41/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-41/</guid><description>AI is here. Some things must change and adapt. This is my last post on Substack and on this public newsletter page.</description><pubDate>Sat, 29 Aug 2026 17:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Hello! How are you?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(I moved to a new email address to match my blog URL, and from now on I&apos;ll be sending you an email from this new address. Don&apos;t forget to add it to your contacts when you receive the email.).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s been a while since I sent you an email. I&apos;ve been debating the value of the Mediations newsletter in the age of AI. I have to admit that I&apos;ve had a hard time integrating this newsletter with my blog since day one. When I wrote something, I debated its form: an email or an article. Every topic I wrote about could fit both. Eventually, I published everything on my blog, although I sent it as an email. Now, that&apos;s changing. I cannot say I figured everything out now. But before I share, I want to explain why you should bother reading them, even with AI in your pocket.&lt;/p&gt;
&lt;p&gt;We must start by asking one question: what makes something valuable? Why do we find things (like this email) valuable? Many confuse newsletters or content with being informative or entertaining. They often want new information, something they didn&apos;t know. However, new information doesn&apos;t make the information valuable. For example, I have five books on my desk right now. Here you received new information. Is it valuable? Definitely not. So, how can a writer (or creator) make information valuable? Short answer: they can&apos;t.&lt;/p&gt;
&lt;p&gt;The creator does not create value until the consumer community (e.g., readers like you) agrees that the content is valuable (I&apos;m sorry to break it, but you cannot decide alone). The content must move the community a step forward or alter it. So, whatever I write won&apos;t be valuable unless a portion of you agree that it&apos;s influencing your life, or it makes you feel something (don&apos;t underestimate feelings; they are the change itself), or it solves a problem you face (like a different perspective to improve your relationship with someone important to you). OR the information must come to you at the right time you need, which is &quot;mission impossible&quot; for a creator.&lt;/p&gt;
&lt;p&gt;That&apos;s where AI helps the best. It gives you personalised information no creator can match. The vast amount of information the AI has been trained on can be customised for your needs at a specific time. Yet, what AI cannot do is be a human, even when it reaches superintelligence. This begs the question: what does being human mean in this context? Answering this question will also unlock the value question.&lt;/p&gt;
&lt;p&gt;Although the AI has the data, information, and calculation power, it is not sentimental. It can generate a story but cannot live through the change a piece of information creates. It cannot feel or live the information. Moreover, current LLM models use a probabilistic approach, selecting their next token (phrase) based on the highest probability, using data generated by the masses. A story a human writes is statistically insignificant compared to available content. Yet, each human is unique. That&apos;s AI&apos;s weakness.&lt;/p&gt;
&lt;p&gt;Perspective and experience gained by living. As a person, I can live through situations, face challenges, and (perhaps with the help of AI), overcome them. When I tell you what I have been through, you also know it&apos;s been lived; there is someone accountable for it (me). While AI can give you a similar story if you ask for it, it cannot give you the unique perspective gained from living. That&apos;s the value of these emails (or similar content).&lt;/p&gt;
&lt;p&gt;So, the promise I can make with these emails is the value you decide to assign, and an insignificant (hence unique) perspective I live and employ, delivered through stories from my life, sent to your inbox in private.&lt;/p&gt;
&lt;p&gt;Yes, I&apos;m moving these emails to a private setup. I will not cross-post emails to my blog or Substack (except for this last one, because I want to end the Substack publication with a note).&lt;/p&gt;
&lt;p&gt;As you may have noticed, this email doesn&apos;t have any fancy styling. That&apos;s how we all write these personal emails. All future emails will be as if I&apos;m writing to a friend or a government office. When you reply, your email will land in my inbox.&lt;/p&gt;
&lt;p&gt;No more Substack, email open rate or link click rate tracking; I don&apos;t care about them. What I count as success will be the replies I get to each email. I won&apos;t publish these emails anywhere. Once you delete it, it will be gone. Whenever you want to unsubscribe, just reply to any email you receive and let me know that you no longer want to receive them; I&apos;ll remove you from the list (FYI: I also removed you from the Substack publication, so you don&apos;t have to clean up there.).&lt;/p&gt;
&lt;p&gt;I&apos;ll not promise a weekly or biweekly emails. I&apos;ll try to send as often as possible but definitely not more than once a week (who has time to read more anyway?).&lt;/p&gt;
&lt;p&gt;If it&apos;s private, how can others read already sent emails? There is only one way: you forward the email to a person. If an email is valuable, I hope you forward to at least one person who you think will benefit as well (while reading, imagining someone who can benefit other than yourself is always a great way to give back to the community).&lt;/p&gt;
&lt;p&gt;I hope you keep valuing things that are unique albeit being imperfect.&lt;/p&gt;
&lt;p&gt;Until next time,
Candost&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;...&lt;/p&gt;
&lt;p&gt;And be sure to use AI when working on your next&lt;/p&gt;
&lt;p&gt;book or essay or piece of art or photography,&lt;/p&gt;
&lt;p&gt;and then smile or even laugh at your own&lt;/p&gt;
&lt;p&gt;cleverness when you see how good it is,&lt;/p&gt;
&lt;p&gt;and how easy,&lt;/p&gt;
&lt;p&gt;because who the hell has time&lt;/p&gt;
&lt;p&gt;to work at something, to give time to craft, to&lt;/p&gt;
&lt;p&gt;create with their own minds, to spend&lt;/p&gt;
&lt;p&gt;years being mediocre. Why do that when&lt;/p&gt;
&lt;p&gt;mastery, or at least competency&lt;/p&gt;
&lt;p&gt;is so simple&lt;/p&gt;
&lt;p&gt;only a good prompt away?&lt;/p&gt;
&lt;p&gt;...&quot;&lt;/p&gt;
&lt;p&gt;— &lt;a href=&quot;https://shawnsmucker.substack.com/p/please-use-ai&quot;&gt;Please Use AI&lt;/a&gt; by Shawn Smucker&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;P.S.: &lt;a href=&quot;/surfacing-org-knowledge-with-ai-agents/&quot;&gt;I shared a project I created at work as a software engineering leader to leverage AI.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Did someone forward this email to you and you want the next one? Use &lt;a href=&quot;https://forms.gle/mcB556k8AMHUnGrW8&quot;&gt;this link&lt;/a&gt; to subscribe.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Do you want to &lt;s&gt;unsubscribe&lt;/s&gt; stop these emails? Just hit reply and send me an email. I&apos;ll remove you from the list right away.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-41/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-41/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building an AI Hive Mind to Understand Systems as a Manager</title><link>https://candost.blog/surfacing-org-knowledge-with-ai-agents/</link><guid isPermaLink="true">https://candost.blog/surfacing-org-knowledge-with-ai-agents/</guid><description>I&apos;ve built a &apos;hive mind&apos; of AI agents over dozens of repositories to surface organisational and tacit knowledge without gathering a room full of engineers.</description><pubDate>Fri, 21 Aug 2026 06:05:00 GMT</pubDate><content:encoded>&lt;p&gt;From the day that I stepped into a manager role till today, I&apos;ve been relying on other people to do my job. Every passing year, I sacrificed a piece of my software engineering &lt;em&gt;&apos;expertise&apos;&lt;/em&gt; to organisational constraints.: the work that requires me to help aligning people and problems, gathering context and structuring it for better comprehension and narrowing the problem down, listening to people daily to help in various aspects, team performance management, and more. Every step pushed me away from the writing code. But I always tried to stay close to engineering part to understand how systems actually worked, rather than &lt;em&gt;how people thought&lt;/em&gt; that they worked.&lt;/p&gt;
&lt;p&gt;As much as I tried, I became harder every day. My work at SumUp demands working across domains. Considering each domain consisting of dozens of services and applications, I always needed engineers from each domain while working in a project to gather context and surface what needed changing. Nobody had the full knowledge of the system (still doesn&apos;t today). I always had to gather 3-4 people in a room just to figure out how the system works.&lt;/p&gt;
&lt;p&gt;My attempts to outline systems relations made me the master of Mermaid diagrams, Miro boards (that sometimes became outdated faster than the text documentation), RFCs, PRDs, and random technical documents. All of these have succeeded thus far. However, the pace of change (especially with AI) has got higher, and it has become notoriously difficult to continue the same way. I decided to try solving it differently.&lt;/p&gt;
&lt;p&gt;The main goal I established for myself was to eliminate the &quot;gather 3-4 people in a room just to figure out how the system works&quot; stage: find out how the applications, services, tools, and infrastructure connect together and combine it with the deterministic knowledge: the codebase and team structures. As a secondary goal, I wanted to build a mechanism to surface tacit knowledge—knowledge that&apos;s not written in a document, shared, or made explicit.&lt;/p&gt;
&lt;h2&gt;First Attempt: A General Agent&lt;/h2&gt;
&lt;p&gt;I built an AI project using Notion Custom Agents (as we use Notion at SumUp). I connected GitHub and a few other tools so the agent could access the data. I wrote custom instructions to guide agents and explain the purpose and expectations as concretely as possible. I also wrote a few specific documents for agents to use while navigating a big Notion workspace and various repositories.&lt;/p&gt;
&lt;p&gt;This approach has worked for a while. Especially when the scope was limited to a single team&apos;s domain, it was useful. However, it began limiting once it started crossing domain boundaries. The more domains and repositories I connected, the less it could surface the right information. It often missed reading documents that I explicitly directed to read. The tool invocations sometimes timed out, and sometimes agents failed randomly without much explanation. The reliability was &lt;em&gt;good enough&lt;/em&gt;, but I still couldn&apos;t rely on it to do my job.&lt;/p&gt;
&lt;p&gt;All these nudged me to look for a more concrete, reliable, and established solution. Instead of searching for the next AI SaaS product that claims to become the ultimate knowledge worker, I decided to build it myself.&lt;/p&gt;
&lt;h2&gt;Second Attempt: Hive Mind&lt;/h2&gt;
&lt;p&gt;SumUp is a big organisation with thousands of Git repositories, thousands of Slack channels, and millions of pages of documents. I definitely didn&apos;t want to cover all of these. I limited the setup to three core components of SumUp: two domains and one shared mobile application, and I built everything around the domain that I oversee.&lt;/p&gt;
&lt;p&gt;This approach has worked.&lt;/p&gt;
&lt;p&gt;I created a single repository where all other repositories are connected as git submodules with their own AGENTS.md files to give context—creating, as I call it, the hive mind.&lt;/p&gt;
&lt;h3&gt;Setup Outlook&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A single repository with all other relevant repositories (currently ~66) added as git submodules&lt;/li&gt;
&lt;li&gt;Four AI tools: OpenCode (the heart) connected to an LLM provider, Notion + Cursor to update knowledge weekly&lt;/li&gt;
&lt;li&gt;6 custom AI Agents to help users of the hive mind&lt;/li&gt;
&lt;li&gt;A lot of AGENTS.md files, a MEMORY.md, and a SOUL.md file&lt;/li&gt;
&lt;li&gt;One AI agent to collect information, create a report and a GitHub issue&lt;/li&gt;
&lt;li&gt;One AI agent to update the knowledge base and AGENTS.md files by creating a new pull request from the GitHub issue&lt;/li&gt;
&lt;li&gt;One human to read the report, correct any mistakes, remove unnecessary parts and merge the pull request&lt;/li&gt;
&lt;li&gt;A custom CLI tool to manage git submodules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&apos;s it.&lt;/p&gt;
&lt;p&gt;Let&apos;s get into the details.&lt;/p&gt;
&lt;h3&gt;One Git Repository to Rule Them All&lt;/h3&gt;
&lt;p&gt;I created a repository and added all the relevant repositories using git submodules. Having 60+ repositories forced me to introduce some folder structure.&lt;/p&gt;
&lt;p&gt;I grouped repositories by &lt;strong&gt;how the product and teams were structured&lt;/strong&gt; (not by technical structure, like Kotlin repos, Go repos, etc.). For example, Sales and Payments are two big domains at SumUp, and each is placed in its respective folders: domains/sales and domains/payments.&lt;/p&gt;
&lt;p&gt;Then, under each domain folder, I added an AGENTS.md and the &lt;code&gt;repos/&lt;/code&gt; folder. AGENTS.md file provided an overarching domain context for the folder. Instead of adding any specific repository context, it includes the domain&apos;s definition, its principles and structure, plans to retire some services (like if a team wants to remove some service but there is no active project to do so), and ongoing mid- to large-scale projects.&lt;/p&gt;
&lt;p&gt;As I work in the sales domain and aimed to build the hive mind for this domain, I put the clients of the sales domain&apos;s APIs in the main clients/ folder, and platform infrastructure in infrastructure/ and so forth.&lt;/p&gt;
&lt;p&gt;Some domains were big and needed subdomains. I added a subfolder within the domain, and the relevant repositories went into that subfolder. The subdomain also got an AGENTS.md file.&lt;/p&gt;
&lt;p&gt;Example structure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;domains
&lt;ul&gt;
&lt;li&gt;sales
&lt;ul&gt;
&lt;li&gt;core/
&lt;ul&gt;
&lt;li&gt;repos/&lt;/li&gt;
&lt;li&gt;AGENTS.md&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;reporting/
&lt;ul&gt;
&lt;li&gt;repos/&lt;/li&gt;
&lt;li&gt;AGENTS.md&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;AGENTS.md&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;payments
&lt;ul&gt;
&lt;li&gt;processing
&lt;ul&gt;
&lt;li&gt;repos/&lt;/li&gt;
&lt;li&gt;AGENTS.md&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;payouts
&lt;ul&gt;
&lt;li&gt;repos/&lt;/li&gt;
&lt;li&gt;AGENTS.md&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;clients
&lt;ul&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Instead of adding all repositories at once, I only added a few repositories to test the system. I evaluated by looking at how a good LLM model with an OpenCode harness would handle multiple repositories when I ask a cross-domain question.&lt;/p&gt;
&lt;p&gt;When it comes to AGENTS.md files, I created a domain template and extracted all this information from Notion &amp;amp; Slack using AI and validated with my own organisational knowledge and random spot checks. This part took the most of my time. I tweaked these AGENTS.md files quite a lot until I could get a good response to the cross-domain questions I asked.&lt;/p&gt;
&lt;p&gt;(Side note: The moment Anthropic&apos;s Opus started to struggle was roughly around 10 repositories. After 10 repositories, I started creating custom agents to control dispatching subagents.)&lt;/p&gt;
&lt;p&gt;(Another side note: Managing these submodules was quite a burden. Some users of this system won&apos;t know Git. Disk space was also a problem, as some repositories require gigabytes of storage. Therefore, I developed a custom CLI tool (details are in the appendix) to load and offload modules on the local machine as needed.)&lt;/p&gt;
&lt;h3&gt;Custom AI Agents&lt;/h3&gt;
&lt;p&gt;I used OpenCode to create custom agents. OpenCode allows setting up instructions, models, a permission set and a few other granular settings for custom agents.&lt;/p&gt;
&lt;p&gt;In OpenCode, I created three primary agents and two subagents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;General Companion primary agent&lt;/li&gt;
&lt;li&gt;Primary Investigator&lt;/li&gt;
&lt;li&gt;Primary Brainstormer&lt;/li&gt;
&lt;li&gt;Domain Investigator subagent&lt;/li&gt;
&lt;li&gt;Repository Inspector subagent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/surfacing-org-knowledge-with-ai-agents/hive-mind-agents.png&quot; alt=&quot;Hive Mind Agents&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A hive mind user can work with the primary agents but can&apos;t dispatch the background agents.
Why use custom agents rather than leave it to the model to decide?&lt;/p&gt;
&lt;p&gt;Four reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I need to dispatch an agent scoped to a single repository to keep the context small and limited.&lt;/li&gt;
&lt;li&gt;Within a single repository, there is no need to use Opus of Fable; Sonnet or GPT-Terra (or even Haiku) are enough. However, Opus or GPT-Sol class LLM need to handle complexity of the whole work.&lt;/li&gt;
&lt;li&gt;When generic subagents handover the work to the primary agent, their context handover is random. I needed to have a structured report from each background agent to create consistency across domains and provide the same input to the primary agent. I also wanted to make these reports accessible and readable to humans afterwards.&lt;/li&gt;
&lt;li&gt;I wanted to learn how to design this kind of system with structured handovers.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Custom Background Agents&lt;/h3&gt;
&lt;p&gt;After ~10 repositories, LLM started randomly spawning a subagent to narrow down the work, but sometimes it took on the job itself. This dynamic behaviour confused the agent because it thought the repositories in different domains were part of the same scope albeit not.&lt;/p&gt;
&lt;p&gt;Each repository has its own bounded context, its own practices, structure, and more details. They are often in different programming languages. No matter how clearly I told the model (using words like &quot;critical&quot; or &quot;must&quot;), it made up its own &quot;mind.&quot; So, it needed taming.&lt;/p&gt;
&lt;p&gt;Creating custom background agents and ensuring the dispatch command is structured helped the primary agents not to go confuse the boundaries of a repository or domain, so the investigation or brainstorming was finally scoped.&lt;/p&gt;
&lt;p&gt;Background agents also created a result report with findings and suggestions using that domain&apos;s best practices, scope, principles, goals and ongoing projects. This report became the handover document between agents. It&apos;s quite similar to how humans work in teams: each team owns a domain and repositories; they decide how to navigate the investigation/brainstorming based on that domain&apos;s context. When they handover a project or a task, there is (ideally) a handover document.&lt;/p&gt;
&lt;p&gt;I&apos;m not saying that LLMs cannot handle this complex task; Fable with high reasonning most likely can. Yet, it costs a fortune for my budget. In my experience, the results are also much better when the main agent dispatches a specific background agent with specific command.&lt;/p&gt;
&lt;p&gt;Thus, I created two custom background agents (one for investigation, another for brainstorming) whose main jobs are to narrow down the work in a single repository and write up a report file. The primary agents provide these agents with a structured prompt, along with the user&apos;s initial prompt. Each background agent also produces an output report using a clear JSON structure (defined by a Zod schema).&lt;/p&gt;
&lt;p&gt;Let&apos;s talk about how these background agents are used by primary agents.&lt;/p&gt;
&lt;h3&gt;Primary Agents&lt;/h3&gt;
&lt;p&gt;At first, I had no primary agents. In each prompt, I told the LLM to dispatch an &apos;investigator&apos; agent for each repository or domain. That worked until a certain point. It still wasn&apos;t user-friendly (as I had to repeat the same prompt), and I couldn&apos;t expect other users to know how to mention this and some other specific words. So, I started adding more to the main AGENTS.md file; it got longer and longer.&lt;/p&gt;
&lt;p&gt;I went back to the problems I wanted to solve. The first one was: I don&apos;t want to gather 10 people in a room to learn how systems work. I could dispatch 10 background agents to understand how each one worked, but that still didn&apos;t give me anything about how they all fit together. So, I need primary agents to connect the dots.&lt;/p&gt;
&lt;h4&gt;The Primary Investigator Agent&lt;/h4&gt;
&lt;p&gt;The primary investigator agent oversees the whole ecosystem. It performs an initial investigation before dispatching any subagent to figure out which domains and repositories are most likely relevant. If the repositories are not loaded, it downloads them. Once it creates an investigation plan, it dispatches investigator background agents, reads their output reports, merges the whole context, connects dots, creates its reasoning about how things work and assembles a final report. It also creates Mermaid user sequence or system context diagrams if needed.&lt;/p&gt;
&lt;p&gt;The primary investigator then also creates a final report. The final report is a single-page HTML file created using the JSON outputs. As it&apos;s a single .html file, the users can easily send the file to anyone if they want to share the knowledge.&lt;/p&gt;
&lt;h4&gt;The Primary Brainstorming Agent&lt;/h4&gt;
&lt;p&gt;The working mechanism of the main brainstorming agent is the same as primary investigator. However, the purpose is different. It investigates multiple domains, and also helps brainstorming on the problem with the user. This adjustment made exploring multiple solutions across domains possible.&lt;/p&gt;
&lt;p&gt;The primary agent dispatches domain-specific brainstorming subagents, gathers back their output reports and brainstorms an overarching solution based on them rather than running a deep investigation itself.&lt;/p&gt;
&lt;p&gt;In my experience with brainstorming workshops, evaluating the solution in each domain clearly always brought up interesting discussions and clear trade offs. When compared to listing down pros and cons of each solution across domains, the individual domain brainstormings were more comprehensive. Thus, replicating here gave advantage for each primary agent to orchestrate background agents for specific domain, then compare results with a &quot;fresh&quot; context window.&lt;/p&gt;
&lt;p&gt;The background brainstorming agents try to come up with solutions according to the best practices for that domain and creates a report with multiple approaches, including the pros/cons of each and the recommended approach.&lt;/p&gt;
&lt;p&gt;Then the primary brainstormer agent reads these reports and synthesises them to identify a few approaches that span the whole ecosystem, with their pros/cons, and recommends a solution that&apos;s better for the whole ecosystem.&lt;/p&gt;
&lt;h4&gt;The Mind of the Hive Agent&lt;/h4&gt;
&lt;p&gt;Focusing only on technical solutions is helpful for many problems. But not all. While trying to solve some problems, I needed to bring additional context such as organisational structure and prioritise some of the good practices or mental models I try to employ as an engineering leader (e.g., Domain-Driven Design, Conway&apos;s Law, Team Topologies)&lt;/p&gt;
&lt;p&gt;Thus, I introduced another agent that is neither for brainstorming nor for investigation, but one that has additional organisational context and can think like an engineering leader, including team structures, SumUp&apos;s organisational values, and engineering strategy. This agent is freer than the others and can dispatch other primary agents as it sees fit. It cannot dispatch background agents alone.&lt;/p&gt;
&lt;p&gt;All primary agents use good frontier models (e.g., Opus) as they need to handle complex queries.&lt;/p&gt;
&lt;h2&gt;Keeping the information up-to-date&lt;/h2&gt;
&lt;p&gt;I&apos;ve been a fan of creating autonomous teams, but I know it&apos;s not easy. Maintaining an autonomous team is even more challenging. I see this system (also all systems in general) is similar. After I created this system that will give a user (in this case, me) some autonomy for investigation, the system still relied on an individual to update context proactively.&lt;/p&gt;
&lt;p&gt;At my daily work, I spend a good amount of my time and energy following the organisation and learn as much context as possible. That gives me leverage at work to find intricate details, better prioritise the work and bring a more comprehensive context to my team. However, simultaneously, the moment I stop extracting the context I gather and share with others, things slightly go south. That&apos;s the opposite of what I want.&lt;/p&gt;
&lt;p&gt;So, I looked at what kind of information I gather in a very dynamic organisation like SumUp. A few themes popped up: how different systems between tribes and squads work together, what data they send to each other, what flows teams want to deprecate and retire, what flows they plan to kick off and what flows they have no desire to change unless absolutely needed, what challenges they are facing today and what challenges are upcoming in the future. I gather all these by following the conversations and participating in certain meetings. Extracting this siloed information became my side goal.&lt;/p&gt;
&lt;p&gt;I first looked into creating a RAG and have all product and technical documentations along with this &quot;tacit&quot; knowledge and update the data dynamically. However, a RAG was an overkill. What I needed was creating the first information set and a weekly update on what happened in the last week.&lt;/p&gt;
&lt;p&gt;So, I created an automated cron-like agent.&lt;/p&gt;
&lt;h3&gt;Setup&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Custom AI agent researches updates in the last week across Notion and Slack (with a guided prompt)&lt;/li&gt;
&lt;li&gt;The agent creates a new GitHub issue on the repository with its weekly report attached.&lt;/li&gt;
&lt;li&gt;The agent dispatches a Cursor Cloud Agent to read the report and update context in the repository.&lt;/li&gt;
&lt;li&gt;The Cursor agent picks up the task, reads the issue description, the report, researches the relevant context files and creates a pull request to update them.&lt;/li&gt;
&lt;li&gt;A human reads the pull request, makes changes if needed, merges the PR and closes the GitHub issue.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To create initial context and also set up the prompt for custom AI agent to use every week, I searched Slack and Notion to find each domain&apos;s and team&apos;s Slack channels (including private ones I&apos;m part of) and the Notion team spaces. Then, for each domain, I followed the same folder structure in the hive mind repository and created all context and agent&apos;s prompt to use every week (now anyone in the organisation can also see how the information is collected).&lt;/p&gt;
&lt;p&gt;The custom AI agent reviews changes from the last week only, creates a report based on the folder structure in the hive mind repository. The agent uses an LLM model with 1M context window (LLMs with lower context have failed).&lt;/p&gt;
&lt;p&gt;Once the agent run is completed, it creates a new GitHub issue and tags Cursor and asks to update the context files using the information in the report and create a pull request. There is no customization for the Cursor cloud agent. Once Cursor is done, it tags me for review.&lt;/p&gt;
&lt;p&gt;I review both the report and the pull request. I make slight changes as needed, then merge the pull request and close the issue.&lt;/p&gt;
&lt;p&gt;Then I update all submodules once per week (I&apos;ll automate this soon, too).&lt;/p&gt;
&lt;p&gt;That&apos;s it. Although there are tons of improvements, I&apos;m happy with the whole setup. I think 80% of the setup is complete. The last 20% might consume 80% of my time yet yield little benefit compared to the whole project. I will slowly develop it furher.&lt;/p&gt;
&lt;p&gt;We&apos;ll see.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. I didn&apos;t mention any specific LLM model because that&apos;s the dynamic piece of this setup. No need to stick to one, I defined some defaults but change it depending on the job.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Appendix&lt;/h2&gt;
&lt;p&gt;I want to add a few more details about the setup and aim to expand this section going forward.&lt;/p&gt;
&lt;h3&gt;Custom JSON Reports &amp;amp; Final Report&lt;/h3&gt;
&lt;p&gt;I created a Zod JSON schema for handover reports, a few custom tools to create and read JSON reports using the schema, and &quot;told&quot; agents to use the tools when working with reports.&lt;/p&gt;
&lt;p&gt;That allowed primary agents to also load the same schema to understand the format and to directly read the relevant part of the report when they needed information. That made the agents faster as they no longer had to discover the report’s structure.&lt;/p&gt;
&lt;p&gt;It also allowed me to create an overarching HTML report to share with others. When I run an investigation and find something I want to share with others, the best option I have is either to send the outcome of the conversation or to ask AI to summarise it again. However, that also lacks context for each domain.&lt;/p&gt;
&lt;p&gt;I created a new tool in OpenCode that generates a single HTML file from all reports from subagents and the main agent. The primary agents create these HTML files as a result of the investigation using the tool. I read this HTML file to learn the investigation result and also send it to anyone when I want to share, and they can see the whole thing: key findings, listed pros/cons for each domain, final result, and my prompts, what the primary agent told the subagents, etc.&lt;/p&gt;
&lt;p&gt;This way, I don&apos;t need to worry about another write-up, and the HTML serves multiple purposes by definition. It has a key summary for people who need the result and detailed findings for those who need more.&lt;/p&gt;
&lt;h3&gt;Why OpenCode?&lt;/h3&gt;
&lt;p&gt;I got this question from one of the readers of this blog after a few email exchanges. I chose OpenCode for one specific reason: I can change my LLM models and find what fits best. Claude locks me into Anthropic models, Codex locks me into OpenAI, and Gemini locks me into Google. While I can test and play around with many models, why would I lock myself into a single one?&lt;/p&gt;
&lt;p&gt;While Claude Code is a really good harness, it becomes non-functional when it&apos;s down. I use Claude Code with my personal subscription. With OpenCode at work, I switch my LLM model provider and continue working.&lt;/p&gt;
&lt;p&gt;OpenCode has an opinionated approach while still being customizable, which is good enough. It also has a desktop app (although not great) that non-developers can install and use, like my Product Manager. I would love to try as many tools as possible, but who has that much time? I would rather keep my focus on building what I need. Then I can ask AI to move my opencode.json file to whatever the next tool we choose, if we want to change.&lt;/p&gt;
&lt;p&gt;Last but not least, OpenCode is open source and has a strong, active developer ecosystem that keeps it well-maintained and rich in plugins. &lt;/p&gt;
&lt;h3&gt;Custom CLI Tool&lt;/h3&gt;
&lt;p&gt;After having 10 repositories, it became problematic to manage the whole submodules. So, I built a custom CLI tool. It is nothing fancy, and I don&apos;t even know how it works as I vibe-coded it. It only needed a few simple functionalities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Load/Unload modules&lt;/li&gt;
&lt;li&gt;Load/Unload predefined groups of modules&lt;/li&gt;
&lt;li&gt;Load/Unload all repositories under a single domain&lt;/li&gt;
&lt;li&gt;Status of loaded/unloaded modules&lt;/li&gt;
&lt;li&gt;Delete modules (without disconnecting them) to save space&lt;/li&gt;
&lt;li&gt;Define new groups of modules to load/unload with one command&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It works very smoothly and is super easy to use. The custom AI agents I created also use the CLI tool instead of using git directly to load groups of modules with a single command (increasing token efficiency).&lt;/p&gt;
&lt;h3&gt;Future Improvements&lt;/h3&gt;
&lt;p&gt;I&apos;ll keep this section up to date with the latest status. Here are the next improvements I&apos;m considering.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I am thinking of adding an update-all-needed submodules step before any primary agent run, and maybe a GitHub action to update the submodules with a cron job, then push to the main branch right away. But it will also require everyone to pull the changes. So, I&apos;m more inclined to add it as a task to the agent. BUT it will make the agent run longer, as there are almost 60 repositories to review. Maybe a cron job to update modules and commit to the main branch, and then an agent to review for new commits on the main branch, would be sufficient.&lt;/li&gt;
&lt;li&gt;I want to be able to run the investigation without access to GitHub and in the cloud. Although this is not a primary goal right now, it will definitely come in handy for people who are not familiar with the terminal.&lt;/li&gt;
&lt;li&gt;Updating MEMORY.md in every run and from everyone using the repository, and automatically pushing to the repository.&lt;/li&gt;
&lt;li&gt;Use Primary Agents via @-mentioning them on Slack. This is my ultimate goal.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/surfacing-org-knowledge-with-ai-agents/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/surfacing-org-knowledge-with-ai-agents/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Blogs and Emails</title><link>https://candost.blog/journal/blogs-and-emails/</link><guid isPermaLink="true">https://candost.blog/journal/blogs-and-emails/</guid><description>The Internet messed up two concepts.</description><pubDate>Tue, 11 Aug 2026 08:48:00 GMT</pubDate><content:encoded>&lt;p&gt;One thing I keep thinking about is making sense of the Internet. Everything is mingled and mixed. I&apos;m okay with it being chaotic. I&apos;m not okay with my corner of it contributing to this jungle.&lt;/p&gt;
&lt;p&gt;Although a little outside of the context &lt;a href=&quot;https://blog.jim-nielsen.com/2026/blogging-stating-the-obvious/&quot;&gt;Jim&lt;/a&gt; &amp;amp; John talk about in their posts, I&apos;ve long struggled with the newsletter concept being presented as a website (yes, I&apos;m using Substack).&lt;/p&gt;
&lt;p&gt;I&apos;m still annoyed by the dickovers, but I&apos;m more annoyed with blog posts being sent as emails. I&apos;m even more annoyed that I&apos;m doing this as well.&lt;/p&gt;
&lt;p&gt;You might have noticed that I haven&apos;t sent any emails in the last months. That&apos;s because of exactly this.&lt;/p&gt;
&lt;p&gt;John &lt;a href=&quot;https://daringfireball.net/2026/05/what_is_a_dickover&quot;&gt;says&lt;/a&gt; it well:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A webpage should show the webpage. An email should show the email. I should not have to explain this.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That said, a few changes are coming soon to my corner of the Internet.&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://blog.jim-nielsen.com/2026/blogging-stating-the-obvious/&quot;&gt;Blogging Can Just Be Stating The Obvious&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/blogs-and-emails/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/blogs-and-emails/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Timelapse of the Universe Video</title><link>https://candost.blog/journal/timelapse-of-the-universe/</link><guid isPermaLink="true">https://candost.blog/journal/timelapse-of-the-universe/</guid><description>How to humble yourself</description><pubDate>Sun, 09 Aug 2026 15:22:00 GMT</pubDate><content:encoded>&lt;p&gt;I watched &lt;a href=&quot;https://youtu.be/QTQVZuBV9oA&quot;&gt;this video&lt;/a&gt; that shows (and also explains) the universe from the Big Bang till now.&lt;/p&gt;
&lt;p&gt;The moment you see the human is the last thing, as a fraction of a second. That tells how insignificant we are in the universe.&lt;/p&gt;
&lt;p&gt;However, it&apos;s also impossible to comprehend billions of years. We don&apos;t need to go too far; think about how you perceive the next 5 years. Then think about 20 and 30. To me, 20 and 30 &lt;em&gt;feel&lt;/em&gt; similar, although there are 10 years in between them. However, the next 5 years feel much, much bigger compared to 20 just because I can &lt;em&gt;imagine&lt;/em&gt; it.&lt;/p&gt;
&lt;p&gt;Thinking about 13 billion years: it&apos;s the same as money. I can&apos;t imagine 13 billion Euros. I can&apos;t even imagine 1 billion Euros... I also cannot imagine the length of 13 billion years. It&apos;s a lot.&lt;/p&gt;
&lt;p&gt;Anyway. Watch the video if you want to humble yourself.&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://youtu.be/QTQVZuBV9oA&quot;&gt;TIMELAPSE OF THE UNIVERSE:  13 Billion Years in 10 Minutes&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/timelapse-of-the-universe/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/timelapse-of-the-universe/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Ambiguity Is Where the Reader Meets the Writer</title><link>https://candost.blog/notes/102b/</link><guid isPermaLink="true">https://candost.blog/notes/102b/</guid><pubDate>Mon, 03 Aug 2026 07:35:01 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/notes/102/&quot;&gt;102&lt;/a&gt; asks O’Sullivan’s question from the writer’s side: what happens when the production of prose no longer guarantees a mind behind it? Mandy Brown answers the same question from the reader’s side. Reading, she writes, “presumes that what we are reading is the product of a mind, that the reading is itself a gathering of minds.” When there is no mind, “we find not a mind but a forgery, and a glib one at that—a thin, transparent skin wrapped around an empty void.”&lt;/p&gt;
&lt;p&gt;StoryScope measures where that forgery shows. AI over-explains the narrative compared to humans (AI narrators explicitly state the story’s theme 77% of the time vs. 52% for humans.) AI doesn’t trust the reader to infer meaning. That inference is what powers the human writing. It’s that nuance the narrator creates that connects with people because every reader can have different takes from the narrative while AI’s verbosity is there to reduce the ambiguity. That ambiguity is the heart of the story.&lt;/p&gt;
&lt;p&gt;The paper names the same mechanism: “The pattern is one of over-determination: AI spells out meaning rather than trusting the reader to infer it.” The rest of the numbers point the same way — humans keep morally ambivalent protagonists (59% vs. 38%) and treat the audience as a co-participant (an aside to “you, dear reader”), while “AI writes as though no one is watching.”&lt;/p&gt;
&lt;p&gt;One number cuts against the easy version of this argument: AI’s references to other works are &lt;em&gt;vaguer&lt;/em&gt; than ours (72% vague allusions vs. 50% for humans; humans name things specifically). So vagueness isn’t the ambiguity I mean. AI is imprecise about its sources and over-precise about its meaning. The ambiguity that works is the opposite pair — concrete in the particulars, open in what they add up to.&lt;/p&gt;
&lt;p&gt;So the gathering of minds needs a gap to happen in. Meaning that is stated is delivered; meaning that is inferred is &lt;em&gt;produced&lt;/em&gt; — by the reader, in the reader. A text that closes every gap leaves the reader nothing to do, and nothing to do means nobody there.&lt;/p&gt;
&lt;p&gt;This doesn’t overturn what I said in &lt;a href=&quot;/notes/102a/&quot;&gt;102a&lt;/a&gt; — it bounds it. “It won’t matter who wrote it as long as it’s valuable” holds for writing whose value is delivered (the fact, the answer, the how-to). It breaks for writing whose value is produced in the reader, because there the reader’s inference &lt;em&gt;is&lt;/em&gt; the value, and you can’t get it from prose that has already done the inferring for you.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/102/&quot;&gt;102&lt;/a&gt;: the root question, answered from the writer’s side (accountability) — this is the reader’s side of the same question.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/102a/&quot;&gt;102a&lt;/a&gt;: my “valuable regardless of who wrote it” answer, which this note gives a boundary condition.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29&lt;/a&gt;: “Certainty is the enemy of open thinking.” Over-determination is certainty applied to a story; ambiguity is what keeps the reader open.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2d/&quot;&gt;2d&lt;/a&gt;: a tension worth holding — one idea for the reader to &lt;em&gt;leave with&lt;/em&gt; is not the same as one meaning &lt;em&gt;spelled out&lt;/em&gt;. Zinsser’s rule is about the writer’s discipline, not the narrator’s commentary.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/69b/&quot;&gt;69b&lt;/a&gt;: the average of the internet also averages out the ambiguity; the tidy single-track plot is what the mean looks like.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/73a/&quot;&gt;73a&lt;/a&gt;: if you can’t validate the source of truth, you also can’t do the inferring — both notes are about what the reader is left holding.
&lt;strong&gt;Sources:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2604.03136&quot;&gt;StoryScope: Investigating idiosyncrasies in AI fiction&lt;/a&gt; — Jenna Russell, Rishanth Rajendhran, Chau Minh Pham, Mohit Iyyer, John Wieting (University of Maryland / Google DeepMind), preprint. Figures from §4.1 and Table 15; 61,608 stories.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://aworkinglibrary.com/writing/umyazu&quot;&gt;Umyazu&lt;/a&gt; by Mandy Brown&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://psyche.co/ideas/well-soon-find-out-what-is-truly-special-about-human-writing&quot;&gt;We’ll soon find out what is truly special about human writing&lt;/a&gt; by James O’Sullivan&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/102b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/102b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>AI as a Teammate</title><link>https://candost.blog/notes/104/</link><guid isPermaLink="true">https://candost.blog/notes/104/</guid><pubDate>Mon, 03 Aug 2026 07:35:01 GMT</pubDate><content:encoded>&lt;p&gt;When you onboard someone to the team, what do you care about? Their contribution, whether they solve the right problem in the right direction. The same should apply to the AI. You must treat AI as a teammate. Consider them as junior engineers with infinite energy and zero context.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt; &lt;a href=&quot;https://martinfowler.com/articles/reduce-friction-ai&quot;&gt;Patterns for Reducing Friction in AI-Assisted Development&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/104/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/104/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Accountability in Writing at the AI Age</title><link>https://candost.blog/notes/102/</link><guid isPermaLink="true">https://candost.blog/notes/102/</guid><pubDate>Sun, 12 Jul 2026 07:35:01 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“What happens to writing when the production of prose no longer guarantees the presence of a mind behind what’s written?” James O’Sullivan, Psyche.co, 29/05/2026&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then James answers with: “Writing has always asked of the person who does it: a willingness to stand behind words, to mean them, and to accept the consequences of having claimed to have written them.”&lt;/p&gt;
&lt;p&gt;James puts accountability at the heart of writing (even when it’s not public). That’s what separates the AI writing. He argues that anyone can publish a piece, but can they stand behind every word it generates? Also, how to evaluate the output yourself when you don’t understand the written prose. You know there is nobody behind who spent time thinking thoroughly and decided on those words.&lt;/p&gt;
&lt;p&gt;I still think it won’t matter who wrote some text as long as it’s &lt;em&gt;valuable&lt;/em&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;In the LLM age, why do we even bother to write?&lt;/a&gt; What is it that matters?
&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://psyche.co/ideas/well-soon-find-out-what-is-truly-special-about-human-writing&quot;&gt;We’ll soon find out what is truly special about human writing&lt;/a&gt; by James O’Sullivan&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/102/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/102/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Criteria for Valuable Writing with AI</title><link>https://candost.blog/notes/102a/</link><guid isPermaLink="true">https://candost.blog/notes/102a/</guid><pubDate>Sun, 12 Jul 2026 07:35:01 GMT</pubDate><content:encoded>&lt;p&gt;James O’Sullivan argues in his essay on Psyche.Co, “Essentially, the criteria for valuable writing might shift to provenance, from fluency to accountability, and writing that matters will be writing that can still function as evidence of human deliberation—work that cannot be faked because it carries the marks of genuine thought.”&lt;/p&gt;
&lt;p&gt;This is romanticisation of writing. In reality, in practical terms, valuable writing is what moves the conversation forward and what a group in a given community considers valuable. One can put the most deliberate work into it and write it for years in a way nobody can fake. If nobody reads or cares, do we consider that writing valuable just because a human wrote it? We never did, and I doubt we will. Writing most move a community from A to B. It must solve a problem after identifying it. And everyone (or the majority) in that community must agree that it’s a problem that needs solving (even when the problem is fictitious).&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://psyche.co/ideas/well-soon-find-out-what-is-truly-special-about-human-writing&quot;&gt;We’ll soon find out what is truly special about human writing&lt;/a&gt; by James O’Sullivan&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/102a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/102a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Configurations of Businesses</title><link>https://candost.blog/notes/103/</link><guid isPermaLink="true">https://candost.blog/notes/103/</guid><pubDate>Sun, 12 Jul 2026 07:35:01 GMT</pubDate><content:encoded>&lt;p&gt;I always wonder what kind of businesses I’m unaware of because the founder chose to stay off the popular culture. It feels like most companies are either backed by VCs or publicly known. I don’t think I want to create a startup. I want to form a boring company that delivers. But I don’t know in which form or what this company would do.&lt;/p&gt;
&lt;p&gt;In his piece &lt;a href=&quot;https://commoncog.com/there-are-many-configurations-of-business-that-work/&quot;&gt;There are Many Configurations of Business That Work&lt;/a&gt;, Cedric gives a good provocation and thinking frame. A few examples of how he uses them are on point. However, I found that the article is missing a perspective: a strategy to expand our horizon and search for various companies that operate differently. I understand that each company would be unique if we formed in different configurations. Yet, a frame to look for these companies and get inspired by them about what can be done would have been great. Now, it looks theoretical, and I felt the need to buy his subscription. Because he has extensive case studies on different companies, and because I feel lost about the next steps to start a company.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;A system can be set up&lt;/a&gt; in different ways, but you need to be aware of where the bottleneck is or where to let go of some parts to start with a better setup. Know your advantages and disadvantages.
&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://commoncog.com/there-are-many-configurations-of-business-that-work/&quot;&gt;There Are Many Configurations of Business That Work&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/103/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/103/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Design-first Thinking with AI</title><link>https://candost.blog/notes/104a/</link><guid isPermaLink="true">https://candost.blog/notes/104a/</guid><pubDate>Sun, 12 Jul 2026 07:35:01 GMT</pubDate><content:encoded>&lt;p&gt;The difference between spec-first and plan-to-implementation is the same difference between what to build and how to build. Initial analysis with AI and specs should focus on what to build, not how to build.&lt;/p&gt;
&lt;p&gt;In the engineering world, two things are really close. That&apos;s why product thinking is required in agentic software development. Although AI shrinks the thinking from design to implementation, the design step comes first. If an engineer sees the AI&apos;s design thinking while reading the code, it&apos;s already too expensive. It&apos;s also cognitively demanding.&lt;/p&gt;
&lt;p&gt;If two engineers have a whiteboard session on the design, the code review becomes really easy. That&apos;s what we should focus on: make agreements and disagreements visible as early as possible to avoid costly mistakes. In a brownfield project, this can include refactoring parts of the project, whereas greenfield projects are easier to design on the whiteboard.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/104a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/104a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The data set of LLMs is just average</title><link>https://candost.blog/notes/69b/</link><guid isPermaLink="true">https://candost.blog/notes/69b/</guid><pubDate>Sun, 12 Jul 2026 07:35:01 GMT</pubDate><content:encoded>&lt;p&gt;AI produces the average of the internet. Which knowledge are you relying on? What is your information source?&lt;/p&gt;
&lt;p&gt;The AI code generation doesn’t follow team conventions or tacit knowledge unless these are explicitly stated in the AI agent’s context.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/69b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/69b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Technology Wars</title><link>https://candost.blog/notes/101/</link><guid isPermaLink="true">https://candost.blog/notes/101/</guid><pubDate>Sat, 20 Jun 2026 07:35:01 GMT</pubDate><content:encoded>&lt;p&gt;SpaceX’s IPO is restricted to Chinese and Hong Kong investors. There are similar trends in chips and AI technology, too (the Fable 5 LLM model is restricted to the US by the US government because of its power).&lt;/p&gt;
&lt;p&gt;SpaceX is not the main thing. The problem stems from gaining access and influence over a country’s defence and intelligence systems, primarily military. The U.S. is not innocent; they scream for freedom, free speech, and democracy, but only for itself.&lt;/p&gt;
&lt;p&gt;From a European perspective, we must stand against any restrictions and build mechanisms and systems that always offer more than one option to replace any given one. This is evident in Apple’s restricted access to its brand-new Siri implementation (Apple cannot release the 2026 model of Siri in the EU because of monopoly restrictions although Siri has existed for years). The EU doesn’t allow Apple’s monopoly in its market (up to a certain point). Even for new features or products. Big tech can’t have the same monopolistic and capitalist approach in the EU as they do in the US. The EU stands against this from another angle. Twenty-seven nations make up the EU. The rules are there to balance between them and the rest of the world. 450 million people are a gigantic market for any company, and access should be open to all companies when big tech develops a product.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/96/&quot;&gt;Capitalism creates wealth through innovation&lt;/a&gt;. I wonder how innovation can survive in this tech-war environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sources:&lt;/strong&gt; Commentary on “Absent from hot IPOs? Chinese Investors” by Alexandra Stevenson, Maureen Farrell, Lauren Hirsch, New York Times International Edition, July 13-14 + “Apple AI Upgrade Kept out of Europe for now” by Adam Satariano from the same newspaper.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/101/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/101/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On the Changing Role of Software Engineers</title><link>https://candost.blog/newsletter/mediations-40/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-40/</guid><description>Establishing an ownership mindset is more important than before. The only difference is that now it&apos;s feasible.</description><pubDate>Tue, 09 Jun 2026 09:50:00 GMT</pubDate><content:encoded>&lt;p&gt;Software engineering as we used to know it is dead. AI condensed the code-writing step of the process from days to minutes. Engineers found themselves having many tasks on their plates, running many agents in parallel. They are burning out tokens and themselves at the same speed. However, I argue that the approach is incorrect. Because one aspect of software engineering hasn’t changed: having an ownership mindset. Today, &lt;strong&gt;the ownership mindset defines the role.&lt;/strong&gt; Although I’ve been preaching about it for a long time, &lt;strong&gt;establishing an ownership mindset finally became feasible with AI.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I had various conversations with software engineering leaders over the last few months, trying to understand the changing role of software engineers. Perhaps for the first time ever, we are in consensus about job titles: &lt;strong&gt;we have no idea what to call software engineers after they powered up with AI.&lt;/strong&gt; Context engineers? Product engineers? AI engineers? Prompt engineers? AI-native software engineers? Full-stack builders? Or still software engineers? But our discussions don’t get stuck there; we move forward to looking at what’s behind all these titles. Because they all mean something different from writing code.&lt;/p&gt;
&lt;p&gt;I have preached about &lt;a href=&quot;/rethinking-performance-the-real-meaning-of-a-high-bar&quot;&gt;end-to-end ownership for software engineers&lt;/a&gt; for a very long time. I have seen that engineers perform their jobs better when they are closer to their users, have a product sense (even platform-as-a-product), when they communicate with stakeholders and demo their own work (and ideally, directly to their users). Many, many times, &lt;strong&gt;I have seen higher-quality, more reliable results that require less rework and have fewer bugs in this operating mode.&lt;/strong&gt; However, we couldn’t expect engineers to do all of these before.&lt;/p&gt;
&lt;p&gt;Because typing code and staying in context to cover various edge cases in the codebase required huge time and effort. And there was nobody other than engineers who could do these. They were focused on completing this part of the work. &lt;strong&gt;Organisations, naturally, added a few roles over the decades to parallelise work and let engineers take care of their parts as quickly as they could.&lt;/strong&gt; The product manager or owner was added to the front of the pipeline, along with someone to focus on user experience and someone to oversee quality downstream. Then we started shifting left the quality, security, and many other things until we were bottlenecked with engineering again. While this approach supported business growth, enabled fast changes and allowed engineers to design a better codebase, it’s no longer holding steady.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;As typing code has shrunk to a minimum thanks to AI, engineers have found themselves juggling multiple tasks in parallel.&lt;/strong&gt; Just because there was more time to do something else while the AI was working, everyone thought asking for more of the same work was a good idea, so they did. After a while, problems such as &lt;a href=&quot;https://margaretstorey.com/blog/2026/02/09/cognitive-debt/&quot;&gt;cognitive debt&lt;/a&gt; (overloaded people who are getting closer to burnout) or the vibe-coding trap (AI-generated code that has never been checked) began to appear. The solution was there all along, but many decided not to see it.&lt;/p&gt;
&lt;p&gt;It is the core idea of Kanban: &lt;strong&gt;the work-in-progress (WIP) limits, but with a little caveat.&lt;/strong&gt; &lt;em&gt;Although unintuitive,&lt;/em&gt; &lt;strong&gt;limiting the amount of work that runs in parallel is actually producing better outcomes and outputs.&lt;/strong&gt; I believe the idea of WIP limits must be emphasised more strongly than before. But perhaps not in the way that many people did it before.&lt;/p&gt;
&lt;p&gt;While work is being split into multiple tasks, everyone still tries the same thing as before: splitting the work into different contexts. However, &lt;strong&gt;the context one person can manage is still limited.&lt;/strong&gt; Many organisations expect engineers to parallelise their context and scale vertically: stack up different tasks in parallel. I argue that &lt;strong&gt;they should expect engineers to manage a single context while parallelising different tasks within it.&lt;/strong&gt; Therefore, engineering should scale horizontally over the stack, forming a chain of tasks.&lt;/p&gt;
&lt;p&gt;Let’s take quality assurance (QA) as an example. There are many debates about the role of QA: some teams have a separate person, some don’t. Although I see the QA team (when it exists) as enablers that help engineers manage quality, many organisations work differently: engineers hand off work to QA to run tests, report bugs and sign off releases. Even in some teams, QA is responsible for writing tests.&lt;/p&gt;
&lt;p&gt;While handing over the work to QA was previously needed for the feasibility reasons I mentioned above (typing code taking a lot of time), it’s no longer realistic. Now, &lt;strong&gt;AI requires verification layers to be up front.&lt;/strong&gt; The more we shift the quality left in the process, the better and faster feedback we get. The non-deterministic nature of AI forces us to build verification mechanisms first to ensure AI outputs are accurate. And there is no point in having a separate person writing tests and handing them over to software engineers. This is a single-person job. In my opinion, it has always been. But now, there is no argument left against it.&lt;/p&gt;
&lt;p&gt;So, suddenly, software engineers have to—not should—understand their users, their product, and the business to write effective tests across the stack. Moreover, they also can’t write good specs that are prerequisites for AI agents to perform better (not everyone does spec-driven development, but the plan-and-build approach many people follow is also a form of spec-driven development). Software engineers being responsible for specifications and quality is the horizontal scaling.&lt;/p&gt;
&lt;p&gt;This kind of &lt;strong&gt;horizontal scaling reduces cognitive debt because engineers can stay in the same business/product context while using various AI agents to handle different parts of the job. This is a fundamental mindset shift: moving from building features in parallel to building a single feature end-to-end faster.&lt;/strong&gt; They will need to understand users, the project and scenarios to write clear specs for AI agents.&lt;/p&gt;
&lt;p&gt;There is a counterargument that engineers now have to learn many different parts of the process and lose their speciality. The same argument also claims that they will still be overloaded across different contexts as they take on more than just coding. In my practical experience, this argument isn’t strong. I’ve been working on building this mindset at my day job, and my experience shows me otherwise.&lt;/p&gt;
&lt;p&gt;When people are coached and mentored well, they become more specialised in what they are doing and achieve even better results. They gain the power to make more decisions independently. &lt;strong&gt;Once they become a part of defining the why and the what of the job, how they build it becomes more effective.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I also must admit that this is not everyone’s trait. Although I had more than a few people in the organisation who struggled to build the needed skills, they also admitted that they enjoyed the work more (albeit sometimes with more stress due to a steep learning curve).&lt;/p&gt;
&lt;p&gt;If we continue &lt;a href=&quot;/strong-ownership-culture-in-a-team&quot;&gt;establishing an ownership mindset&lt;/a&gt; and scaling engineers horizontally over the stack (not vertically), we can’t hold ourselves from posing two big questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What will happen to the people who used to “support” software engineers?&lt;/li&gt;
&lt;li&gt;How can software engineers adapt and learn tons of new skills?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I really have no answer for the first question as I can’t predict the future. However, today I see product people moving to “builder mode” and using AI, and quality engineers moving to “builder mode” as well, focusing on building automations end-to-end (in ways that were impossible before). So, they are spreading through the software engineering side of things. We’ll see what happens in the future.&lt;/p&gt;
&lt;p&gt;For the second question: if the leadership sets expectations and incentives correctly and engineers are willing to build an ownership mindset, they develop these skills over time. I’ve seen it before, the AI and also observed that these engineers shine with AI. I see them enjoying the work much more when they own the entire feature end to end. All they need is a little help to identify the skills they lack and define a growth trajectory for them through training, practical experience, and mentorship.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;I share up to three things I found interesting, sorted from good to great.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Good:&lt;/em&gt;&lt;/strong&gt; Many people are struggling to understand what they think about AI and how to approach it. Perhaps the bigger problem is that the technology is not fully deterministic but probabilistic. I quite like the framing of the idea Dan &lt;a href=&quot;https://www.mooreds.com/wordpress/archives/3737&quot;&gt;presents&lt;/a&gt;: AI’s biggest difference is that it cannot care about anything. I certainly can relate to it and think about many scenarios where I knew something was wrong but couldn’t frame it what or why. Also, the text is crisp and on point. Dan now provided the right words for me to use in different contexts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Better:&lt;/em&gt;&lt;/strong&gt; You need a space to sit down and let yourself hear your thinking. &lt;a href=&quot;https://psyche.co/turning-points/everyone-needs-a-place-to-sit-and-simply-hear-themselves-think&quot;&gt;Beautifully written.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Great:&lt;/em&gt;&lt;/strong&gt; I often don’t link popular articles here. I’ll make an exception. Read the &lt;a href=&quot;https://martinfowler.com/articles/reduce-friction-ai/&quot;&gt;Patterns for Reducing Friction in AI-Assisted Development&lt;/a&gt; on Martin Fowler’s website (including all sub-pages). I printed out the whole article and have been studying it for a while to understand how to establish AI in a tech organisation. It sparked so many ideas.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-40/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-40/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Critique: AI Can’t Care</title><link>https://candost.blog/journal/critique-ai-can-t-care/</link><guid isPermaLink="true">https://candost.blog/journal/critique-ai-can-t-care/</guid><description>One of the best frames for thinking about AI.</description><pubDate>Tue, 02 Jun 2026 09:22:00 GMT</pubDate><content:encoded>&lt;p&gt;Many people are struggling to understand what they think about AI and how to approach it.&lt;/p&gt;
&lt;p&gt;Perhaps the bigger problem is that the technology is not fully deterministic but probabilistic.&lt;/p&gt;
&lt;p&gt;I quite like the framing of the idea Dan presents: AI&apos;s biggest difference is that it cannot care about anything. I certainly can relate to it and think about many scenarios that I knew something was wrong but couldn&apos;t frame it what or why.&lt;/p&gt;
&lt;p&gt;Also, the text is crisp and on point. Dan now provided right words for me to use in different contexts even.&lt;/p&gt;
&lt;p&gt;I recommend reading &lt;a href=&quot;https://www.mooreds.com/wordpress/archives/3737&quot;&gt;it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://www.mooreds.com/wordpress/archives/3737&quot;&gt;AI Can’t Care&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/critique-ai-can-t-care/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/critique-ai-can-t-care/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Truly Disagree and Commit</title><link>https://candost.blog/newsletter/mediations-39/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-39/</guid><description>Always commit to yourself and find a way to commit to whatever comes at you, even though you disagree</description><pubDate>Tue, 26 May 2026 08:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, &lt;strong&gt;I learned what “disagree and commit” truly means&lt;/strong&gt;, a concept everyone struggles with a lot. Committing to an idea that you disagree with is difficult. Or, let’s say it was, until today.&lt;/p&gt;
&lt;p&gt;The idea is that &lt;strong&gt;you may disagree with whatever life throws at you. You accept it as it is, but you &lt;em&gt;have to&lt;/em&gt; commit to yourself.&lt;/strong&gt; I learned this at the most unexpected place (to me): in an improv comedy course.&lt;/p&gt;
&lt;p&gt;Improvisational theatre is magical. When you’re on the stage (or taking an improv course like me), it teaches you life skills that you already knew but had forgotten. When you learn a concept from the improv world, you rarely say, “Whoa! How would I have known?” You often say, “Yeah, it makes sense.” When you leave the class, you’re surprised by how little you learned, but also amazed by how much you re-learned and the different perspective you have gained.&lt;/p&gt;
&lt;p&gt;In improv, &lt;strong&gt;you commit to whatever your scene partner throws at you or whatever weird thing your brain pops up,&lt;/strong&gt; so you make yourself a fool on the stage. You &lt;strong&gt;“yes-and”&lt;/strong&gt; &lt;em&gt;ANY&lt;/em&gt; idea. When your scene partner calls you a monkey, you become one. You don’t reject and say “no, I’m a horse” (unless you’re a delusional monkey who thinks that it’s a horse) just because you were planning to become a horse in your head.&lt;/p&gt;
&lt;p&gt;The audience’s expectation builds up instantly. All eyes are on you to see how you become a monkey, not a horse. At that moment, your brain plays games with you. All the plans you have made about what kind of horse you will be, its mood and behaviour are gone. Your soul disagrees with the monkey, but you commit to it and become a monkey that people were waiting for from the moment the monkey word was heard.&lt;/p&gt;
&lt;p&gt;Life is the same. As the famous quote says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Life is what happens to you while you’re making other plans.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, you must commit to what happens in life, as you can’t control most of it. You don’t force your own way into life, but life forces upon you. &lt;strong&gt;The more you fight with reality, the more difficult your life becomes.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In one scene in our class, someone came up with a character who was a rich douchebag. The improv game we were learning was about copying others and increasing the level of absurdity in each phrase (yes-and’ing everything), so we became five rich douchebags, and the scene built into a poor-people-blaming scene.&lt;/p&gt;
&lt;p&gt;Although we all committed to becoming douchebags on the stage, one person couldn’t commit to shaming poor people and found themselves halfway in, halfway out. The person was committed to the character but not to the play; they struggled on the stage. Their struggling acting, which denied the narrative yet tried to adapt it to the douchebag character, was visible to everyone, including the audience. The more they tried to fight against their heart and soul, the more difficult their acting became.&lt;/p&gt;
&lt;p&gt;At first, the douchebag characters started out innocent. We all built on each other’s phrases and eventually began mocking with the bad taste of cheap beer. &lt;em&gt;(Essentially, we were mocking the rich douchebags by showing how douchebag they are.)&lt;/em&gt; The more the struggling person tried to participate, the more isolated they became; the phrases they came up with didn’t fit. Even physically, they moved to the corner of the stage and unconsciously separated themselves from the four of us. Their body was rejecting the idea.&lt;/p&gt;
&lt;p&gt;At that point, the teacher paused the scene and asked the person to commit to themselves—&lt;em&gt;not the narrative&lt;/em&gt;—as well as the douchebag character. In a way, they had to yes-and the rich douchebag &lt;strong&gt;and&lt;/strong&gt; yes-and themselves. That was the easy way out, but they couldn’t see it until someone else pointed it out. When we continued, the person said, “I must admit: from time to time, I drink a cheap beer because it’s actually damn tasty.”&lt;/p&gt;
&lt;p&gt;That admittance made the scene much, much better. We desperately needed a way to get out of the constant blaming of cheap beer, and that phrase changed the course to a much funnier direction. During the rest of the play, we all smiled and ended with a big laugh (the best ending in improv comedy).&lt;/p&gt;
&lt;p&gt;When someone calls you a douchebag or a monkey, and you have to commit to it, but it’s up to you how you play it. Your choices depend on how you feel about yourself and how you view the situation. &lt;em&gt;What matters is that you commit to whatever comes&lt;/em&gt; &lt;strong&gt;&lt;em&gt;and&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;find an angle within yourself that you can commit to.&lt;/em&gt; AND, &lt;strong&gt;fully commit to both.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let’s say something happened in your life, and you’re sad. Even if your scene partner calls you a monkey (or your boss shares some difficult news), you still must commit to yourself and perhaps play a sad monkey who really needs a cheer up. You have the power to transform the monkey into whatever you want (&lt;em&gt;if your company laid off 20% of its people and you were not affected, you can disagree with the decision and still turn that into an opportunity&lt;/em&gt;). When you try playing the happiest monkey in the world while deep down you are sad for something you can’t get out of your head, the audience (and your teammates and boss) will see right through it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When you try to do something conflicting yourself, everyone around you clearly sees it, even though you think they don’t.&lt;/strong&gt; Much like on stage, you’ll make your life difficult because you’re trying to become something your soul and body can’t accept. Everyone will see your struggle, but will have a hard time naming it. &lt;strong&gt;The moment you accept the reality and “yes-and” to yourself is the moment everyone, including you, will see the most amazing side of you&lt;/strong&gt; (or the best play that everything fits together well).&lt;/p&gt;
&lt;p&gt;Within the spontaneous and random things happening every day, you constantly choose how to react. It’s your choices that turn the day into a good or a bad one, not what life throws at you. &lt;strong&gt;Every day, you become the person of your choice.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That choice is sometimes yours, sometimes somebody else’s. You don’t always get to decide. At work, it might be a new responsibility or a role change you have no choice but to shoulder. &lt;strong&gt;The escape from random events popping up in the most unexpected times is yes-and’ing them and finding something for yourself that you can yes-and, too.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you can’t yes-and yourself and only yes-and whatever is thrown at you, there is no way that thing will make you happy. When your body and soul reject it, you can turn to yourself and commit to whatever is within you. But &lt;strong&gt;not halfway in and halfway out. You have to be all the way in to committing yourself or all the way out and leave the stage.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While still playing the (life) game, you can commit to anything, because in life (and in improv), you write the play as you go; there is no script. Creativity and commitment are two things that move the scene and life forward.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;I share up to three things I found interesting, sorted from good to great.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Good:&lt;/em&gt;&lt;/strong&gt; I’m not rich. BUT I am aware of my privileges. Although I most likely won’t understand what it feels like to be poor, I try to put myself in the shoes of those less fortunate. &lt;a href=&quot;https://whatever.scalzi.com/2005/09/03/being-poor/&quot;&gt;This&lt;/a&gt; showed so much that I couldn’t even think.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Better:&lt;/em&gt;&lt;/strong&gt; You may know from the last newsletter that I’m a big fan of physical magazines, especially editorial or journalistic ones. I bought the latest issue (32nd) of Electra magazine on my way back from travel and read the piece called “&lt;a href=&quot;https://iris.unive.it/retrieve/b5ab13ec-2a56-48c0-b2c4-ba9eddec43ee/Pasquinelli-AI-measure.pdf&quot;&gt;AI As A Measurement Of Human Intelligence&lt;/a&gt;” by Matteo Pasquinelli. As it starts with this quote: “Civilisation advances by extending the number of important operations we can perform without thinking of them,” you know it’s a good article. That’s how I see AI affecting us. Really, really good article.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Great:&lt;/em&gt;&lt;/strong&gt; I always appreciate well-written hard truths. This one is about &lt;a href=&quot;https://essays.fnnch.com/make-a-living&quot;&gt;how to make a living as an artist&lt;/a&gt;. You don’t need to be an artist to read the article. I urge you to read it, especially if you’re NOT an artist. Learning the harsh realities rather than relying on Instagram’s or TikTok’s algorithms, which display only the good side of things, can turn your (and maybe your kids’) life around.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Do you have suggestions for great things? Comment below (or reply to this post via email).&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-39/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-39/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On Strategic Thinking</title><link>https://candost.blog/newsletter/mediations-38/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-38/</guid><description>What people mean by &apos;you need to think more strategically.</description><pubDate>Tue, 12 May 2026 08:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I never understood what people meant by “strategic thinking” or “being strategic.” I couldn’t accept the feedback when I heard “you need to think more strategically” as well. Nobody could explain what that “strategic” word meant. I finally understood the real meaning when I tried to build an engineering strategy myself.&lt;/p&gt;
&lt;p&gt;As I create an engineering strategy for my team and other teams, I have an answer to what it means to think strategically, especially after seeing how people think and approach strategy as we build it together.&lt;/p&gt;
&lt;p&gt;It became clear to me that the strategy is about aligning people—agreeing on which problems to solve and in which order to solve them. It is the exercise itself that matters: deciding which direction to go and creating a plan. A plan that everyone will stand behind, even if they disagree with (or don’t like) it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Being strategic means seeing the forest and its condition first and explicitly stating that the forest exists.&lt;/strong&gt; Many people miss the forest for the trees. They lose a lot of time focusing on their local optimum without taking a step back to find global maxima. They try to prune the wild trees (small or &lt;a href=&quot;/the-one-with-the-wrong-problem/&quot;&gt;wrong problems&lt;/a&gt;) in front of them and jump from one tree to another, while forgetting to care about the greater forest.&lt;/p&gt;
&lt;p&gt;The root cause of this behaviour is jumping to solutions right away after seeing a problem. ”We can do this right away! It’s a tiny thing,” they say, without thinking about &lt;a href=&quot;/chestertons-fence/&quot;&gt;understanding the problem deeply&lt;/a&gt;. They operate with first-order thinking—focusing on immediate results and obvious outcomes. They don’t see the cost of distraction from the main goal. They focus on small wins.&lt;/p&gt;
&lt;p&gt;If you read or watched The Lord of the Rings (LOTR), you may remember a scene where The Fellowship of the Ring has been formed in a council to take the One Ring to Mordor. Gimli is a dwarf without strategic thinking. Upon seeing the ring in real time, he hits the ring with his axe to destroy it. Little does he know that it won’t fix the problem. Then Gimli argues with Legolas that an Elf can carry the ring over his dead body; surely walking on the way to failure, as he is distracted from the main goal: destroying the ring. However, strategic thinking means thinking about the consequences of actions, which Gimli doesn’t do. It’s not about quick wins; it’s about understanding and agreeing on the biggest goal (that the Ring must go to Mordor and be unmade in Mount Doom).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Being strategic means aligning people on the path to solutions to the most important problems.&lt;/strong&gt; While you can &lt;a href=&quot;/transparency-over-context/&quot;&gt;show someone the biggest problem&lt;/a&gt;, they often can’t &lt;a href=&quot;/learnings-on-dealing-with-ambiguity/&quot;&gt;comprehend how multiple problems feed each other&lt;/a&gt;, and can’t figure out the &lt;a href=&quot;/love-the-constraints/&quot;&gt;underlying factors&lt;/a&gt; contributing to a single problem.&lt;/p&gt;
&lt;p&gt;During the same scene, Boromir tries to choose an easy way: use the ring to their benefit, thinking that it’s the solution (even after seeing the biggest problem). He tries to distract others, too. Aragorn takes a step to convince him. Although he joins the Fellowship of the Ring, he still disagrees with the direction and has other plans. There, Boromir sees the biggest problem—that as long as the ring exists, Sauron will exist—but can’t comprehend it. That pushes him to focus on another problem.&lt;/p&gt;
&lt;p&gt;People who can’t think strategically lose themselves in building &lt;a href=&quot;/how-to-approach-software-architecture-design/&quot;&gt;the perfect system design&lt;/a&gt;, while the business isn’t even sustainable or profitable enough to support it. Many startups fail because someone tried to build a system for millions of users when they had only a dozen.&lt;/p&gt;
&lt;p&gt;Last but not least, &lt;strong&gt;being strategic is about being &lt;a href=&quot;/newsletter/mektup-13/&quot;&gt;constructive&lt;/a&gt;, forward-looking&lt;/strong&gt;. Everyone can contribute to a strategy, but not everyone can stay constructive. Enduring generosity and thoughtfulness is difficult, especially when the strategy may entail extra responsibilities. Strategic thinkers find ways to detach themselves from individual interests and focus on the organisation’s welfare. That detachment is not something everyone is willing to do (in LOTR, Boromir arrives at this point a little too late).&lt;/p&gt;
&lt;p&gt;Strategy, of course, doesn’t end here. A successful strategy is not only about vision and agreeing on problems. It’s also about &lt;a href=&quot;/leading-a-big-project-step-by-step/&quot;&gt;execution&lt;/a&gt;. Until the ring reaches Mount Doom and is thrown away, the strategy cannot be successful. Any strategy needs &lt;a href=&quot;/bias-towards-action/&quot;&gt;agile planning&lt;/a&gt; because of the duration of obstacles encountered along the way. However, once everyone is aligned on the direction and solving the biggest problem, the problem can ultimately be solved as difficult as the Fellowship of the Ring’s journey.&lt;/p&gt;
&lt;p&gt;Strategic thinking is not bound to or reserved for managers and &lt;a href=&quot;/newsletter/mektup-15/&quot;&gt;needs no title&lt;/a&gt;. It can be applied anywhere and by anyone. However, it’s not easy to find people who can do this &lt;em&gt;consistently&lt;/em&gt;. It has a steep learning curve and requires practice.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;I share up to three things I found interesting, sorted from good to great.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Good:&lt;/em&gt;&lt;/strong&gt; As much as I read dozens of digital newsletters and blogs, my favourite is still physical media like printed magazines and books. The problem with physical media I can read in English is that they are limited to the Anglosphere, giving me a narrow worldview. I want to read people from Spain, China, Japan, Lebanon, Saudi Arabia or any other non-Anglosphere regions. Although translator tools do a good job, finding these people is the most difficult. To avoid being in a narrow bubble, I subscribed to physical &lt;a href=&quot;https://translatormag.co&quot;&gt;Translator Magazine&lt;/a&gt; (not to their digital newsletter called The Dispatch). They sent me the new issue, number three, by post last week. I highly recommend it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Better:&lt;/em&gt;&lt;/strong&gt; Rich Hickey, the author of Closure, has &lt;a href=&quot;https://youtu.be/SxdOUGdseq4?si=moB1sYt0sIKrwPZr&quot;&gt;a talk named “Simple Made Easy”&lt;/a&gt; that I watch once in a while. Really, really good talk about dealing with complexity. Even after 5 years, even after AI is everyone’s centre of life, his talk remains a fundamental piece that everyone should watch—at least once a year.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Great:&lt;/em&gt;&lt;/strong&gt; The reason I love magazines is the editorial process. As a blog author, I have no editor to give me feedback and tell me my prose is a piece of crap. In digital media, it’s rare to find great pieces because production costs are ultra-low. That’s where the physical media plays a big role. The space is limited, and quality has to be high. Therefore, I recommend another physical magazine that I get every two months, &lt;a href=&quot;https://worksinprogress.co&quot;&gt;Works in Progress&lt;/a&gt;. Great print quality, great ideas, great essays.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Do you have suggestions for great things? Comment below (or send me an email).&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Recently I published&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;✍🏼 &lt;a href=&quot;/managers-returning-to-coding-with-ai/&quot;&gt;Managers Returning to ‘Coding’ with AI&lt;/a&gt;: I found myself building more and more. Other managers around me are similar, too. However, we all have different motivations. Over several conversations, I realised there are different groups, and I’ve been trying to figure out which one I feel I belong to.
&lt;em&gt;Spoiler:&lt;/em&gt; I am building things more because I feel nervous and curious about new tech and consider that I need to learn more about it to lead my team better.&lt;/li&gt;
&lt;li&gt;🔖 &lt;a href=&quot;/books/learning-domain-driven-design-part-1-strategic-design/&quot;&gt;Learning Domain-Driven Design Part I: Strategic Design&lt;/a&gt;: I shared my notes from the first part of the book I’m reading currently, Learning Domain-Driven Design by Khononov. I will share my notes on the upcoming three parts as I read them, too.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-38/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-38/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Managers Returning to &apos;Coding&apos; with AI</title><link>https://candost.blog/managers-returning-to-coding-with-ai/</link><guid isPermaLink="true">https://candost.blog/managers-returning-to-coding-with-ai/</guid><description>Managers going back to coding for various reasons. I&apos;m trying to find which group I belong to.</description><pubDate>Fri, 08 May 2026 06:05:00 GMT</pubDate><content:encoded>&lt;p&gt;We have been talking with other engineering leaders around me about the impact of AI in &lt;em&gt;our&lt;/em&gt; profession. Although nobody knows what will happen, I kept thinking about where I&apos;m standing and what others are doing &lt;em&gt;today&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;There is certainly a trend among managers to go back to &lt;em&gt;building&lt;/em&gt; with AI. People who haven&apos;t been working as an individual contributor for longer than a decade find themselves building software again; some for production, some for open source, some for fun. All have a mixed bag of reasons.&lt;/p&gt;
&lt;p&gt;I haven&apos;t been coding for almost five years, and now I&apos;m back to contributing to the codebase. I want to &lt;a href=&quot;/notes/8a/&quot;&gt;uncover why I&apos;m doing it&lt;/a&gt;, where I stand and its impact on myself and my team. I believe where I stand matters to my success as a leader, as well as where I&apos;m headed, as &lt;a href=&quot;/notes/46c/&quot;&gt;many changes will happen on where I stand today&lt;/a&gt;. I see the road ahead is (once more and has always been) full of mud, rocky hills and a lot of pain.&lt;/p&gt;
&lt;p&gt;Based on what &lt;em&gt;I observe&lt;/em&gt;, there are a few groups of managers I can be part of.&lt;/p&gt;
&lt;p&gt;Managers who&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;are expected to &quot;code.&quot;&lt;/li&gt;
&lt;li&gt;are &quot;coding with AI&quot; for self-entertainment.&lt;/li&gt;
&lt;li&gt;are &quot;coding with AI&quot; as an extra to stay grounded.&lt;/li&gt;
&lt;li&gt;are nervous/curious/excited about new tech and feel like they need to learn to lead their teams better.&lt;/li&gt;
&lt;li&gt;feel the FOMO.&lt;/li&gt;
&lt;li&gt;are doing whatever they are doing pre-2025.&lt;/li&gt;
&lt;li&gt;others.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Before I dive into each group, I want to clarify one thing: I put the word &apos;coding&apos; in quotes. Because it&apos;s not the coding that we know pre-2025. The &quot;coding&quot; means that it&apos;s performed by an AI tool (with LLM); the AI writes the code, not the person. The person &lt;em&gt;perhaps&lt;/em&gt; tweaks a few lines here and there by hand. That&apos;s it.&lt;/p&gt;
&lt;h2&gt;Managers are expected to &quot;code&quot;&lt;/h2&gt;
&lt;p&gt;I think this group is straightforward. A lot of articles are written about this group.&lt;/p&gt;
&lt;p&gt;With or without AI, these managers are expected to work like a combination of an individual contributor and a manager. This group was always there, but small in the late 2010s and early 2020s. However, the industry expectations have recently shifted toward this direction.&lt;/p&gt;
&lt;p&gt;Instead of being only a people manager, they also code. Now, with powerful LLM models and good agent harnesses like Claude Code, Cursor, etc., this group&apos;s IC work has become easier (or chaotic).&lt;/p&gt;
&lt;p&gt;Along with the upsides, there are many downsides to managers actively coding features due to unbalanced power dynamics within the team. Many problems pop up when the team is more competent than the manager (which is often the case), but the team can&apos;t argue against the authority&apos;s decisions.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(A small note: there are many managers looking for jobs and hitting this expectation, finding themselves sharpening their technical skills. It&apos;s very challenging to do it while searching for a new job. There are also many like me who are taking precautionary steps in case we are laid off.)&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Managers are &quot;coding&quot; with AI as an entertainment&lt;/h2&gt;
&lt;p&gt;This group is probably the least harmful of all. One can argue that it&apos;s the best.&lt;/p&gt;
&lt;p&gt;For these managers, building software with LLM is a hobby, so to speak. They play around with things that don&apos;t contribute to production code, or they work on their hobby projects outside of work.&lt;/p&gt;
&lt;p&gt;There are not many downsides to the people at work, other than the time spent on these. The benefits are much higher than in the first group: these managers see what&apos;s out there and can judge better when people talk bullshit without incurring the penalty of &lt;a href=&quot;/notes/19h/&quot;&gt;authority imbalance&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Managers are &quot;coding&quot; with AI as an extra to stay grounded&lt;/h2&gt;
&lt;p&gt;This group acts on a &lt;em&gt;felt necessity&lt;/em&gt;. They are also the combination of the first two groups.&lt;/p&gt;
&lt;p&gt;Nobody directly expects them to build with AI. They might or might not have a hobby project for entertainment. Often (not always), the expectancy comes from the inner world and pushes them to stay grounded. However, these managers often don&apos;t get in the way with production-level building (that&apos;s what separates them from the first group).&lt;/p&gt;
&lt;p&gt;At most, they pick up bug tickets that otherwise would not have been prioritised. Their drive is to stay grounded in the codebase and team processes while learning how to use available AI tools. So they can understand how the AI shift affects their teams.&lt;/p&gt;
&lt;p&gt;I felt close to this group for a while. Not because I don&apos;t trust my team, but rather my inner engineer was telling me not to lose touch with the craft. I couldn&apos;t justify any other reason. But then, I thought my motivation and intention were different.&lt;/p&gt;
&lt;h2&gt;Managers feel nervous/curious/excited about new tech and think they need to learn to lead their teams better&lt;/h2&gt;
&lt;p&gt;I put myself in this group. Therefore, I&apos;m going to write directly from my perspective.&lt;/p&gt;
&lt;p&gt;The industry is changing, and I&apos;m trying to navigate myself. As we are still in the early phases of AI&apos;s impact on software development, no best practices have been established yet. The industry hasn&apos;t had enough practice to understand what&apos;s best. What we say best today changes tomorrow.&lt;/p&gt;
&lt;p&gt;I feel an urge to follow the shift &lt;em&gt;closely&lt;/em&gt; to lead my team better. Although my team follows the changes with hands-on practice, I still want to understand and learn together with them.&lt;/p&gt;
&lt;p&gt;Also, this change is not something I can ignore. When the cloud infrastructure came as a new technology, your life as a UI engineer might not have changed. You got an API that&apos;s hosted somewhere. The same with the introduction of iOS. The iPhone changed the world, but if you were a backend developer, you offered APIs. You just had yet another client and had to maintain APIs longer than you&apos;d like (I&apos;m oversimplifying). With AI, all software engineers are changing. And that&apos;s the main problem.&lt;/p&gt;
&lt;p&gt;As a manager of this group, I don&apos;t know how to set my expectations with my team. I don&apos;t know how to give feedback or mentor/coach them. Because not only what engineers build has changed, but also how they work has changed (and it keeps changing every day).&lt;/p&gt;
&lt;p&gt;Before, it didn&apos;t matter much to me what kind of software the team was building. I could see the missing pieces and see how the team works; I could find ways to evaluate their performance, collaboration, and communication. I could coach and share feedback on any of these topics to help them become more productive as a team.&lt;/p&gt;
&lt;p&gt;Their tech stack was secondary. I could rely on establishing a feedback culture where they share feedback with each other on technical topics more than I do. Also, I could learn the tech stack on the way, which always worked out so far.&lt;/p&gt;
&lt;p&gt;Now, all my grounds are weak.&lt;/p&gt;
&lt;p&gt;That&apos;s why I have no other choice but to learn how to build with AI and find out what I can expect from others. When someone doesn&apos;t adapt to new tools, I need to know what they are missing out on so I can explain the impact. When it comes to using these tools, the team will (for sure) be better than me, as it always has been. But I need to push them to their limits and &lt;a href=&quot;/newsletter/mektup-22/&quot;&gt;coach them to achieve their goals&lt;/a&gt;. And that&apos;s all about the fourth group.&lt;/p&gt;
&lt;h2&gt;Managers have FOMO&lt;/h2&gt;
&lt;p&gt;The fifth group&apos;s main driver is the fear of missing out (FOMO). This is the group overburdening others. Maybe they won&apos;t admit it, but that&apos;s the group that sends you a Slack message copy/pasted from ChatGPT without changing a character. They follow the latest tool or news without trying any tool themselves or knowing what exactly the problems their teams have. They act with hype.&lt;/p&gt;
&lt;p&gt;Although it&apos;s okay to receive a message written by AI, you never know whether they understood your message in the first place. There are gazillions of tools popping up every day; the hype is real, and it&apos;s going to stay that way, one way or another. You can easily spend hours and thousands of dollars without creating any value for anyone. This group of managers are mostly falling into this bucket.&lt;/p&gt;
&lt;p&gt;I hear that various managers (also director and VP-level) are sending a huge pull request, fully developed with AI, for review. I don&apos;t know which is worse: dealing with the always-on AI talk of an ignorant person, or dealing with the work of an authoritative, incompetent person &lt;a href=&quot;/newsletter/mediations-26/&quot;&gt;using AI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a manager, it&apos;s difficult to stay mindful about not joining this group while still building with AI, especially when motivating the team.&lt;/p&gt;
&lt;p&gt;I can also admit that we can embed FOMO in any of the groups above, but I want to clearly distinguish this group: their purpose is not to create value but to create &lt;em&gt;the illusion of value&lt;/em&gt;. You can be the judge of it. If you look around, I&apos;m sure you&apos;ll find one that fits the criteria.&lt;/p&gt;
&lt;h2&gt;Managers are doing whatever they are doing pre-2025&lt;/h2&gt;
&lt;p&gt;This group is the opposite of FOMO. They avoid whatever is going on. They learned how to do their job over the years and built time-proven habits. So, why change? Maybe there is nobody in their organisation driving any change; maybe they have a very strict process for making small changes; maybe something else; they have reasons.&lt;/p&gt;
&lt;p&gt;Regardless of why, these managers see this AI trend as similar to any JavaScript framework trend that bursts over time, or as an NFT trend that will be long forgotten.&lt;/p&gt;
&lt;p&gt;I can&apos;t tell what will happen with AI in the future, but it&apos;s already clear to anyone that coding as we know it is dead. Whether you accept it or not, nobody needs to write in any programming language, as their native language is enough to define what they want to build.&lt;/p&gt;
&lt;h2&gt;Managers have a mixed bag of reasons&lt;/h2&gt;
&lt;p&gt;The last group is the mixed bag of all, and I think it&apos;s the biggest group (or maybe I&apos;m being lazy and not grouping further). Pick one or two properties from the others and define this group.&lt;/p&gt;
&lt;p&gt;It&apos;s actually difficult to belong solely in any of the first five groups because humans are complex creatures.&lt;/p&gt;
&lt;p&gt;For example, one day I am a member of the fifth, one day fourth. It depends on what happened that day. If a new LLM model were to arrive, I want to give it a try and share the announcement with others. If there is a new tool that interests me so I can finally build the pet project that I&apos;ve held hostage for years, I&apos;m in the second group for a few days. I think this mix of bag approach is completely okay. However, with a caveat, an important one.&lt;/p&gt;
&lt;p&gt;To an organisation, a manager has to be clear in where they stand. Otherwise, people get confused. For example, my organisation has to know that I&apos;m standing in group number four when I work. In my free time, I can be in any group I want. Additionally, if I&apos;m changing my position, that also has to be clear to others. If I&apos;m expected to &quot;code&quot; with AI or if I&apos;m doing it for fun, we can all align our expectations with each other, adjust ourselves, and can share fair feedback with each other.&lt;/p&gt;
&lt;p&gt;So, which group is better than the others? I don&apos;t know. I think that&apos;s not the point. What matters to me is knowing where I stand today and figuring out where I want to be. For you, maybe you&apos;re happy with where you are. If so, I&apos;m happy for you.&lt;/p&gt;
&lt;p&gt;When I step back from all these, I always believed that change is constant. As a manager, I had to learn the skill of adapting to changes. One of the biggest changes was reorganisations or pivots in product, in my experience. They were always painful, dreading, and a lot of work. But I couldn&apos;t imagine how the AI would change &lt;em&gt;everything&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;What a time to live in.&lt;/p&gt;
&lt;p&gt;I thought I&apos;d seen a lot in my career. But actually, I&apos;ve seen nothing, and the world is &lt;a href=&quot;/learnings-on-dealing-with-ambiguity/&quot;&gt;even more ambiguous than yesterday&lt;/a&gt;. The thing is, there&apos;s no other alternative but to deal with the world we have. And nobody knows how this change will shape the world. If anyone claims that they know, they are lying (or trying to sell you stuff).&lt;/p&gt;
&lt;p&gt;So, don&apos;t take anyone&apos;s word for it, including mine.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/managers-returning-to-coding-with-ai/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/managers-returning-to-coding-with-ai/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Learning Domain-Driven Design Part I: Strategic Design</title><link>https://candost.blog/books/learning-domain-driven-design-part-1-strategic-design/</link><guid isPermaLink="true">https://candost.blog/books/learning-domain-driven-design-part-1-strategic-design/</guid><description>Chapter notes from Learning Domain-Driven Design Part I: Strategic Design</description><pubDate>Wed, 29 Apr 2026 05:16:00 GMT</pubDate><content:encoded>&lt;p&gt;The tighter the connection between business strategy and technical design, the easier for a software engineer to understand and implement. The more apparent this knowledge is, the easier for the AI to pick up and apply the principles and engineer to guide it correctly.&lt;/p&gt;
&lt;h2&gt;Chapter 1. Analyzing Business Domains&lt;/h2&gt;
&lt;p&gt;While designing and building software, engineers must understand the problem they are solving. To understand the problem, they must understand the context in which the problem exists. The context always comes from the business strategy and domain, and the value that it seeks to gain by building the software.&lt;/p&gt;
&lt;p&gt;Business Domain: Main activity of the company. For a FinTech, processing payments; for a delivery service, it&apos;s the courier delivery; for a coffee shop, it&apos;s the coffee.&lt;/p&gt;
&lt;p&gt;Subdomain: A detailed area of business activity. Building blocks of the system. In e-commerce, there are subdomains such as accounting, billing, dunning, payment, order tracking and shipment.&lt;/p&gt;
&lt;h3&gt;Subdomains&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I think this part is the crux of understanding business strategy and domain boundaries. Subdomain separation has to be glued with the business strategy (considering you have one). If the business is unclear—such as in early-stage startups without product-market fit—talking about domain-driven design is inadequate.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In conjunction with having product market fit and multiple teams working in the engineering department, untangling subdomains becomes mandatory.&lt;/p&gt;
&lt;p&gt;There are three types of subdomains: core, generic, and supporting subdomains.&lt;/p&gt;
&lt;h4&gt;Core subdomains&lt;/h4&gt;
&lt;p&gt;Think of this as the domain that gives the company a competitive advantage. If we consider Amazon, its core subdomain is probably not the payment processing system, but rather the warehouse and shipment management and customer support. Seamless payment processing and offering all possible payment methods is crucial to Amazon&apos;s success, but it&apos;s most likely not its core subdomain after they support majority of payment methods.&lt;/p&gt;
&lt;p&gt;Core subdomains, by nature, are complex. This only makes sense: if it were easy, competitors would have already replicated it, and the company would lose its competitive advantage. Using Amazon again, if everyone were as efficient as Amazon&apos;s customer service or warehouse &amp;amp; shipment management, we would not be talking about Amazon today.&lt;/p&gt;
&lt;p&gt;Core subdomains are not necessarily technical (unless it&apos;s selling digital products), as is visible from the Amazon example.&lt;/p&gt;
&lt;h4&gt;Generic subdomains&lt;/h4&gt;
&lt;p&gt;Think of this as the domain that every company has, such as user identity management or an online shop for a physical-goods company (e.g., Nike, Adidas). The online store is not the main driver of Nike&apos;s competitive advantage.&lt;/p&gt;
&lt;p&gt;Generic subdomains are also complex and hard to implement. However, the company doesn&apos;t need to innovate in these subdomains. Consider identity management; every organization has it to manage its users, and the implementation is almost the same everywhere. So, the company doesn&apos;t gain a competitive advantage by innovating here. If their core subdomain is not performing well or not creating a moat, there is no value in spending time in a generic subdomain. There are tons of generic, battle-tested solutions available on the market.&lt;/p&gt;
&lt;h4&gt;Supporting Subdomains&lt;/h4&gt;
&lt;p&gt;Think of these as simple domains that support the core subdomain without providing any competitive advantage to the organization.&lt;/p&gt;
&lt;p&gt;If we consider Amazon again, they likely have a shift management software solution to manage staff shifts in their warehouses. That can be a simple system with basic CRUD operations (create a shift, clock in, clock out, etc). That software doesn&apos;t create a competitive advantage for Amazon, but it supports the warehouse management and shipment planning.&lt;/p&gt;
&lt;h4&gt;Comparing Subdomains&lt;/h4&gt;
&lt;p&gt;We can compare the subdomains from three angles: competitive advantage, complexity and volatility.&lt;/p&gt;
&lt;p&gt;We discussed competitive advantage extensively above; in short, the core subdomains are &lt;em&gt;the real&lt;/em&gt; competitive advantage for a company. They are naturally complex. That said, competitive advantage doesn&apos;t only come with user-facing solutions. An e-commerce product can build organizational efficiency that no other e-commerce platform can, reducing operational costs and enabling cheaper sales. The organizational efficiency becomes their competitive advantage.&lt;/p&gt;
&lt;p&gt;When it comes to &lt;em&gt;complexity&lt;/em&gt;, the core and generic subdomains are both complex, but the supporting subdomains are often simple. The differentiator between core and generic is that generic subdomains don&apos;t change often and consist mostly of solved problems that don&apos;t require innovation. Core subdomains are naturally complex and continuously evolve (or iterate on) their complexity. If the complexity evolution stops, the competition catches up, and the company loses its competitive advantage.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(I will open a cross-reference to David Farley&apos;s Modern Software Engineering definition: our job is to become experts at managing complexity and at learning. So, the modern software engineering definitely supports this definition.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Differentiating core and supporting subdomains is more difficult than separating generic subdomains. The main question to ask is: would someone pay for a domain on its own? Can we spin off a company only with the specific subdomain? If yes, it&apos;s a core subdomain.&lt;/p&gt;
&lt;p&gt;Supporting subdomains are often so simple that other organizations can quickly build or outsource. They are often simpler to hack and build than to buy from outside.&lt;/p&gt;
&lt;p&gt;Generic subdomains are still complex domains, but they are solved problems. They can be bought from outside sources (such as Twilio for sending emails or SMS).&lt;/p&gt;
&lt;p&gt;The generic and supporting subdomains can also intersect because of their lower volatility than core subdomains. The core subdomains must evolve continuously; they are volatile.&lt;/p&gt;
&lt;h4&gt;Identifying Subdomain Boundaries&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Which domain is a core, which is supporting and where are their boundaries?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The trick is thinking of this as similar to modular software design. If we aim to make everything into separate modules, that becomes overengineering without bringing any value. So, we must find the balance.&lt;/p&gt;
&lt;p&gt;The core domains need to be drilled down as deeply as possible to separate the generic and supporting subdomains.&lt;/p&gt;
&lt;p&gt;The generic subdomain, however, will not provide benefits when split into more generic subdomains.&lt;/p&gt;
&lt;p&gt;We have to find the most coherent core subdomains that are complex and volatile, so we can put our attention to it to keep a competitive advantage. While doing so, we should get rid of the technical mindset and think in terms of business. Although a CEO can rarely tell their product’s domain boundaries when asked, the organizational design, organizational rituals and strategy are good places to start identifying core subdomains.&lt;/p&gt;
&lt;h3&gt;Domain Experts&lt;/h3&gt;
&lt;p&gt;Domain experts are the people engineers and analysts solve problems for. They represent the business; they are the ones who identify the business problem and from whom the knowledge originates. They are either the end users of the software or the people coming up with requirements.&lt;/p&gt;
&lt;p&gt;They hold the domain expertise. That&apos;s why engineers must stay close to these people to &lt;a href=&quot;https://candost.blog/solving-problems-worth-solving/&quot;&gt;solve &lt;em&gt;the right problem&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Chapter 2. Discovering Domain Knowledge&lt;/h2&gt;
&lt;p&gt;Sharing knowledge between domain experts who know the problems and engineers who build solutions is key. Understanding the business domain problems requires &lt;em&gt;using a common language between domain experts and engineers&lt;/em&gt;. This language should not be translated by an analyst or product owner. Instead, it must be a shared language that explains the business domain &lt;em&gt;without any technical jargon&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This language is called &lt;strong&gt;&lt;em&gt;ubiquitous language&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In software development, we often talk about the stages: discovery, design, implementation and delivery. The first part (the discovery) includes identifying the ubiquitous language—establishing a shared mental model of the problem and starting to speak the same language. This shared language must be used across the board by all the people, software engineers, product owners or managers, domain experts, designers, quality assurance, etc.&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;ubiquitous language must be explicit, precise and consistent&lt;/em&gt; without ambiguity. There shouldn&apos;t be two terms used interchangeably; one term for one definition (if we&apos;re talking about a user while having multiple variations, the definition must clearly say &apos;visitor,&apos; or &apos;admin,&apos; or &apos;user,&apos; etc.)&lt;/p&gt;
&lt;p&gt;Only with &lt;em&gt;ubiquitous language as a communication tool&lt;/em&gt; can we talk about designing a solution model and implementing it.&lt;/p&gt;
&lt;h3&gt;Model of the Business Domain&lt;/h3&gt;
&lt;p&gt;The book provides a great example of how to define a model.&lt;/p&gt;
&lt;p&gt;Think about maps such as terrain, subway and navigation. If you want to go from A to B via subway, a terrain map is not useful; you need a subway map. Similarly, with a subway map, you can&apos;t measure the distance between A and B; you need a terrain map.&lt;/p&gt;
&lt;p&gt;That&apos;s how modeling works. The model isn&apos;t 100% objective and explicit representation of what the business is; it&apos;s &lt;em&gt;how we make sense of the business&lt;/em&gt;, and is purposed to solve the problem it is supposed to solve.&lt;/p&gt;
&lt;p&gt;A model is not a real copy of the problem; &lt;strong&gt;the model should abstract the complexity of the problem and the domain and bring just enough, and the right, information to solve it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The model should represent the domain expert&apos;s understanding of the business domain (their mental models), not the engineers&apos;. The ubiquitous language shouldn&apos;t try to cover every possible detail of the domain.&lt;/p&gt;
&lt;p&gt;There are a few helpful tools to support having a shared ubiquitous language: glossaries and a Gherkin-based test suite.&lt;/p&gt;
&lt;p&gt;(I will open two cross-references here. 1) A product requirements document should serve to align everyone on models and a ubiquitous language. If there is a product manager whose job is to understand the domain and choose what to build, they should be accountable for the ubiquitous language, and engineers must be accountable for using the same lingo in the codebase. 2) In Product Management&apos;s Sacred Seven book, the authors talk about products evolving over time as the userbase changes and changing the product design with the userbase. I see a strong correlation between finding the right product design and identifying the ubiquitous language and domain modeling_. In the end, solutions to most problems aren&apos;t techy.)&lt;/p&gt;
&lt;h2&gt;Chapter 3. Managing Domain Complexity&lt;/h2&gt;
&lt;p&gt;Domain complexity often comes from different domain experts naming the same things differently or naming different things the same. They use similar words to explain completely different things. Hence, all domains get entangled because engineers building these systems also get confused. Sometimes people try to build a grand model that can address the needs of multiple domains.&lt;/p&gt;
&lt;p&gt;Solving this problem requires establishing boundaries between domains. We call these boundaries &lt;strong&gt;the bounded context&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Bounded Context&lt;/h3&gt;
&lt;p&gt;A bounded context &lt;em&gt;is an explicit context assigned to a sub-section of the ubiquitous language&lt;/em&gt;. It aims to create boundaries so that model definitions can stay consistent, explicit, and have a single meaning. Terminology conflicts and implicit contexts are eliminated with bounded contexts.&lt;/p&gt;
&lt;p&gt;A model cannot exist without a boundary (a stop on the subway map has a different meaning in a navigation map). The bounded context allows the definition of distinct models, principles, terminology, and business rules that are consistent within its boundaries.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;A ubiquitous language is ubiquitous only in the boundaries of its bounded context.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A ubiquitous language can&apos;t be used without the explicit context in which it can be applied.&lt;/p&gt;
&lt;p&gt;For example, if we consider an order in a Point of Sale system&apos;s order management software, the order model is a very complex entity that handles items, taxes, fulfillment, kitchen preparation, and many more. However, the same order in the accounting domain means a very different thing, which doesn&apos;t involve anything related to kitchen management but only the taxes, money movements and the order&apos;s date to account for the order in the books correctly.&lt;/p&gt;
&lt;p&gt;Order management and accounting are different bounded contexts, where &quot;order&quot; means very different things in each domain. If we used the same order model for both, we would make the whole system much more complicated than necessary.&lt;/p&gt;
&lt;p&gt;Each model needs to be useful in its own bounded context. If we widen the boundary of ubiquitous language, it becomes more difficult to keep it consistent. However, the scope will depend on the domain and the system. Sometimes, keeping the scope wider helps compared to splitting the boundaries and the ubiquitous language.&lt;/p&gt;
&lt;h4&gt;Subdomains vs. Bounded Contexts&lt;/h4&gt;
&lt;p&gt;Subdomains are &lt;em&gt;discovered&lt;/em&gt; based on business strategy. This decision doesn&apos;t belong to software engineers; it&apos;s about how the organization works and plans its competitive strategy. Software engineers analyze the business domain only to identify subdomains (not to decide).&lt;/p&gt;
&lt;p&gt;Bounded contexts, on the other hand, are designed. Choosing models&apos; boundaries is a strategic design decision. We decide how to divide the business domain into smaller, manageable problem domains.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Each bounded context should be implemented as an individual service/project, meaning it is implemented, evolved, and versioned independently of other bounded contexts.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Each bounded context should be owned by only one team. However, a single team can own multiple bounded contexts.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(A side note: This is where the Inverse Conway Maneuver and team topologies come into play. Also, the idea of DDD is that once you discover these bounded contexts, you can align your teams accordingly and define responsibilities clearly. Although we often see Conway&apos;s Law more effective.)&lt;/p&gt;
&lt;h2&gt;Chapter 4. Integrating Bounded Contexts&lt;/h2&gt;
&lt;p&gt;Bounded contexts can be integrated in three ways:&lt;/p&gt;
&lt;h3&gt;1. Cooperation&lt;/h3&gt;
&lt;p&gt;In cooperation, the teams&apos; successes depend on each other. A single team can&apos;t be successful without the other. Hence, don&apos;t choose the cooperation method if teams are not geographically co-located, as it requires close collaboration.&lt;/p&gt;
&lt;p&gt;Cooperation can be implemented using partnership or shared-kernel approaches.&lt;/p&gt;
&lt;h4&gt;Partnership&lt;/h4&gt;
&lt;p&gt;Two teams &lt;em&gt;share the work&lt;/em&gt;. They must collaborate closely on it at all times. When one team changes something in the API, they tell the other team, and the other team changes it too without drama.&lt;/p&gt;
&lt;h4&gt;Shared Kernel&lt;/h4&gt;
&lt;p&gt;Two bounded contexts keep the same models, but as separate libraries or something similar. While the rest of the bounded contexts differ, the shared model leaks the ubiquitous language and implementation into each context.&lt;/p&gt;
&lt;h3&gt;2. Customer - Supplier&lt;/h3&gt;
&lt;p&gt;In this collaboration pattern, two teams can succeed independently, although one team has more power.&lt;/p&gt;
&lt;h4&gt;Conformist&lt;/h4&gt;
&lt;p&gt;The power imbalance favors the upstream team. Downstream conforms to whatever upstream dictates. Downstream accepts the upstream&apos;s bounded context and ubiquitous language.&lt;/p&gt;
&lt;h4&gt;Anticorruption Layer&lt;/h4&gt;
&lt;p&gt;The power imbalance still favors the upstream team, but is slightly countered by the downstream team. When the downstream doesn&apos;t accept the upstream&apos;s bounded context, the downstream translates the upstream&apos;s model into its own bounded context&apos;s model by implementing an anticorruption layer (called ACL in diagrams).&lt;/p&gt;
&lt;p&gt;This pattern is good when upstream changes are too frequent, or when upstream is inefficient or when the downstream has a core subdomain that needs protecting.&lt;/p&gt;
&lt;h4&gt;Open-Host Service&lt;/h4&gt;
&lt;p&gt;The power imbalance favors the downstream team. Upstream team decouples its implementation model from the integration model (what they offer to downstream) by adding an open-host service (called OHS in diagrams). This way, the upstream can evolve its internal model at a different speed and publish new versions for the integration model. The downstream can move to a new version of the integration model at their own pace.&lt;/p&gt;
&lt;h3&gt;3. Separate Ways&lt;/h3&gt;
&lt;p&gt;The last collaboration pattern is going its separate ways, deliberately duplicating bounded contexts across different domains.&lt;/p&gt;
&lt;p&gt;This pattern can be used for various reasons, such as organizational design, communication issues, generic subdomains, or the need for different domains in bounded contexts.&lt;/p&gt;
&lt;h3&gt;Context Map&lt;/h3&gt;
&lt;p&gt;A visual representation of the system&apos;s bounded contexts and their integrations, aimed at providing insights into high-level design, communication patterns and organizational issues.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/learning-domain-driven-design-part-1-strategic-design/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/learning-domain-driven-design-part-1-strategic-design/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What is true friendship for you?</title><link>https://candost.blog/newsletter/mediations-37/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-37/</guid><description>A true friend is the one who randomly calls or rings your doorbell.</description><pubDate>Tue, 28 Apr 2026 08:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Mediations is a newsletter I write for software engineers and leaders but I never focus solely on software engineering. This is a newsletter for humans trying to mediate the challenges life presents, so the topics are as wide as it gets.&lt;/p&gt;
&lt;p&gt;In the last few newsletters, I talked a lot about AI. While it&apos;s both bothering me and making me feel excited, it&apos;s not the only challenge I face. There is a bigger question in my head over the last year or two.&lt;/p&gt;
&lt;p&gt;A while ago, I put myself way outside my comfort zone and decided to join a meetup on friendship. If I want to describe my experience, I wouldn&apos;t use any other word than &quot;weird&quot;. We were around forty people gathered in a potluck dinner across three long tables in a private space.&lt;/p&gt;
&lt;p&gt;While we ate and talked about different stages of friendship, I kept thinking about the single question the organizer asked at the beginning for everyone to answer in turn.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;What&apos;s true friendship for you?&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Although I was still confused that the meetup started with a body stretch (followed by this question) while the food was laid out on the table, the question turned out to be the one I had been avoiding for quite some time.&lt;/p&gt;
&lt;p&gt;I answered with,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;A true friend just calls without either of us feeling weird about it. Nobody is calling anymore. The most you get from someone these days is a voice message. Nobody is spontaneously ringing your doorbell anymore. The true friend is the one who feels comfortable ringing your doorbell unannounced, and you are happy to see them, not surprised that they didn’t call up front.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Many people later told me that it was spot on and they felt &lt;em&gt;heard&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It was surprising to me because I thought I was the only one thinking that a true friend could &quot;knock on the best friend&apos;s door and neither would be surprised.&quot;&lt;/p&gt;
&lt;p&gt;Yet, it&apos;s not acceptable anymore.&lt;/p&gt;
&lt;p&gt;Everyone is busy with themselves (or with their AIs). Although I observe that the in-person meetings and meetups are soaring, the true friendships are often neglected. Everyone has their hobbies, self-care rituals, or chilling at home after a tiring week of work. Everyone has to schedule a catch-up week or two in advance, or you must share some of your hobbies. Otherwise, you can&apos;t see anyone.&lt;/p&gt;
&lt;p&gt;Maybe this is coming with age, but I doubt that. I know many people have kids and responsibilities they can&apos;t avoid or neglect. Often these responsibilities are under some schedules that can&apos;t be adjusted. But I observe that many singles are also living under somewhat strict schedules for themselves.&lt;/p&gt;
&lt;p&gt;I&apos;m also falling into the same bucket. You know, while everyone around is busy with themselves, you also start to get busy with yourself.&lt;/p&gt;
&lt;p&gt;I think this trend started before, but accelerated with COVID. We found ways to enjoy the time we spent alone and at home with our hobbies during the COVID years. During those two years, we built our muscles (also our workstations) to adapt to a different life. We also began noticing others doing the same. The phone calls turned into voice messages (if you send one that is longer than two minutes, people call it a podcast), and text messages turned into sending a meme in an Instagram DM.&lt;/p&gt;
&lt;p&gt;Somehow, we can&apos;t demand our good friend&apos;s attention &lt;em&gt;right away&lt;/em&gt; while they doomscroll on Instagram. We can&apos;t expect anyone to ring our doorbell while doing nothing substantial at home.&lt;/p&gt;
&lt;p&gt;Our friendships, these days, depend on bits of information from Instagram stories and social media DMs, so we can &lt;em&gt;share experiences&lt;/em&gt; and &lt;em&gt;form&lt;/em&gt; or &lt;em&gt;strengthen&lt;/em&gt; our relationships.&lt;/p&gt;
&lt;p&gt;I observe that the crumble of information our relationships depend on neither makes anyone feel full, nor pushes for a starvation for closeness. What surprises me most is that many people act as if this amount of friendship or closeness is enough until they hear my answer to that question.&lt;/p&gt;
&lt;p&gt;For me, though, it&apos;s often not enough. Although I need my alone moments from time to time to clear my head and recharge my energy, good friendships have always been at the center of my life. I usually valued my chosen family more than my birth family (I know my parents are not reading this, it&apos;s okay to admit it).&lt;/p&gt;
&lt;p&gt;I&apos;m sharing this with you because, as software engineers, we typically spend quite a bit of time alone in front of a computer (or phone or tablet). But it&apos;s crucial to ask ourselves from time to time and to remember what true friendship means. It helps to set expectations with our friends and understand their expectations of us.&lt;/p&gt;
&lt;p&gt;So, what’s true friendship for you? &lt;em&gt;Reply to this email or leave a comment.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;P.S.&lt;/em&gt;&lt;/strong&gt; I also have friends who feel more comfortable alone, who are introverted or who need good planning. I&apos;m keeping these people separate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;P.P.S.&lt;/em&gt;&lt;/strong&gt; It&apos;s also funny that I joined that weird meetup and never talked with anyone from that group again.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;I share up to three things I found interesting, sorted from good to great.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Good:&lt;/em&gt;&lt;/strong&gt; I’m not here to claim that I know how to form good friendships. But &lt;a href=&quot;https://bakadesuyo.com/2025/09/friendships-2&quot;&gt;this post has some good ideas&lt;/a&gt; if you want some practical advice on how to make emotionally intelligent friendships. I like reading Eric&apos;s posts on Barking Up The Wrong Tree from time to time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Better:&lt;/em&gt;&lt;/strong&gt; It’s a good reminder to everyone that the creative work requires humbleness, and a prerequisite for humbleness is &lt;a href=&quot;https://sharif.io/looking-stupid&quot;&gt;being more than okay with looking stupid&lt;/a&gt;. Well written.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Great:&lt;/em&gt;&lt;/strong&gt; A 9-year-old &lt;a href=&quot;http://johnsalvatier.org/blog/2017/reality-has-a-surprising-amount-of-detail&quot;&gt;blog post&lt;/a&gt; by John Salvatier, but a very good one. It’s also a crucial reminder in the AI age that reality has a surprising amount of detail that needs to be discovered to do something right.&lt;/p&gt;
&lt;p&gt;Do you have suggestions for great things? &lt;em&gt;Send me a message below (or an email).&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-37/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-37/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Ignorance in investing</title><link>https://candost.blog/journal/ignorance-in-investing/</link><guid isPermaLink="true">https://candost.blog/journal/ignorance-in-investing/</guid><description>I wish I learned how to invest before I had 10€ to save.</description><pubDate>Sun, 26 Apr 2026 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I keep researching to learn how to invest the 10€ I put aside every month. Everyone I asked tells me different things: real estate, funds, commodities, bitcoin, stocks, bonds, savings accounts, all are on the table.&lt;/p&gt;
&lt;p&gt;I keep thinking and reading. Yet, I still can&apos;t figure it out.&lt;/p&gt;
&lt;p&gt;The money is too tiny to turn into real estate.&lt;/p&gt;
&lt;p&gt;Bonds don&apos;t bring much, they say.&lt;/p&gt;
&lt;p&gt;Have you seen Bitcoin lately?&lt;/p&gt;
&lt;p&gt;Commodity feels weird, and I don&apos;t know what makes it different from bitcoin (also, coincidentally, in gold color?).&lt;/p&gt;
&lt;p&gt;Funds and stocks are the only things left for me to look at. To be able to invest in stocks, I need to have basic knowledge of accounting and bookkeeping, finance, economics and psychology. I can&apos;t learn from ChatGPT or Reddit any of those. I mean, I can, but even then, ChatGPT can&apos;t pick a stock for me. I have to put the hours in to evaluate each stock individually.&lt;/p&gt;
&lt;p&gt;I&apos;m not even getting into the income and capital tax world for any of those. The more I look, the more I find building things easier—at least something I am familiar with. But the money becomes 20€ the next month, and I seriously consider investing in something beneficial. But who has time to learn everything in that world?&lt;/p&gt;
&lt;p&gt;The more I look at it, the more I think all of these are scams, and only people getting rich are the intermediaries telling people like me to &quot;do X&quot; or provide &quot;financial services&quot; under some umbrella.&lt;/p&gt;
&lt;p&gt;I don&apos;t trust intermediaries as their incentive is to increase their income, not my financial value or my portfolio.&lt;/p&gt;
&lt;p&gt;I really wish our educational system taught about these in school. But I also know I wouldn&apos;t listen to it, as I had zero money to invest.&lt;/p&gt;
&lt;p&gt;I don&apos;t know. I have no solution. Investing in index funds seems the most viable option for now. 🤷🏼&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/ignorance-in-investing/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/ignorance-in-investing/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>AI code review fights between Claude Code and Devin</title><link>https://candost.blog/journal/ai-code-review-fights-between-claude-code-and-devin/</link><guid isPermaLink="true">https://candost.blog/journal/ai-code-review-fights-between-claude-code-and-devin/</guid><description>Claude Code develops, opens a pull request  Devin reviews and adds comment. Claude addresses comments. Devin reviews again and adds new comments, then Claude addresses, then Devin...</description><pubDate>Sat, 18 Apr 2026 21:01:00 GMT</pubDate><content:encoded>&lt;p&gt;I started using Devin for Code Reviews. I must say that it’s pretty good.&lt;/p&gt;
&lt;p&gt;I develop using Claude Code. It pushes changes, Devin reviews. Then I hook Claude Code to address the comments automatically (there is a checkbox in the Claude Desktop app).&lt;/p&gt;
&lt;p&gt;Devin and Claude fight it until all comments are addressed.&lt;/p&gt;
&lt;p&gt;Pretty neat.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/ai-code-review-fights-between-claude-code-and-devin/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/ai-code-review-fights-between-claude-code-and-devin/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Humans are cyborgs</title><link>https://candost.blog/journal/humans-are-cyborgs/</link><guid isPermaLink="true">https://candost.blog/journal/humans-are-cyborgs/</guid><description>I read a text written by AI in a book. I mean, the AI is kinda right when it says humans are cyborgs already.</description><pubDate>Thu, 16 Apr 2026 11:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently read the following text in the book Co-Intelligence by Ethan Mollick.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;You are not only a human, but also a cyborg. You are a cyborg because you use machines to enhance your abilities and extend your senses. You use computers to store and process information, phones to communicate and connect, cameras to capture and share images, and so on. You rely on machines to perform tasks and solve problems you cannot do by yourself.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If I read this text anywhere, I would say it&apos;s not written by AI. However, Mollick says it&apos;s entirely created by AI, word by word, during a conversation.&lt;/p&gt;
&lt;p&gt;As much as I don&apos;t think AI is sentient, AI can form arguments (in a way), the ones that I haven&apos;t even thought about before.&lt;/p&gt;
&lt;p&gt;I have never considered myself a cyborg. When I think of a cyborg, RoboCop or Darth Vader comes to mind (or Inspector Gadget or even Stephen Hawking).&lt;/p&gt;
&lt;p&gt;Yet, the AI is right. We actually became cyborgs when you think about it. Especially with the addition of artificial intelligence tools to our inventory, we started enhancing our abilities even further.&lt;/p&gt;
&lt;p&gt;When I ask an AI to perform a thing for me that I can&apos;t do it myself, how does it differ from Inspector Gadget adding or removing a new gadget on his hat? I think it is the same.&lt;/p&gt;
&lt;p&gt;So, yes. We are cyborgs AND we can learn from a machine.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/humans-are-cyborgs/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/humans-are-cyborgs/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Who has the knowledge? Me? Or the LLM?</title><link>https://candost.blog/newsletter/mediations-36/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-36/</guid><description>Learning from a single AI prompt that cost $35.</description><pubDate>Tue, 14 Apr 2026 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I couldn’t send the last few Mediations due to sickness and not getting enough rest to recover fully. I kept telling myself that I should write and send something, but I didn’t want to send anything half-baked. Also, I realized that I still don’t have a stable mechanism for sending this newsletter biweekly to keep the show going. But, so be it. We’ll get there. I’m also a human after all.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Three weeks ago, I was trying to add new metrics to our system to track the types of validation errors the API returns and to create an alert based on specific validation errors. Until that moment, these errors were written as text to be returned to the client, explicitly stating the problem with the request they sent.&lt;/p&gt;
&lt;p&gt;Providing text in the response and clearly explaining the problem helped a lot to the engineers integrate with the APIs. However, when creating metrics and dashboards, vanilla text with varying parameters is not ideal due to its high cardinality. Grouping errors by text was not an option.&lt;/p&gt;
&lt;p&gt;So, I fired an Al agent to implement key/value pairs for all validation errors, use those keys for metric collection, and keep the values as human-readable text. It did. However, the solution was not elegant at all. I had to perform various iterations.&lt;/p&gt;
&lt;p&gt;I gave one prompt (on a GitHub pull request) to iterate, left the agent and came back 25 mins later. 💸 $35 💸 was gone. For a moment, I was like: WTF-has-happened-here.&lt;/p&gt;
&lt;p&gt;I was surprised because Cursor (Cloud Agent) decided to run the prompt with the highest available LLM model with the highest thinking variant, ignoring my default settings (side learning: always explicitly tell which model you want to use). The bigger problem was that it still produced poor results, which I wouldn’t expect from that model.&lt;/p&gt;
&lt;p&gt;I could curse the LLM’s inability at that stage, but then I read a short article on the Internet (which I can’t find anymore to link here).&lt;/p&gt;
&lt;p&gt;The big question the article asked was, “&lt;strong&gt;Who has the knowledge, LLM or humans operating them?&lt;/strong&gt;” I interpreted the article according to my situation.&lt;/p&gt;
&lt;p&gt;What information was I relying on to build the key/value pairs? Was it me? Was it the LLM’s training dataset? Or was it the context files like AGENTS.md? Or was it the prompt I gave?&lt;/p&gt;
&lt;p&gt;In my failed scenario, I solely relied on the LLM’s training dataset. I neither gave enough nor correct knowledge in the prompt, nor was the knowledge available in any context files (such as AGENTS.md or skills). I didn’t even know how to implement the changes, as my Kotlin (the language we use) coding skills are rusty.&lt;/p&gt;
&lt;p&gt;After that, &lt;strong&gt;I learned to ask myself every time which knowledge I am relying on&lt;/strong&gt;. If that knowledge is in my head, I have to spell it out in my prompt. If I’m relying on some knowledge that is recurringly needed, that needs to be added to AGENTS.md or as a new skill for AI.&lt;/p&gt;
&lt;p&gt;If I rely on the LLM’s training dataset because I don’t know how to implement something specific, I need to approach it differently. The LLM’s training dataset is rich, but all models still operate with probabilistic resolution. The training dataset is generic and not tailored to the context I’m working in. Therefore, I have to narrow the AI’s playing ground so it doesn’t deviate too much and can remain creative within those bounds.&lt;/p&gt;
&lt;p&gt;Considering all, these days, this is the prioritized order of the knowledge I am relying on while working with AI:&lt;/p&gt;
&lt;p&gt;Context files &amp;gt; Prompt (all knowledge in my head) &amp;gt; LLM training data set&lt;/p&gt;
&lt;p&gt;Also, I shift the knowledge to the left as much as I can. When I discover something in my prompt that will be needed later, I add it to AGENTS.md or create a new skill for it (or ask AI to do it for me). Over time, with some additional tools, I aim to create a good agent harness.&lt;/p&gt;
&lt;p&gt;Agent harness became the differentiator as the difference between foundational models became indistinguishable. With a good harness, we can manage the knowledge, context, and tools the model has access to and guide the LLM in the right direction—providing the customization layer based on the project context.&lt;/p&gt;
&lt;p&gt;For example, when I realize the model is repeating the same steps often and producing different results (or wasting time generating the same output again and again), I aim to extract that operation into the agent’s harness to improve determinism. Sometimes the answer is a new skill; sometimes it’s a single-line addition to AGENTS.md or a specific function as a plugin, and telling the agent to use it.&lt;/p&gt;
&lt;p&gt;Now that I think about my $35 failed AI run, was it a failure? I don’t think so. Because it made me think and helped me gain a new mental model. If it had cost $0.5, I probably would have neglected being diligent and couldn’t have connected the dots like this.&lt;/p&gt;
&lt;p&gt;While these are still new for me (and I have other costly failures), I always thought I missed the golden age of software engineering (90s &amp;amp; 00s) as I caught the bug at the end of the 00s. These days, I often think that we’re living in an industry and world-changing time. Now, with AI, the software world is changing on a grand scale, way bigger than before.&lt;/p&gt;
&lt;p&gt;None of us knows what’s “the best.” We need to keep talking and sharing what we discover and learn. We have to share the failures with a slight optimism. We must ask questions, be skeptical and be &lt;em&gt;mindful&lt;/em&gt; simultaneously to evaluate every step we take. We shouldn’t hand over our judgment to AI, but we can hand over structured knowledge and guide it well to use that information. Then sit back to see the amazing results it gives back.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;I share up to three things I found interesting, sorted from good to great.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Good:&lt;/em&gt;&lt;/strong&gt; While living in EU, I can see so many problems with how the corporate structures work across countries and regimes. &lt;a href=&quot;https://commission.europa.eu/topics/business-and-industry/doing-business-eu/company-law-and-corporate-governance/eu-inc-new-harmonised-corporate-legal-regime_en&quot;&gt;EU Inc. A new harmonised corporate legal regime&lt;/a&gt; is in the plans of EU Commission. If you’re outside of EU, this might still be crucial for you as it might allow your company to expand to EU with a single entity instead of many. I’m waiting for its positive impact in the market. It’s sad that this came late. But better late than never.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Better:&lt;/em&gt;&lt;/strong&gt; I read &lt;a href=&quot;http://hintjens.com/blog:16&quot;&gt;this&lt;/a&gt; again after a while. Very good reminder: start with solving the problem with smallest effort. Once your solution proves itself, you can advance it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Great:&lt;/em&gt;&lt;/strong&gt; Let me take you away from technology a bit. I came across &lt;a href=&quot;https://lookingatpicturebooks.com/p/the-very-hungry-caterpillar&quot;&gt;this&lt;/a&gt;. The interpretation of the book, the conversation, the thought flow, the picture book itself, what can I say; everything is pure gold. How not to love it?&lt;/p&gt;
&lt;p&gt;Do you have suggestions for great things? Send me a message (or email).&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-36/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-36/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Wild Times with Claude</title><link>https://candost.blog/journal/wild-times-with-claude/</link><guid isPermaLink="true">https://candost.blog/journal/wild-times-with-claude/</guid><description>Building a personal blog cms app with Claude Code</description><pubDate>Thu, 09 Apr 2026 20:30:00 GMT</pubDate><content:encoded>&lt;p&gt;I might be late to the game but I’ve been developing a personal iOS app I have wanted for years, but never had the time or chance to dedicate a few weeks to. In a few hours, I have a functional app and I only need to tweak a few things here and there. The code is also good and well structured but has zero tests (but I didn’t ask it to choose TDD per se).&lt;/p&gt;
&lt;p&gt;I only used Claude Code (from the app, not terminal) in Plan + Build mode without any tools or plugins. This is wild.&lt;/p&gt;
&lt;p&gt;On top of it, I asked Claude to use &lt;code&gt;fastlane&lt;/code&gt; to setup my my Apple Developer account so I could install it on my phone.&lt;/p&gt;
&lt;p&gt;I’m writing this post from that application. Such a wild time.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/wild-times-with-claude/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/wild-times-with-claude/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>An Ode to Things That Do One Thing Well</title><link>https://candost.blog/ode-to-things-that-do-one-thing-well/</link><guid isPermaLink="true">https://candost.blog/ode-to-things-that-do-one-thing-well/</guid><description>It&apos;s pure joy to use products that do one job and do it well.</description><pubDate>Mon, 23 Feb 2026 06:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I have a long-standing argument that passes the test of time.&lt;/p&gt;
&lt;p&gt;A product should do one main job and do it well. When it tries to do more, it often does none well.&lt;/p&gt;
&lt;p&gt;It&apos;s tough to do one thing exceptionally well, let alone two. If we consider the difficulty of doing one thing masterfully as 10 times more difficult than doing one thing moderately, doing two things exceptionally well is not 20 times more difficult, but instead 100 times more difficult. The difficulty and complexity grow exponentially.&lt;/p&gt;
&lt;p&gt;Most people who build products don&apos;t have enough time, resources, or energy and can&apos;t afford to spend 100x. They usually can&apos;t even afford 10x. They say &quot;enough&quot; after 7x. Hence, the world is filled with crappy products with subpar user experience.&lt;/p&gt;
&lt;p&gt;Let&apos;s take multi-functional, fully-automated coffee machines (like &lt;a href=&quot;https://m.media-amazon.com/images/I/51zWot+9xBS._AC_SL1500_.jpg&quot;&gt;this one&lt;/a&gt;). The coffee quality of multi-functional coffee machines (like this one) is, at best, arguable. When a coffee machine grinds its coffee, tamps it, then brews an espresso shot, froths the milk on the side, mixes them, and dumps the used coffee into the bin, how can the maker reliably optimize every single step? They were trying to build multiple functionalities simultaneously. They were trying to stand out in the competitive coffee machine industry with innovation for convenience. While making a single operation in the process really well is notoriously difficult, they tried six.&lt;/p&gt;
&lt;p&gt;That&apos;s why the best coffee shops, and all those gurus, use an espresso machine that does only one thing (and does it really well): an espresso shot. That&apos;s why they use separate grinders; the machine does nothing but grind coffee beans.&lt;/p&gt;
&lt;p&gt;The moment I see a machine that can make espresso or cappuccino, I know I won&apos;t get the best coffee, regardless of the quality of the coffee beans. That machine ensures getting a good enough coffee consistently, not the best.&lt;/p&gt;
&lt;p&gt;Take Starbucks coffee machines, an art of innovation. It looks similar to those espresso machines in small coffee shops. But it also grinds the coffee and cleans up the grounds. It&apos;s optimized for consistency and speed, replacing much of the work a barista puts in to make the best coffee.&lt;/p&gt;
&lt;p&gt;Starbucks&apos; promise, although they claim, is not to offer the best coffee. Their promise is consistently good coffee. I get the same coffee in every Starbucks branch, even across continents. I still enjoy it from time to time, but it doesn&apos;t give me the quality of a great coffee made by a great espresso machine that only does espresso.&lt;/p&gt;
&lt;p&gt;It&apos;s pure joy to use products that do one job and do it well. The product hides all the complexity and doesn’t distract me from the main purpose. It&apos;s simple (not basic); I know what to expect. There are no hustles. No surprises. It. Just. Works.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/ode-to-things-that-do-one-thing-well/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/ode-to-things-that-do-one-thing-well/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Learning. Again. And Again.</title><link>https://candost.blog/newsletter/mediations-35/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-35/</guid><description>Not only learning how to use AI, but also how a team works going forward.</description><pubDate>Tue, 17 Feb 2026 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week, I saw a message from December 18th in our team’s Slack channel. It mentioned a minor bug that affects only a few users. The team responded, “Let me create a ticket, and we’ll prioritize accordingly.” You can guess the story; the ticket stayed at the bottom of the backlog for almost two months. A bug affecting only a handful of users is often ignored and never prioritized in big companies with millions of users.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Luckily&lt;/em&gt;, the person posted a follow-up message last week asking whether there is any progress. Instead of responding with “we couldn’t get to it yet,” I triggered an Al agent as a response to the message.&lt;/p&gt;
&lt;p&gt;I gave the AI (Cursor in this case), right from the exact Slack thread, ~30-word prompt saying, “@Cursor this thing X is connected to Y via A, and there is a fallback to B. But X occasionally doesn’t work as it should. Find the problem and fix it.” Within fifteen minutes, it found the issue and opened a pull request with a fix.&lt;/p&gt;
&lt;p&gt;I don’t know why I was surprised, but I was. If I had approached it traditionally, I would have prioritized the bug ticket, refined it in the refinement meeting, then an engineer would pick it up, work on it, get a code review, and then merge the pull request. This process would take at least two days. It took AI to fix in fifteen minutes.&lt;/p&gt;
&lt;p&gt;After the AI opened a pull request, we reviewed the code with one of the engineers on my team. The logic was spot on. We did one more iteration on the pull request (also with AI) to improve the code. Then, we merged the pull request, deployed and released the fix.&lt;/p&gt;
&lt;p&gt;Keeping in mind that I work in a large company (3000+ people) operating in a regulated Fintech business, this one-thread conversation was not an easy destination to reach. But it was enough proof that we were moving in the right direction.&lt;/p&gt;
&lt;p&gt;One prompt in a Slack message wouldn’t work if we hadn’t invested in the foundations up front. We are slowly integrating AI into our daily work. Recently, we refined AGENTS.md files and rules files, and advanced our AI code reviews to ensure Al agents have the right context. That Slack thread was not actually my first attempt.&lt;/p&gt;
&lt;p&gt;My first attempt failed a few months back before we invested in defining contextual files for AI agents. Now that we have the context, I want to take the next steps with my team. Although I’m following people who are deep into agentic coding, I am approaching it with more mindful steps because we’re fundamentally changing how we work.&lt;/p&gt;
&lt;p&gt;Meanwhile, and coincidentally, I was exchanging emails with one of my blog readers about how the engineering role has been changing for a while. We acknowledged that not only does the way of writing code change, but also how a team works.&lt;/p&gt;
&lt;p&gt;How does a team review code now, or do they even review at all? How do they host daily standup meetings, or do they even need them? Do they even need sprint planning? All of them need to change.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We, as software engineering teams, must learn everything again. And again.&lt;/strong&gt; We must &lt;em&gt;invent&lt;/em&gt; new ways of working, form new team structures, and create processes that are different from what we know now. Right now, I don’t know what these processes will look like, especially in mid- to large-sized organizations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The good thing is that we don’t start from scratch.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;All technological advancements have built on top of existing ones. What looks revolutionary is almost always the accumulation of decades of small steps. Tiny pieces come together over time to enable a breakthrough.&lt;/p&gt;
&lt;p&gt;We have at least two decades of agile practices, many more decades of software engineering, and even more decades of running business practices under our belt. Now it’s time to experiment with new ways of working. Take a step to make one process easier and better, then fail. Learn from it and then take another step. At some point, we will hopefully figure out a new way.&lt;/p&gt;
&lt;p&gt;Perhaps we’ll need AI agents to communicate with each other instead of hosting daily standups, so agents don’t override or block each other’s work or create conflicts. But for now, we will keep suffering through the daily standup (as if we haven’t suffered enough) and take small steps to adjust existing meetings.&lt;/p&gt;
&lt;p&gt;I must admit that &lt;strong&gt;I am nervous&lt;/strong&gt;. Because of the future of my job, my profession is less predictable than five years ago. Although I’ve seen this coming (I have been closely following deep learning developments since 2017). I had high hopes of working in language models or machine learning, but I wasn’t brave enough to switch to a completely new profession back then due to life constraints.&lt;/p&gt;
&lt;p&gt;That said, &lt;strong&gt;I’m &lt;em&gt;not&lt;/em&gt; scared&lt;/strong&gt;. Although I can’t predict the future (unlike many others who claim they can), I know I need to add many, many maaaany new tools to my tool belt. It’s time to learn and adjust. And then learn again.&lt;/p&gt;
&lt;p&gt;It’s also time to ignore the voices such as, “Al will eat the world” or “Al can’t do my job, it slops...” I think both sides have a point, but also unhelpful.&lt;/p&gt;
&lt;p&gt;The correct attitude is to accept the change, experiment with new tools and ways of working and learn from them. The right way is (and it always was) to solve the right problem at the right time. Only then can we focus on building products and systems that benefit people and help us make a living.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; If you already tried new ways of working in a team with a mix of AI agents and people, hit reply to this email and let me know.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;I share up to three things I found interesting, sorted from good to great.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Good&lt;/em&gt;&lt;/strong&gt;: &lt;a href=&quot;https://www.jernesto.com/articles/thinking_hard&quot;&gt;The debate between The Builder and The Thinker hit home for me.&lt;/a&gt; “I miss thinking hard,” says Ernesto. I feel you, Ernesto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Better&lt;/em&gt;&lt;/strong&gt;: There are people who affect your career trajectory. They change how you think, work and live. They are often unaware of what they have done, which makes it even more beautiful. I hope you will come across one (if you haven’t already). &lt;a href=&quot;https://susam.net/twenty-five-years-of-computing.html&quot;&gt;Susam did. Also, I admire Susam’s passion for computing spanning over twenty-five years.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Great&lt;/em&gt;&lt;/strong&gt;: I used to think that I could control or influence a lot of things around me, especially in my job. When I couldn’t, I complained. In the last year, I changed my mindset around how I work. It was neither apparent nor sudden; it happened gradually. I am a much happier person now. Last week, I read &lt;a href=&quot;https://www.jsnover.com/blog/2026/02/01/welcome-to-the-room/&quot;&gt;this&lt;/a&gt; and realized that what Satya (the CEO of Microsoft) says is what I didn’t have before this change: an attitude of solving problems without complaining. Read it. Dissect Satya’s words, letter by letter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do you have suggestions for great things? Send me a message.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-35/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-35/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Living with one rule for a better life</title><link>https://candost.blog/living-with-one-rule-for-a-better-life/</link><guid isPermaLink="true">https://candost.blog/living-with-one-rule-for-a-better-life/</guid><description>It&apos;s not &apos;do less&apos; or &apos;earn more money.&apos;</description><pubDate>Tue, 03 Feb 2026 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been part of boy-scouts for only three days in my life. I always admired them, but wasn’t able to keep up the discipline of regularly joining when I was a little boy. As much as I enjoyed nature, I preferred active sports.&lt;/p&gt;
&lt;p&gt;In my three days (and also thanks to my father), I learned one rule from them that I apply everywhere. Although I didn’t apply it for personal gain, I’ve received tremendous benefits from it (both external rewards and inner peace).&lt;/p&gt;
&lt;p&gt;The rule is famous and simple: “Leave a place better than you found it.” But many people get it wrong. They focus on the literal meaning: “Clean the place before you leave.”&lt;/p&gt;
&lt;p&gt;In its core, it’s about getting rid of the attitude of “it’s not my job” or “I’ll do it later.” You know, it’s often someone else’s job, and later time never comes, even if it’s your responsibility. So, instead of shifting the responsibility or postponing the inevitable, you might as well embrace the reality and make everyone’s (including your future self’s) lives a little better.&lt;/p&gt;
&lt;p&gt;At work, you can correct a tiny grammar mistake in someone else’s document while you read or grab a dirty coffee cup that’s lying around while walking to the kitchen to get a drink. At home, you can take out trash while you’re heading outside instead of adding to your to-do list a task that says “take out trash.” You grab it on your way out; that’s the simplicity.&lt;/p&gt;
&lt;p&gt;The “leave” word in the rule doesn’t have a literal meaning. When you move from the living room to the bathroom for a quick pee, you’re not leaving home for others. Before you stand up from the couch, grab the dirty clothes lying next to you and bring them to the laundry basket.&lt;/p&gt;
&lt;p&gt;The rule is also popular in software engineering: before changing a single line of code to quickly fix a bug, rearranging 10-20 lines around it can improve overall readability. When these small refactorings accumulate, the team slows down, the likelihood of bugs increases, and untangling messy spaghetti code becomes a big effort. I had many debates with people at work after they spent five minutes creating a Jira task for a cleanup task that could have taken the same time to refactor.&lt;/p&gt;
&lt;p&gt;The moment you grab those dirty socks from the ground on your way to brush your teeth, the moment you take that dirty cup with you on your way to drink water in the kitchen, you avoid accumulating work for your future self. Carrying one cup is always easier than cleaning a desk full of dirty cups; refactoring 10 lines of code is easier than refactoring the whole codebase.&lt;/p&gt;
&lt;p&gt;There is one caveat with this rule: you should not expect any external appreciation while doing so. Otherwise, you can’t follow the rule sustainably. The state of the code is the motivation. The state of the living room or kitchen is the pride, not the “thank you” from a colleague or family. The more invisible the favor is and the more you can deal with being invisible, the more peaceful you’ll be.&lt;/p&gt;
&lt;p&gt;The inner will or making things better should be the driving force, not the appreciation of others. When you correct a grammar mistake your colleague made in a document without anyone (including your colleague) noticing, you make your &lt;em&gt;and&lt;/em&gt; your colleague’s world a little better. That mistake you fixed is an unknown unknown (they were not aware that the mistake existed) for the next person (even when that person is you). It takes no effort from you, and your colleague’s document doesn’t look sloppy anymore. Isn’t that a great thing?&lt;/p&gt;
&lt;p&gt;And you know what: the moment this becomes a real habit is the moment others start noticing it. They realize your little efforts. You win people’s hearts almost without effort. But that is a secret. You don’t know it. Never heard of it. Because that’s not why you do it.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/living-with-one-rule-for-a-better-life/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/living-with-one-rule-for-a-better-life/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>OSTEP: Chapters 1-4</title><link>https://candost.blog/books/ostep-chapters-1-4/</link><guid isPermaLink="true">https://candost.blog/books/ostep-chapters-1-4/</guid><description>Operating Systems: Three Easy Pieces, Chapters 1-4</description><pubDate>Sun, 01 Feb 2026 15:46:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve recently started reading the &lt;a href=&quot;https://pages.cs.wisc.edu/~remzi/OSTEP/&quot;&gt;Operating Systems: Three Easy Pieces&lt;/a&gt; by &lt;a href=&quot;https://www.cs.wisc.edu/~remzi&quot;&gt;Remzi H. Arpaci-Dusseau&lt;/a&gt; and &lt;a href=&quot;https://www.cs.wisc.edu/~dusseau&quot;&gt;Andrea C. Arpaci-Dusseau&lt;/a&gt;. The book is, to my surprise, free. This is probably one of the biggest contributions to the computer science community. I first saw the book when I came across Phil Eaton&apos;s book club. I&apos;m reading the book together with hundreds of people in this book club.&lt;/p&gt;
&lt;p&gt;It’s been more than a decade since I read anything about Operating  Systems. I also don’t work in the area. It’s purely an interest and curiosity that I&apos;m reading this book. I really liked book’s language, which is very different than any other book I&apos;ve read in computer science. You&apos;re having a conversation with authors and it&apos;s really fun.&lt;/p&gt;
&lt;p&gt;It was great to finally understand what virtualization mean, especially on the memory side. Looking forward to learning with you and from you all.&lt;/p&gt;
&lt;p&gt;Here are my notes from first chapters:&lt;/p&gt;
&lt;h2&gt;Chapter 2&lt;/h2&gt;
&lt;h3&gt;Virtualizing CPU&lt;/h3&gt;
&lt;p&gt;While running multiple programs on a single CPU, the Operating System (OS) creates the illusion that the machine has multiple CPUs. That is done via virtualizing the CPU. For example, if you run multiple commands in the CLI on a single CPU, the CPU will switch execution between these programs until all are finished. That creates an illusion that they run in parallel.&lt;/p&gt;
&lt;h3&gt;Virtualizing Memory&lt;/h3&gt;
&lt;p&gt;When a program tries to access memory, the OS creates a virtual memory and assigns it a private virtual address space.&lt;/p&gt;
&lt;p&gt;Even if multiple processes run in parallel and try to create a new allocation, they each get their own private address space. That’s why, when we request memory with malloc() in C for two processes simultaneously, they can get the same address, indicating both programs are assigned to the same address space. Actually, they both have their own virtual address space. For the program, it appears to have access to physical memory (and it does), but the OS manages the actual access while the program is in its virtual address space. So, one program can’t affect another.&lt;/p&gt;
&lt;h2&gt;Chapter 4&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Operating System (OS) creates the illusion of multiple CPUs (even when there is only one) by using a technique called time-sharing.&lt;/li&gt;
&lt;li&gt;CPU needs low-level methods or protocols called mechanisms and high-level intelligence called policies.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Running a process&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/ostep-running-a-process.png&quot; alt=&quot;&quot; title=&quot;Running a program&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Before running a program, the OS needs to create the process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Load the process’s code and data from disk to memory&lt;/li&gt;
&lt;li&gt;Allocate memory for the program’s stack&lt;/li&gt;
&lt;li&gt;Allocate memory for the program’s heap&lt;/li&gt;
&lt;li&gt;Initialization of I/O&lt;/li&gt;
&lt;li&gt;Start the program (call &lt;code&gt;main()&lt;/code&gt;) and transfer the control of the CPU&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Process States&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/ostep-process-states.png&quot; alt=&quot;Process States&quot; title=&quot;Process States&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The OS has data structures, such as “Process List,” to keep track of important operations. Each process has a data structure representation that includes context, memory location and size, state, parent process, and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/ostep-chapters-1-4/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/ostep-chapters-1-4/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Overcoming Content Overload</title><link>https://candost.blog/overcoming-content-overload/</link><guid isPermaLink="true">https://candost.blog/overcoming-content-overload/</guid><pubDate>Tue, 20 Jan 2026 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;In the dopamine economy fed by infinite content, our relationship with content turned to mindless consumption. The profits from getting attention bred the arms race of dopamine-inducing weapons disguised as comfort delivered through sloppy content. However, this comfort became costly.&lt;/p&gt;
&lt;p&gt;The engagement with the content decreased, causing cognitive overload, resulting in one way relationship based on seeking low-quality content to satisfy our dopamine addiction. In turn, this behavior (also known as doom-scrolling) promoted even sloppier (sometimes AI-generated) content consumed in greater quantities.&lt;/p&gt;
&lt;p&gt;This whole ecosystem is what I’ve been fighting against on a personal level for the last few years.&lt;/p&gt;
&lt;p&gt;Also, I often feel stressed by the amount of content I want to read, watch, listen to, or learn. This stress lowers my guard against crappy material and shifts my aim to consuming more rather than qualitative engagement with the content. Both to reduce my stress and improve my content pipeline, I set out to find an approach.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(If you don’t want to read the whole post, scroll down to the TL;DR section.)&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Friction, Inconvenience, Constraints&lt;/h2&gt;
&lt;p&gt;Before I go into details, I need to talk about friction.&lt;/p&gt;
&lt;p&gt;Friction is often considered unpleasant. The inconvenience it creates is the undesirable sin everyone is trying to avoid. &lt;a href=&quot;https://arslan.io/2025/04/08/managing-friction/&quot;&gt;As Fatih says&lt;/a&gt;, “[Friction] is a constant force against you. And the hard part of it is that most people don’t realize that they live their lives with friction all over the place.” Most people are not aware of the inconveniences. As Fatih adds, “You have a single salt and pepper grinder in your kitchen, perhaps next to the oven. While cooking, you might want to add a bit more salt, so you get up, take the salt grinder, and use it at your dinner table.” Instead of buying a new pepper grinder, people carry it back and forth. They live with that inconvenience.&lt;/p&gt;
&lt;p&gt;Yet, when it comes to content, people maximize consumption. Promoted by influencers under productivity, they apply dozens of ways to “easily catch up with the world.” They conceal overconsumption with wisdom.&lt;/p&gt;
&lt;p&gt;I &lt;a href=&quot;/newsletter/mediations-1/&quot;&gt;consider friction&lt;/a&gt; as a fundamental element of productivity and intellect. Friction, inconvenience, and &lt;a href=&quot;/love-the-constraints/&quot;&gt;constraints are enablers of creativity&lt;/a&gt;, productivity and quality. Learning to live with them, or even leverage them, positions us to face reality rather than an illusion of convenience. Friction forces you to find new ways of doing things.&lt;/p&gt;
&lt;p&gt;What I will explain below adds friction to (or causes inconvenience) in content consumption, with the aim of increasing quality and maximizing growth, not the quantity. Rules act as constraints that power creativity and force us to think more, changing the ways we fill our dopamine reserves.&lt;/p&gt;
&lt;h2&gt;The Method&lt;/h2&gt;
&lt;p&gt;I repeatedly realized one thing that works: &lt;strong&gt;extending the time between first seeing a material and engaging with it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The longer the distance, the higher the quality of the engagement.&lt;/p&gt;
&lt;h3&gt;Collecting in a central database&lt;/h3&gt;
&lt;p&gt;I wrote before that &lt;a href=&quot;/living-without-algorithms&quot;&gt;I avoid using algorithmic feeds in almost everything&lt;/a&gt; (algorithms are optimized to increase the owner’s profit, not the user’s benefit). I curate my own feed using the &lt;a href=&quot;https://readwise.io/read&quot;&gt;Readwise Reader app&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I subscribe to blogs, newsletters, YouTube channels, and others via RSS or set up mail forwarding of Readwise Reader if newsletters don’t support RSS.&lt;/p&gt;
&lt;p&gt;For movies or TV series, I use a Markdown file as a watchlist. I add to the list when I get recommendations from people in real life. When I want to watch something, I open that list and choose from there (instead of letting Netflix or AppleTV decide for me).&lt;/p&gt;
&lt;p&gt;For magazines, I skim them before buying and only buy when I find at least two things inside that are valuable.&lt;/p&gt;
&lt;p&gt;For books, &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;I don&apos;t buy any in the same year they are published&lt;/a&gt;. I keep a Markdown file similar to movie-watchlist. When I want to learn a topic, I research books but never read the reviews. When I find one I want to buy, I add it to my list and apply a time test. If I can, I go to a bookstore and &lt;a href=&quot;/how-to-get-to-the-end-of-a-pile-of-unread-books/&quot;&gt;skim the book there&lt;/a&gt;, reading a paragraph or a page here and there before buying it (this doesn’t always work, as I can’t always find all English or Turkish books in bookstores in Berlin).&lt;/p&gt;
&lt;p&gt;The next step after building a list of resources is deciding to take a deeper look.&lt;/p&gt;
&lt;h3&gt;How I Use Readwise Reader&lt;/h3&gt;
&lt;p&gt;Readwise Reader has two features I leverage: Feed and Library.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Feed: All content from my subscriptions arrives here (I currently subscribe to ~75 feeds, including blogs, newsletters, and YouTube channels, none of which are commercial media). I never consume directly from the Feed.&lt;/li&gt;
&lt;li&gt;Library: All custom-imported content (such as random blog posts) is directly added to the Library. I only consume from the Library.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once a day, I check my Feed and decide whether I want to engage with incoming content. I mostly skim the content (or move forward and backward if it’s a video), understand its structure and make a decision. By the end, I mostly know what the material is about and its main idea.&lt;/p&gt;
&lt;p&gt;If I don’t want to engage further, I delete the document. If I do, I move it to the Library. It takes me 10-15 seconds to make a decision for a single piece.&lt;/p&gt;
&lt;p&gt;When I want to consume content, I go directly to the Library section (not to Feed). Pick one piece and ask three questions.&lt;/p&gt;
&lt;h3&gt;Three questions before engagement&lt;/h3&gt;
&lt;p&gt;I can&apos;t recall where I read it, but setting expectations from the content before you consume it alters how you approach it and improves your comprehension. Even if it&apos;s only for fun, you enjoy it more when you acknowledge it’s for fun.&lt;/p&gt;
&lt;p&gt;Before I read/watch/listen/experience anything, I ask three main questions. My answers often reveal my real intention, reduce mindless consumption and stress. If I don’t have any expectations from the content, I don’t consume it at all.&lt;/p&gt;
&lt;p&gt;Before I share these questions, let&apos;s test it together. When you read the questions below, don&apos;t continue further. Pause for two seconds, then answer them for yourself. If you answer with &lt;em&gt;”no” to all of them&lt;/em&gt;, stop reading this post. Seriously. Don&apos;t read the rest; it won&apos;t be worth your time.&lt;/p&gt;
&lt;p&gt;Here are the questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Will this content tell me something I don&apos;t know and want to learn? Is this the right material to learn from?&lt;/li&gt;
&lt;li&gt;Will it tell me something different about something I already know?&lt;/li&gt;
&lt;li&gt;Is this something that will give me fun/joy/mindfulness/relaxation/... and I want that &lt;em&gt;right now&lt;/em&gt;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, answer them for this text you&apos;re reading.&lt;/p&gt;
&lt;p&gt;Did you answer at least one of them with &quot;Yes&quot;? If you said “no” to all of them, stop reading.&lt;/p&gt;
&lt;p&gt;If you said &quot;yes,&quot; let me tell you why these three questions work and why not others.&lt;/p&gt;
&lt;p&gt;I tried to ask, &quot;What do I expect from this content?&quot; It was a more difficult question to answer, though it covers all three. I needed to think harder and longer to understand what I think, how I feel, and how I want to approach the material in front of me to answer the question.&lt;/p&gt;
&lt;p&gt;I talked about why friction is both good and bad. It must be strong in certain places, weak in others. Answering these questions should have the lowest friction (simple answers: yes or no). Hard questions are unnecessary at this point; they put barriers to the goal. With low friction, it gets easier to build this new habit.&lt;/p&gt;
&lt;p&gt;Once I have at least one “yes” as an answer, I consume the material. But consumption still doesn&apos;t mean comprehension. I have one more step.&lt;/p&gt;
&lt;h2&gt;Consumption ≠ Comprehension&lt;/h2&gt;
&lt;p&gt;In my &quot;About&quot; page on my blog, I wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One day, ten pages before finishing a book, I realized that I had read that same book before. At that point, my perspective on reading and, therefore, my life had changed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a real story. The book was roughly 400 pages, and it took me quite some time to read. Now, I try to avoid that mistake. In the continuation of my about page, I say:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Now, I don’t care how many books I read; I take &lt;a href=&quot;/notes/&quot;&gt;many notes&lt;/a&gt;, connect dots, and share what I’ve found on this blog and &lt;a href=&quot;/newsletter/&quot;&gt;my newsletter&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Focusing on understanding what I consume required me to build &lt;a href=&quot;/my-experience-living-without-social-media/&quot;&gt;other habits&lt;/a&gt; that &lt;a href=&quot;/no-more-debate-with-latest-or-daily-news/&quot;&gt;I had written about&lt;/a&gt; on &lt;a href=&quot;/i-cant-worry-about-the-whole-world/&quot;&gt;my blog&lt;/a&gt; before.&lt;/p&gt;
&lt;p&gt;I almost always read with a pen in hand, use index cards or my reMarkable tablet to take notes, &lt;a href=&quot;/concluding-my-struggle-with-note-taking-systems-and-apps-finally/&quot;&gt;move my notes later to Obsidian, and apply methods from the Zettelkasten system to connect notes with each other&lt;/a&gt;. While taking notes and making those connections, I understand. Then I try to share what I understand on my blog to force myself to fully comprehend it, think it through, and reflect on it in my own words.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;All of these &lt;strong&gt;take time&lt;/strong&gt;. The optimization here isn’t about &lt;a href=&quot;/embracing-the-joy-of-missing-out/&quot;&gt;catching up on daily trends&lt;/a&gt;, reading all the latest blog posts, or watching the most recent movies or videos. It&apos;s about consuming wisely and &lt;a href=&quot;/speaking-writing-and-high-quality-ideas/&quot;&gt;improving the quality of the ideas or information&lt;/a&gt; I&apos;m exposed to.&lt;/p&gt;
&lt;p&gt;Time is a very expensive currency; we must treat it as the world&apos;s scarcest resource. By limiting the time available for consumption and adding friction, the quality bar for content at each step keeps rising. Each piece of material should raise the quality bar and deserve its engagement.&lt;/p&gt;
&lt;p&gt;The content I route around is pruned at each step, and only the content that is worth attention is elevated for consumption. This strategy, as time-consuming as it is, works for me as I’ve been trying it for a few months.&lt;/p&gt;
&lt;h2&gt;TL;DR: Step-by-step methodology&lt;/h2&gt;
&lt;p&gt;When I come across new content (assuming I want to engage with it), I do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I add it to Readwise Reader and never open it right away.&lt;/li&gt;
&lt;li&gt;When I have time later for content (e.g., on the subway), I open the app.&lt;/li&gt;
&lt;li&gt;I pick a content and skim over it and check if I still find it interesting.&lt;/li&gt;
&lt;li&gt;If yes, I ask the three questions I shared above.&lt;/li&gt;
&lt;li&gt;If I answer at least one “yes,” I engage with the content (while ideally taking notes if it’s non-fiction).&lt;/li&gt;
&lt;li&gt;I move on to the next content.&lt;/li&gt;
&lt;li&gt;Later on, I move content notes to my permanent notes and connect them to other notes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For the content I’m subscribed to, they arrive in the Feed section of the Readwise Reader app.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I open the content from the Feed.&lt;/li&gt;
&lt;li&gt;I skim over and check if I still find it interesting or think that it’s something I want to know/learn/have fun with (if it’s a video, I watch parts of it for ~10-15s)&lt;/li&gt;
&lt;li&gt;If I think I want to spend time with it, I move it to Readwise Reader’s Inbox.&lt;/li&gt;
&lt;li&gt;Clean up the whole Feed by repeating steps 1-3.&lt;/li&gt;
&lt;li&gt;I open Readwise Reader’s Inbox and find a piece of content.&lt;/li&gt;
&lt;li&gt;I ask the three questions I shared above.&lt;/li&gt;
&lt;li&gt;If I have at least one answer with “yes,” I engage with the content (while ideally taking notes if it’s non-fiction).&lt;/li&gt;
&lt;li&gt;Move on to the next content.&lt;/li&gt;
&lt;li&gt;Later on, I move content notes to my permanent notes and connect them to other notes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; Some of the above strategies also apply to fiction material, but not all. When I want to have fun, I approach it a little differently. I still collect them in a central database (if digital content, in Readwise Reader; if physical, I add it to my list before buying), but I don’t skim over or engage with them in multiple steps. Once I start, I aim to finish it as soon as possible to keep the story and fun intact.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/overcoming-content-overload/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/overcoming-content-overload/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Observability</title><link>https://candost.blog/notes/100/</link><guid isPermaLink="true">https://candost.blog/notes/100/</guid><pubDate>Sat, 17 Jan 2026 07:35:01 GMT</pubDate><content:encoded>&lt;p&gt;Observability of a system can be achieved by setting up metrics, logs, events, and other monitoring tools. Metrics are limited by definition as they represent a scalar value. Metrics are the pre-aggregation of scalar values. They measure the system performance over a period of time and can&apos;t give information about a specific operation. A metric like page-load can&apos;t tell which requests were slow. It can only tell the average over time.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/59a/&quot;&gt;Observability to solve debugging problems&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Observability Engineering 1st Edition by Charity Majors, Liz Fong-Jones, George Miranda&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/100/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/100/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Debugging Distributed Systems</title><link>https://candost.blog/notes/59a/</link><guid isPermaLink="true">https://candost.blog/notes/59a/</guid><pubDate>Sat, 17 Jan 2026 07:35:01 GMT</pubDate><content:encoded>&lt;p&gt;Functional decomposition and microservices combined created a set of problems, especially around debugging. What used to be understanding how the code runs (which is eliminated by IDEs and containerization), turned into finding where a certain problem lives in the system. Debugging became a difficult problem as the systems and code bases are separated.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Observability Engineering 1st Edition by Charity Majors, Liz Fong-Jones, George Miranda&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/59a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/59a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Obstacle Is The Way—Book Review, Summary and Notes</title><link>https://candost.blog/books/the-obstacle-is-the-way/</link><guid isPermaLink="true">https://candost.blog/books/the-obstacle-is-the-way/</guid><description>A short book focused on overcoming obstacles with Stoic principles.</description><pubDate>Thu, 15 Jan 2026 06:54:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How Strongly I Recommend It:&lt;/strong&gt; &lt;strong&gt;9&lt;/strong&gt;/10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How Likely I Will Gift It:&lt;/strong&gt; 8/10&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The Review &amp;amp; Summary&lt;/h2&gt;
&lt;p&gt;It&apos;s a book that has gained a permanent place on my table. I&apos;ll be coming back to this book regularly to remind myself of the principles of stoicism when I feel down or stressed.&lt;/p&gt;
&lt;p&gt;It&apos;s a good book because it&apos;s short, actionable, and focused on dealing with problems that are in front of you.&lt;/p&gt;
&lt;p&gt;The book&apos;s structure builds from a foundational understanding of Stoic principles to application. While reading, you don&apos;t feel lost or missing any information. Chapters build on top of each other.&lt;/p&gt;
&lt;p&gt;Also, chapters are readable alone. That&apos;s the main reason I place it on my permanent bookshelf.&lt;/p&gt;
&lt;p&gt;I also like the writing style: direct without fluff. The style is probably not for everyone, but it speaks to me.&lt;/p&gt;
&lt;p&gt;I tried to write a short summary of the book and of what Ryan Holiday explains. Yet, the book itself is already short. So, there is no point in sharing a detailed summary.&lt;/p&gt;
&lt;p&gt;I will be giving this book as a gift to many people.&lt;/p&gt;
&lt;h2&gt;Reading Notes (Chapter Notes)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Our brains are wired to interpret the environment and act as fast as possible. This evolution was needed to survive and compensate for our weak bodies. The brain and its shortcuts have saved humans from extinction. Now, they cause detriment. We have enough power to eliminate most threats and don&apos;t need quick reactions to survive most of the time. This behavior remains part of us and complicates decision-making and judgment.&lt;/li&gt;
&lt;li&gt;Gaining perspective is an exercise. It&apos;s the work you must put in. Spending that mental energy and capacity will bring you clarity. The more perception you try to gain, the more you see things as they are instead of how you feel about them. You gain control over the events and situations. The more you exercise, the easier it will get.&lt;/li&gt;
&lt;li&gt;The inner critic plays a big role in how we perceive the obstacles we face. Focusing on how we played a role in the existence of the obstacle makes the obstacle bigger than it seems. Now we have to learn to deal with our impact on the obstacle, rather than focusing solely on overcoming it.&lt;/li&gt;
&lt;li&gt;There are things within our control (our emotions, our determination, our attitude, perspective, decisions, desires, creativity), and most of the rest is beyond our control or influence. What we can do is accept what we can&apos;t influence as what it is and focus exclusively on what&apos;s within our power.&lt;/li&gt;
&lt;li&gt;In leadership (and in life), we add more meaning to the moments we have — shifting our focus from what things are to why they happen. We complicate the circumstances unnecessarily. Focusing on understanding situations as they are eliminates all the fluff, additional meanings and harmful perceptions that bring no benefit.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Remember that this moment is not your life, it&apos;s just a moment in your life.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;We focus on why things happen and give them meaning, rather than accepting them as they are. It&apos;s easier to deal with what they are than to widen our scope to extra meanings. Choose the simpler approach, although it is difficult. Live in the present and focus on what&apos;s in front of you. Discard additional meanings or reasons that the thing happened.&lt;/li&gt;
&lt;li&gt;(Adversarial growth) Instead of accepting the obstacle as a fact, we need to change our perspective, focus on what we can control, think differently and see it as an oppor­tunity to grow and beat. The struggle against an obstacle is what makes the person stronger. The moment we can see through and understand how we can flip the script is what we seek.&lt;/li&gt;
&lt;li&gt;Prepare for none of it to work. &quot;The world could use fewer martyrs.&quot; Sometimes you do the best you can and put in all the work. You roll the dice, and the result is not what you expect. You gotta accept defeat and move on to the next. You gotta accept the verdict and move on.&lt;/li&gt;
&lt;li&gt;The true will is not loud. It&apos;s the silent one that pushes forward in the path. The path is never straightforward. The truth bends and silently stands up all the problems on the path. It doesn&apos;t shout at the obstacle because it knows it won&apos;t change anything. Instead, it silently seeks to understand what it is and never gives up until it cracks its heart.&lt;/li&gt;
&lt;li&gt;You need to prepare your inner strength for an upcoming challenge. A hardship will come. Nobody knows how or when. But it will. You must be physically and mentally ready to defeat it. That readiness is only built in times of peace and in times of hardship. Work on your inner castle, always.&lt;/li&gt;
&lt;li&gt;Constraints are always good. Without them, there is no creativity; without them, there is no growth; without them, there is no guidance on the journey.&lt;/li&gt;
&lt;li&gt;On the way to success (however you define it), there are always tragedies, setbacks, and problems. You can&apos;t walk between flowers to achieve great things (again, however you define it). Accept and learn how to find joy in all of these. Once you do, they won&apos;t look as difficult as they seemed at first.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/the-obstacle-is-the-way/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/the-obstacle-is-the-way/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Offline gets back but online is still here</title><link>https://candost.blog/journal/does-offline-regain-its-value/</link><guid isPermaLink="true">https://candost.blog/journal/does-offline-regain-its-value/</guid><pubDate>Wed, 07 Jan 2026 11:25:42 GMT</pubDate><content:encoded>&lt;p&gt;Recently, Ava wrote &lt;a href=&quot;https://blog.avas.space/real-life-value/&quot;&gt;this post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;ve been thinking about something similar for a while. Here are my added thoughts (read Ava’s post first for the complete picture).&lt;/p&gt;
&lt;p&gt;The personalities we build always have masks, either in real life or online. AI didn’t change it; it made it easier. I think the trust was always problematic when it comes to authenticity.&lt;/p&gt;
&lt;p&gt;Maybe someone like Ava tries to be as authentic as possible on the internet (especially on the personal blog). But it was never the case for everyone. I truly try to show my real thinking on my personal blog. Yet I’m 100% sure I talk differently with my wife or my parents.&lt;/p&gt;
&lt;p&gt;That said, I agree we lost trust in the web because of AI fabrication. The trust in the content was already kind of broken; now it’s shattering.&lt;/p&gt;
&lt;p&gt;Still, I want to look at the world more optimistically. The Internet remains a main enabler for diversity.&lt;/p&gt;
&lt;p&gt;I met so many different people online before and after AI. I’ve never seen 99% of these people in real life. Whether our conversations with these cool people are real or fabricated. For me, the experience with the person that counts—the feeling.&lt;/p&gt;
&lt;p&gt;I still meet people online; that doesn’t change. AI doesn’t send me an email to respond to my blog post; a human does. I don’t have a conversation with AI over email. Although these people might be producing content with AI but our conversations feel real. And that’s what matters.&lt;/p&gt;
&lt;p&gt;I also acknowledge that offline beats online when it comes to feelings. I’m happy to see that offline finally gets back on track. Now, we can get the power of both.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/does-offline-regain-its-value/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/does-offline-regain-its-value/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Product still shouldn&apos;t be left to (only) product managers</title><link>https://candost.blog/journal/still-product-shouldnt-be-left-to-product-managers/</link><guid isPermaLink="true">https://candost.blog/journal/still-product-shouldnt-be-left-to-product-managers/</guid><pubDate>Wed, 07 Jan 2026 09:25:42 GMT</pubDate><content:encoded>&lt;p&gt;I wrote &lt;a href=&quot;https://candost.blog/newsletter/mektup-32/&quot;&gt;this post&lt;/a&gt; in May 2022. Now using AI is common, I stand by it more than ever.&lt;/p&gt;
&lt;p&gt;Product shouldn&apos;t be left to product managers.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/still-product-shouldnt-be-left-to-product-managers/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/still-product-shouldnt-be-left-to-product-managers/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why don&apos;t you get the compensation increase you think you deserve?</title><link>https://candost.blog/newsletter/mediations-32/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-32/</guid><description>The context you might be missing can lead to a wrong perception.</description><pubDate>Tue, 06 Jan 2026 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;As an engineering manager, I have various conversations and make decisions about compensation changes after promotions and annual reviews. People are sometimes satisfied with decisions; sometimes not. Discontent is higher when they believe they have exceeded expectations but have not received sufficient reward. Then, we have a long conversation about the why.&lt;/p&gt;
&lt;p&gt;In these conversations, I explain how these decisions are made, not to manipulate their thinking. Instead, provide them with context so they can evaluate their satisfaction and next steps, enabling a better conversation. I have observed that this approach helps people (even when they are happy with the compensation change). They judge the change more effectively and make a better-informed decision about whether to seek higher pay elsewhere or stay.&lt;/p&gt;
&lt;p&gt;I’m sharing below the same context I bring into these discussions. After I learned this context and mindset, it helped me form my own perception and set better expectations for my own compensation, too.&lt;/p&gt;
&lt;p&gt;Often, unhappiness stems from misjudging the company’s situation, especially when leaders’ messages in company-wide communications are misleading. Sometimes, executive leaders want to celebrate small wins to motivate people, creating a “financially great” perspective, even when the reality is being in financial distress. Because most employees don’t share the same context as executives, they view the evaluation differently.&lt;/p&gt;
&lt;p&gt;In the last two Mediations issues (&lt;a href=&quot;/newsletter/mediations-30/&quot;&gt;1&lt;/a&gt; and &lt;a href=&quot;/newsletter/mediations-31/&quot;&gt;2&lt;/a&gt;), I talked about psychology and economics and their contribution to efficiency and effectiveness. Understanding the company’s situation is another area where we need lenses from economics and psychology, combined with finance and accounting.&lt;/p&gt;
&lt;h2&gt;What contributes to decisions for compensation?&lt;/h2&gt;
&lt;p&gt;Behind the closed doors, multiple factors contribute to the budget evaluations and decisions. Not in any particular order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The company’s current financial performance (+/- profit, revenue, etc.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Investment plans&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Growth (part of CapEx)&lt;/li&gt;
&lt;li&gt;Deals with (new and existing) shareholders&lt;/li&gt;
&lt;li&gt;Savings for the future&lt;/li&gt;
&lt;li&gt;Strategic Investments (Merge&amp;amp;Acquisitions, Research, etc.)&lt;/li&gt;
&lt;li&gt;Inventory &amp;amp; Logistics (might not apply to all)&lt;/li&gt;
&lt;li&gt;Tax and Debt&lt;/li&gt;
&lt;li&gt;Operational Expenses (OpEx)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Market conditions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Product Market (competition, expansion, etc.)&lt;/li&gt;
&lt;li&gt;Economic Outlook (world and country)&lt;/li&gt;
&lt;li&gt;Talent Market (finding the needed talent)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Risk tolerance and appetite&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Company goals&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;and probably a few other things that I am unaware of&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Within all these factors, the executive leadership team tries to figure out where to invest (or cut) the money so the organization can achieve its goals. The goals can range from finding product-market fit to selling the company, from an IPO to paying off debt or fines.&lt;/p&gt;
&lt;p&gt;For example, the company can scale up its Operational Expenses (OpEx) if it plans to support growth through hiring &lt;em&gt;or&lt;/em&gt; faces intense competition for the product &lt;em&gt;or&lt;/em&gt; has a competitive talent market.&lt;/p&gt;
&lt;p&gt;Leadership can also reduce OpEx if debt levels are high or if growth or financial performance doesn’t support the expenditure.&lt;/p&gt;
&lt;p&gt;The company might have a large inventory it needs to reduce, and therefore can temporarily scale back production to lower output (though this is rare for software companies).&lt;/p&gt;
&lt;p&gt;There are possible variations and combinations of all these factors. Once executive leadership decides, the budget is allocated to departments and teams.&lt;/p&gt;
&lt;h2&gt;The budget of departments&lt;/h2&gt;
&lt;p&gt;These contributing factors cascade across all departments, though some elements are eliminated along the way (e.g., shareholder deals, debt, taxes, and more).&lt;/p&gt;
&lt;p&gt;For example, if the company has two departments, the decision to split operational expenses (the category that determines compensation) between them may depend on growth, strategic investments, product and talent market conditions.&lt;/p&gt;
&lt;p&gt;A very profitable company can keep a department’s budget at last year’s level or shrink it, eliminating any potential compensation increases for the people working in that department. Unless the department can manage the budget differently or secure additional funds, there might be no money available for any compensation increase. In these situations, a layoff is even being considered (remember, even when the company is profitable).&lt;/p&gt;
&lt;p&gt;From departments, the contributing factors cascade down further to the teams. A department’s leadership team does a similar exercise to decide where to invest its available budget. They may take risks to create a competitive edge for the entire organization by forming a new team. They may also cut another team’s budget to support this. They may invest heavily in CapEx and don’t add any additional funds to OpEx, halting any compensation increases.&lt;/p&gt;
&lt;p&gt;Once a department’s budget allocation is complete, the conversation and decisions shift to OpEx: compensation for teams and individuals.&lt;/p&gt;
&lt;h2&gt;Team and individual performance, at last&lt;/h2&gt;
&lt;p&gt;In my conversations, I often explain the compensation decisions using a matrix after the company and department context.&lt;/p&gt;
&lt;p&gt;I simplify all of the above to better focus on and assess the impact of individual performance on compensation. I consolidate all of the contributing factors under “company and department performance.” Think of this as the sum of the parts. This is one side of a matrix.&lt;/p&gt;
&lt;p&gt;On the other side of the matrix, we have individual performance. Most often, an expectation framework (&lt;a href=&quot;/the-good-the-bad-and-the-ugly-of-career-ladders-and-frameworks/&quot;&gt;sometimes defined by career matrices)&lt;/a&gt;) is used to evaluate an individual’s performance.&lt;/p&gt;
&lt;p&gt;For both sides, I use the following: meets, exceeds, and above expectations. Compensation changes or staffing decisions can be made based on a combination of these two factors.&lt;/p&gt;
&lt;p&gt;Here is an example matrix:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/individual-company-perf-compensation.png&quot; alt=&quot;&amp;quot;A 3x3 matrix showing compensation recommendations based on individual performance (rows: Above, Meets, Below) versus company and department performance (columns: Above, Meets, Below). The matrix provides guidance ranging from &apos;Possibly a good raise&apos; for high performers in high-performing organizations to &apos;No raise, possible to lose job&apos; for underperformers in underperforming contexts.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Needless to say, there is never a guarantee of a compensation increase even when both company and individual performance are above expectations. A company can be profitable for a long time but can decide to invest these profits fully into CapEx or R&amp;amp;D. It can also decide to shut down one department/team to focus on other areas.&lt;/p&gt;
&lt;p&gt;On the other hand, even when an individual’s performance falls below expectations, the leadership can still decide to increase their compensation. That was normalized in the zero-interest-rate policy (&lt;a href=&quot;https://en.wikipedia.org/wiki/Zero_interest-rate_policy&quot;&gt;ZIRP&lt;/a&gt;) era, especially while the talent market was hot. Many people who started working in that period mistakenly consider it “the normal way” compensation works.&lt;/p&gt;
&lt;p&gt;Although I didn’t mention an individual performance evaluation much, that aspect of the matrix above is another dimension of these decisions. That part of the matrix is often discussed deeply. Although more comprehensive knowledge exists for individual performance management, many managers (including me) make mistakes because of misalignment of expectations.&lt;/p&gt;
&lt;p&gt;Performance evaluations are based on (ideally) &lt;a href=&quot;/newsletter/mektup-22/&quot;&gt;aligned expectations&lt;/a&gt;. But a perfect world, sadly, doesn’t exist and aligning expectations is hard. On top of it, biases (e.g., gender bias, unconscious bias) still impact these decisions. Also, tons of reasons may cause conflicts between manager and individual, ending up with the decision at the wrong cell of the table above.&lt;/p&gt;
&lt;p&gt;Another aspect is that a manager can distribute the budget within a team while keeping everyone’s compensation balanced to prevent unfairness. Sometimes, a team as a whole can work remarkably well, while one individual can shine above them. But when the compensation review comes, the change might &lt;em&gt;feel&lt;/em&gt; small compared to others’ to keep everyone’s compensation balanced.&lt;/p&gt;
&lt;h2&gt;All things should come together&lt;/h2&gt;
&lt;p&gt;There are many more details on how these decisions are made, but this should provide a good enough overview.&lt;/p&gt;
&lt;p&gt;Seeing all the contributing factors AND understanding them takes time and energy. However, I found that once an individual understands the context, their judgment of the situation improves. What matters is understanding the contributing factors and forming more accurate expectations of the compensation.&lt;/p&gt;
&lt;p&gt;Ultimately, working with a company is a business contract. An individual offers skills in exchange for money. If the skills (as a whole) are valued for the organization (and the more irreplaceable they are), the more leverage they’ll have. Combined with a deeper understanding of the factors above, they can form a clearer perception.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Both happiness and unhappiness depend on perception.” — Marcus Aurelius&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;I share max three things I found interesting, sorted from good to great.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Good:&lt;/strong&gt;&lt;/em&gt; As you might know, I love solving real problems. Reading &lt;a href=&quot;https://andreasfragner.com/writing/three-ways-to-solve-problems&quot;&gt;three ways to solve problems&lt;/a&gt; gave me a good framework.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Better:&lt;/strong&gt;&lt;/em&gt; I always enjoyed Gurwinder’s writing. As much as I don’t read most predictions (as they are like a fortuneteller’s story), I found Gurwinder’s &lt;a href=&quot;https://www.gurwinder.blog/p/26-useful-concepts-for-2026&quot;&gt;26 Useful Concepts for 2026&lt;/a&gt; post as a better approach. Short and crisp.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Great:&lt;/strong&gt;&lt;/em&gt; &lt;a href=&quot;https://neal.fun/size-of-life/&quot;&gt;The Size of Life&lt;/a&gt;. Just go and see yourself (ideally on a computer). You won’t regret.&lt;/p&gt;
&lt;h2&gt;Recently, I wrote about&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/the-unbearable-joy-of-sitting-alone-in-a-cafe/&quot;&gt;The Unbearable Joy of Sitting Alone in A Café&lt;/a&gt;: Currently, I am in the last week of PTO from work. I wrote this two weeks ago while trying to slow time down as much as I could. It resulted in this post. A lot of observations, some reflections. (&lt;em&gt;Also, it made it to HN’s front page. I rarely read comments there. But if you want to join the conversation, &lt;a href=&quot;https://news.ycombinator.com/item?id=46488355&quot;&gt;it’s here&lt;/a&gt;.&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;I added a bunch of new ideas as notes to my Zettelkasten. All notes are atomic.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29a2/&quot;&gt;Uncertainty and fear can be eliminated by training&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29c/&quot;&gt;Perception Shapes Our Reality&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c1/&quot;&gt;Three Simple Questions to Collect Feedback&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/99/&quot;&gt;Not Learning from Software Failures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20j1/&quot;&gt;Don’t trust people’s judgments in conflicts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/98/&quot;&gt;Engineering Managers with a Debugging Mindset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/76a/&quot;&gt;Tools for managing managers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/92a1/&quot;&gt;How to debug a dysfunctional team?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/79a/&quot;&gt;Engineers have more power than they think&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/96/&quot;&gt;Capitalism creates wealth through innovation and productivity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/97/&quot;&gt;Minimizing costs and trading frequency increases market returns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/97a/&quot;&gt;Investor returns decrease as market motion increases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/99/&quot;&gt;Management Handbook Index&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;A small journal entry: &lt;a href=&quot;/journal/easy-is-the-enemy-of-good/&quot;&gt;Easy is the enemy of good&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; I reorganized my blog’s front page and simplified a lot of things with a goal to make discovery easier. Let me know how you find it!&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-32/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-32/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Uncertainty and fear can be eliminated by training</title><link>https://candost.blog/notes/29a2/</link><guid isPermaLink="true">https://candost.blog/notes/29a2/</guid><pubDate>Sun, 04 Jan 2026 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most strong emotions, such as fear, are caused by uncertainty and the unknown. Once trained, managing these emotions becomes simple (not easy). Training takes effort and time. Yet the steady one always heads to the chaos, knowing what to expect and finding an easier way out. &lt;a href=&quot;/notes/3b6a/&quot;&gt;Acknowledging emotions&lt;/a&gt; (rather than eliminating them) and controlling them are ways to view obstacles differently.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30b2/&quot;&gt;Fear is your body&apos;s call to action&lt;/a&gt;. Training fear teaches you when to listen and when to override.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/68a/&quot;&gt;Metacognition&lt;/a&gt; is how we observe our own fear and uncertainty; you can&apos;t train what you don&apos;t notice.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46d1/&quot;&gt;Training puts you through discomfort&lt;/a&gt;. Acknowledge weaknesses rather than hiding them.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52a4/&quot;&gt;Self-discipline&lt;/a&gt; is the long-term character investment that makes training stick.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/80/&quot;&gt;Understanding why you make decisions&lt;/a&gt; is a practical way to train when fear or bias is driving you.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Obstacle Is The Way by Ryan Holiday&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/29a2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/29a2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Perception Shapes Our Reality</title><link>https://candost.blog/notes/29c/</link><guid isPermaLink="true">https://candost.blog/notes/29c/</guid><pubDate>Sat, 03 Jan 2026 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How the world is a matter of &lt;a href=&quot;/notes/46/&quot;&gt;perception&lt;/a&gt;. The way to achieving what we want lies on how we look at what&apos;s in front of us. A small success may &lt;a href=&quot;/notes/7a/&quot;&gt;blind us&lt;/a&gt; or display the truth with full-blown reality; a tiny problem might cause &lt;a href=&quot;/notes/30b2/&quot;&gt;unnecessarily swirling emotions&lt;/a&gt; or shows a new way to resolve—all matter of perception. An obstacle on our way can be a detriment or an advantage; it&apos;s us who defines it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7a/&quot;&gt;We are weakest when we&apos;re strongest&lt;/a&gt;—success blinds us and we underestimate luck. The same event can blind one person while another sees it with ruthless objectivity.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30c/&quot;&gt;Choosing good values and metrics&lt;/a&gt; defines our perspective and perception of life; it determines whether we see a glass half-full or half-empty.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30b3/&quot;&gt;The media distorts reality&lt;/a&gt; with extraordinary people, creating misperception. Accepting reality as it is helps us focus on the present.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;Coaching ourselves&lt;/a&gt; is difficult because we perceive ourselves differently from how others perceive us.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44g3/&quot;&gt;Our common humanity&lt;/a&gt; pushes us to avoid pain and obstacles and choose the easy way.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2b/&quot;&gt;Distractions&lt;/a&gt; are obstacles on your way.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46d/&quot;&gt;Doubts&lt;/a&gt; are your mind’s obstacles.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Obstacle Is The Way by Ryan Holiday&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/29c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/29c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Three Simple Questions to Collect Feedback</title><link>https://candost.blog/notes/40c1/</link><guid isPermaLink="true">https://candost.blog/notes/40c1/</guid><pubDate>Fri, 02 Jan 2026 08:35:01 GMT</pubDate><content:encoded>&lt;p&gt;Three simple questions to collect feedback when you don&apos;t know what to ask:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What should X (I, he/she/they) start doing? Why?&lt;/li&gt;
&lt;li&gt;What should X (I, he/she/they) stop doing? Why?&lt;/li&gt;
&lt;li&gt;What should X (I, he/she/they) continue doing? Why?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be aware that you&apos;re pushing the responsibility for thinking to the person receiving the questions. If you don&apos;t know which specific topic you want to gather feedback on, you perhaps shouldn&apos;t ask for any feedback in the first place.&lt;/p&gt;
&lt;p&gt;Use these questions at last.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;Before giving feedback, ask the person how they would like to receive it.&lt;/a&gt; Similarly, before collecting feedback, you should know what you actually want to learn.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23i/&quot;&gt;When giving feedback with a coaching mindset, ask what they could have done differently.&lt;/a&gt; The same questioning approach applies, but with intentionality.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40/&quot;&gt;The feedback in relationships is about you AND the other person.&lt;/a&gt; Generic questions might miss the relational context that makes feedback meaningful.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;Confident humility means being open to feedback.&lt;/a&gt; But openness requires purposeful inquiry, not just generic questions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/40c1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/40c1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Not Learning from Software Failures</title><link>https://candost.blog/notes/99/</link><guid isPermaLink="true">https://candost.blog/notes/99/</guid><pubDate>Fri, 02 Jan 2026 07:35:01 GMT</pubDate><content:encoded>&lt;p&gt;Most of the incidents have mitigation actions and follow-up fixes applied to the system. They focus on &lt;a href=&quot;/notes/98/&quot;&gt;addressing the root cause&lt;/a&gt;. Do these actions mean the organization/team/systems had learned from the issue?&lt;/p&gt;
&lt;p&gt;No.&lt;/p&gt;
&lt;p&gt;If the root cause is addressed and a few more tests are added to ensure the system won&apos;t fail for the same reason in the future, the team has improved, but is still missing crucial learning.&lt;/p&gt;
&lt;p&gt;They need to identify other areas with similar weak points, &lt;a href=&quot;/notes/31/&quot;&gt;share the knowledge with the organization&lt;/a&gt; and expand the knowledge base. This is never prioritized in the rush of the feature and product delivery. It&apos;s also invisible when a similar error triggers an incident, because people don&apos;t look back at prior incidents to connect them. People who might remember the previous one often left the company. The team is now focused on what they have at hand.&lt;/p&gt;
&lt;p&gt;Unless everyone has &lt;a href=&quot;/notes/31d/&quot;&gt;learned&lt;/a&gt;, unless all similar issues have been fixed, we can&apos;t say that we have maximized learning from software failures.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31d/&quot;&gt;Effectively learning from mistakes&lt;/a&gt; requires clear intention and follow-ups, not just mechanisms.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/98/&quot;&gt;Great debugging pursues &apos;the why&apos;&lt;/a&gt;, finding similar weak points requires the same mindset.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;Sharing learning publicly builds organizational resilience and accountability culture.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;An open feedback culture eliminates recurring mistakes.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31c/&quot;&gt;Coaching for responsibility: look holistically at how multiple factors contribute to problems.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/99/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/99/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t trust people&apos;s judgments in conflicts</title><link>https://candost.blog/notes/20j1/</link><guid isPermaLink="true">https://candost.blog/notes/20j1/</guid><pubDate>Fri, 02 Jan 2026 06:35:01 GMT</pubDate><content:encoded>&lt;p&gt;When you deal with &quot;us vs. them&quot; conflicts, &lt;a href=&quot;/notes/53d/&quot;&gt;listen to the people&lt;/a&gt; but do not trust their judgment. The conflict will create &lt;a href=&quot;/notes/44b/&quot;&gt;unconscious bias&lt;/a&gt; toward the other side. Gather facts and meet with individuals to &lt;a href=&quot;/notes/44/&quot;&gt;understand their problems and perceptions&lt;/a&gt;. Drill down into the root problem: often, it&apos;s &lt;a href=&quot;/notes/41b2/&quot;&gt;an unaddressed need of someone&lt;/a&gt; that the other person isn&apos;t seeing. Find and address it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;Ask questions without bias to understand&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/94/&quot;&gt;Compassion destroys &quot;us vs. them&quot; rivalry&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20j1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20j1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Tools for managing managers</title><link>https://candost.blog/notes/76a/</link><guid isPermaLink="true">https://candost.blog/notes/76a/</guid><pubDate>Wed, 31 Dec 2025 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tools differ when you&apos;re not managing Individual Contributors anymore&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skip-level 1:1s&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/83/&quot;&gt;Coaching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;Mentoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hand-holding&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b5/&quot;&gt;Asking Questions (collect first)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;Constant feedback&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/83/&quot;&gt;Coaching mindset is even more crucial when managing managers than ICs&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;Positive reinforcement is a much better tool to guide managers&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;Asking for the time and format of the feedback is crucial. Just because they are managers doesn’t mean they can handle any type of feedback in any form&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4d/&quot;&gt;While hand-holding, be aware of Hawthorne effect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/61/&quot;&gt;Once the manager is in a more mature level, look for problems and goals to delegate&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b2/&quot;&gt;Managers are essentially mission leads. Ensure each team has a mission they follow&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1a/&quot;&gt;While hand-holding, don’t forget that accountability ≠ responsibility. Your direct reporting manager is responsible, you’re accountable.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/16d/&quot;&gt;If you’re managing first-line managers, try leaning on them for operational topics.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/76a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/76a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to debug a dysfunctional team?</title><link>https://candost.blog/notes/92a1/</link><guid isPermaLink="true">https://candost.blog/notes/92a1/</guid><pubDate>Wed, 31 Dec 2025 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Debugging a dysfunctional team includes seven steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Form a hypothesis&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/82/&quot;&gt;Check the data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4/&quot;&gt;Observe the team&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44h/&quot;&gt;Ask Questions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Check The Team Dynamics&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;Jump In To Help&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44g/&quot;&gt;Be Curious&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;You need to ask questions with genuine curiosity rather than interrogating.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;Making a team functional is the heart of the management craft.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Often, dysfunctional teams have unhealthy conflicts. &lt;a href=&quot;/notes/20j/&quot;&gt;You need to turn rivalries into teams.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53d/&quot;&gt;Listen with attention.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;Without creating an open culture (or kicking it off), you can’t even form a hypothesis.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/92a1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/92a1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Engineering Managers with a Debugging Mindset</title><link>https://candost.blog/notes/98/</link><guid isPermaLink="true">https://candost.blog/notes/98/</guid><pubDate>Wed, 31 Dec 2025 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Great engineering managers have strong debugging skills and know how to apply them to non-technical problems. They pursue &apos;the why&apos; of the problem before jumping to conclusions. They seek the underlying issue and don&apos;t stop at half-baked ideas.&lt;/p&gt;
&lt;p&gt;When managers skip this debugging mindset and jump to conclusions, they solve the wrong problem—one nobody cares about. This not only undermines their abilities within the team but also creates additional problems.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;Engineering managers seek to understand all perspectives at the table.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;Finding and understanding the real problem is a big part of a manager’s craft.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/15/&quot;&gt;When your manager delegates a task to you, collect information and try to identify the root problem your manager wants/needs to solve.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;When you solve a problem, presenting your solution is a good idea, especially for a public audience to share experiences.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding the real problem requires &lt;a href=&quot;/notes/30/&quot;&gt;scientific thinking&lt;/a&gt; combined with &lt;a href=&quot;/notes/20/&quot;&gt;psychological research&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &quot;Best engineering managers are often great debuggers. Because a great debugger is relentless in the pursuit of the &apos;why&apos; for a bug.&quot; — Camille Fournier, The Manager&apos;s Path&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/98/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/98/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Easy is the enemy of good</title><link>https://candost.blog/journal/easy-is-the-enemy-of-good/</link><guid isPermaLink="true">https://candost.blog/journal/easy-is-the-enemy-of-good/</guid><pubDate>Fri, 26 Dec 2025 06:25:42 GMT</pubDate><content:encoded>&lt;p&gt;Easy is the enemy of good.&lt;/p&gt;
&lt;p&gt;We all opt-in for the easy, all the time. The learning comes from chasing the simple, not easy. Making things simple is difficult. That’s why simple things are almost always great.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/easy-is-the-enemy-of-good/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/easy-is-the-enemy-of-good/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Engineers have more power than they think</title><link>https://candost.blog/notes/79a/</link><guid isPermaLink="true">https://candost.blog/notes/79a/</guid><pubDate>Thu, 25 Dec 2025 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I consistently receive requests from the team to reduce tech debt. Every time, I say similar things. I want to share them here.&lt;/p&gt;
&lt;p&gt;As a software engineer, you have more power than you think.&lt;/p&gt;
&lt;p&gt;When you&apos;re coding for a new feature, you have the power to refactor a specific part of the codebase. You don&apos;t need any permission.&lt;/p&gt;
&lt;p&gt;When you see that reducing debt in a specific part of the codebase makes the next engineer&apos;s job faster and the results are visible quickly, you have the power to reduce tech debt. You don&apos;t need any permission.&lt;/p&gt;
&lt;p&gt;When you recognize that changing a system&apos;s architecture can enhance its reliability, maintainability, extensibility, or availability, you have the power to devise a structured solution and implementation plan, rather than waiting for divine permission.&lt;/p&gt;
&lt;p&gt;When you see that changing something in the codebase or in the tools we use will reduce cognitive load or maintenance efforts, you have the power to do so. You don&apos;t need permission.&lt;/p&gt;
&lt;p&gt;Most of these things don&apos;t need to be separate work tickets with estimates. You can easily embed all of these into your existing work. If you are punished for doing something like that, then you&apos;re in the wrong environment.&lt;/p&gt;
&lt;p&gt;Don&apos;t forget, as an engineer, you make most of the decisions of organizations, although they might seem trivial at first glance. Each decision you make every day affects the future of the organization you&apos;re in.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;This is the complement to &lt;a href=&quot;/notes/79/&quot;&gt;managing tech debt from a leadership perspective&lt;/a&gt;. Leaders justify to the business; engineers act with autonomy.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;Engineer autonomy&lt;/a&gt; is about proving you can work independently. This note expands on what that autonomy looks like in practice.&lt;/li&gt;
&lt;li&gt;Teams need &lt;a href=&quot;/notes/3d/&quot;&gt;emancipation, not empowerment&lt;/a&gt;. Engineers already have the power—they just need to recognize and use it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c3/&quot;&gt;Giving ownership through delegation&lt;/a&gt; works from the top down. This is about engineers taking ownership from the bottom up.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19/&quot;&gt;Decision-making strategies&lt;/a&gt; apply here—if your decision leaked, could you justify it? If yes, you have the power to make it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/79a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/79a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Capitalism creates wealth through innovation and productivity</title><link>https://candost.blog/notes/96/</link><guid isPermaLink="true">https://candost.blog/notes/96/</guid><pubDate>Thu, 25 Dec 2025 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Thanks to the growth, productivity, resourcefulness, and innovation of corporations, capitalism creates wealth—a positive-sum game for its owners. Capitalism is a provider of wealth accumulation and the backbone of innovation due to financial investments. Unlike zero-sum games, where one person&apos;s gain is another&apos;s loss, the stock market grows because companies create real value through their innovations and productivity improvements.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;This wealth accumulation works like &lt;a href=&quot;/notes/14/&quot;&gt;compound interest&lt;/a&gt;—small returns multiply over time into significant wealth.&lt;/li&gt;
&lt;li&gt;Success requires &lt;a href=&quot;/notes/52a4/&quot;&gt;long-term thinking&lt;/a&gt;, not chasing short-term gains: capitalism and index fund investing reward patient investors.&lt;/li&gt;
&lt;li&gt;When &lt;a href=&quot;/notes/80/&quot;&gt;making investment decisions&lt;/a&gt;, remember you&apos;re investing in this wealth-creation engine, not just buying stocks, funds, or bonds.&lt;/li&gt;
&lt;li&gt;The idea of increasing gains by reducing costs is &lt;a href=&quot;/notes/9c/&quot;&gt;simple&lt;/a&gt; and often overlooked.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Little Book of Common Sense Investing by John C. Bogle, p. XIX&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/96/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/96/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Minimizing costs and trading frequency increases market returns</title><link>https://candost.blog/notes/97/</link><guid isPermaLink="true">https://candost.blog/notes/97/</guid><pubDate>Thu, 25 Dec 2025 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Minimizing costs and trading frequency increases the chances of earning a fair share of the market. Similar to gambling&apos;s motto of &quot;house always wins,&quot; financial intermediaries make a lot of money while others are investing. Reducing these costs increases the chances of earning higher shares from the market.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Just as &lt;a href=&quot;/notes/14/&quot;&gt;compound interest&lt;/a&gt; multiplies wealth over time, investment costs compound negatively, eating away returns year after year.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/96/&quot;&gt;Capitalism creates wealth&lt;/a&gt; through innovation, but intermediaries extract value without creating it. Minimize their take.&lt;/li&gt;
&lt;li&gt;The solution is &lt;a href=&quot;/notes/9c/&quot;&gt;simple&lt;/a&gt;—buy low-cost index funds and hold them. Simple ideas prevent complicated problems.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Little Book of Common Sense Investing by John C. Bogle, p. XX-XXI&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/97/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/97/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Investor returns decrease as market motion increases</title><link>https://candost.blog/notes/97a/</link><guid isPermaLink="true">https://candost.blog/notes/97a/</guid><pubDate>Thu, 25 Dec 2025 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For investors as a whole, returns decrease as motion increases. The motion means the intermediaries win more as they take fees, taxes, and deduct costs from shareholders&apos; value.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;This is the mathematical proof of &lt;a href=&quot;/notes/97/&quot;&gt;minimizing costs and trading&lt;/a&gt;. More trading = more motion = fewer returns.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/96/&quot;&gt;Capitalism creates wealth&lt;/a&gt;, but motion transfers that wealth from investors to intermediaries without creating new value.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52a4/&quot;&gt;Long-term thinking&lt;/a&gt; means minimizing motion. Patience is profitable; activity is expensive.&lt;/li&gt;
&lt;li&gt;Just like &lt;a href=&quot;/notes/14/&quot;&gt;compound interest works positively&lt;/a&gt;, motion compounds negatively through repeated fees and taxes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Little Book of Common Sense Investing by John C. Bogle, p. 5&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/97a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/97a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Unbearable Joy of Sitting Alone in A Café</title><link>https://candost.blog/the-unbearable-joy-of-sitting-alone-in-a-cafe/</link><guid isPermaLink="true">https://candost.blog/the-unbearable-joy-of-sitting-alone-in-a-cafe/</guid><pubDate>Thu, 25 Dec 2025 10:33:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s contradictory to sit alone in a café. It&apos;s against the reason cafés exist.&lt;/p&gt;
&lt;p&gt;They are designed as meeting spaces. There is no table with a single chair. Even the ones placed right by the window with high seating are big tables with many chairs.&lt;/p&gt;
&lt;p&gt;Cafés are community spaces. Most go there to see their loved ones, friends, or colleagues.&lt;/p&gt;
&lt;p&gt;You find only a few people sitting alone. Most are buried in their laptops, working hard to make a living in their own worlds, whatever world they have.&lt;/p&gt;
&lt;p&gt;I rarely do that.&lt;/p&gt;
&lt;p&gt;When I took time off from work, I chose a staycation. Unlike most of my friends, who visited Japan in 2025.&lt;/p&gt;
&lt;p&gt;When I heard their experiences, I was jealous. When I told them my staycation plans of doing nothing for four weeks, they were jealous.&lt;/p&gt;
&lt;p&gt;While off work, I wanted to slow time down as much as I could. The best way to freeze time, I read somewhere, is to get a dog. Luckily, I have one already. So, I took long walks with my dog.&lt;/p&gt;
&lt;p&gt;What used to feel like 10 minutes between breakfast and lunch while working became a full-blown day. Even though I was spending two hours walking my dog instead of a 30-40 minute rush, it felt like an eternity. A peaceful eternity.&lt;/p&gt;
&lt;p&gt;On the second day, I decided to leave my phone at home, so I lived those two hours to the fullest. I didn&apos;t take any device that could connect me to the internet or to other people.&lt;/p&gt;
&lt;p&gt;I was nervous.&lt;/p&gt;
&lt;p&gt;But all the anxiety evaporated after 30 minutes.&lt;/p&gt;
&lt;p&gt;I felt free, so to speak.&lt;/p&gt;
&lt;p&gt;It wasn&apos;t that nobody could reach out to me that felt like an escape; it was that &lt;strong&gt;&lt;em&gt;I&lt;/em&gt;&lt;/strong&gt; couldn&apos;t reach out to &lt;em&gt;anyone&lt;/em&gt; or &lt;em&gt;anything&lt;/em&gt; that caused the turmoil.&lt;/p&gt;
&lt;p&gt;I had no possibility to text anyone. No possibility to watch or read. No chance to look up anything to fulfill my curiosity.&lt;/p&gt;
&lt;p&gt;My mind was alone after a long time.&lt;/p&gt;
&lt;p&gt;There were a few moments I put my hand into my pocket to take out my phone to look up something I was curious about. My phone wasn&apos;t there.&lt;/p&gt;
&lt;p&gt;I smiled. Every. Single. Time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;On the second day, I randomly walked into a neighborhood café. I ordered an americano with a double shot of espresso.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sipping a hot americano feels different when you are in a rush to catch a subway. Its purpose is to wake you up. A sip from that little hole in a single-use cap burns my tongue every time. I despise that.&lt;/p&gt;
&lt;p&gt;With a porcelain cup, you don&apos;t have that. Coffee changes its purpose. It becomes a pleasure.&lt;/p&gt;
&lt;p&gt;I sat down with a proper cup of americano. My dog crawled under the table.&lt;/p&gt;
&lt;p&gt;I was sitting alone in a café with a dog that had crawled under the table without any electronics that could distract me.&lt;/p&gt;
&lt;p&gt;Distract me from, basically, nothing.&lt;/p&gt;
&lt;p&gt;It was pure delight. Every element. Or rather, the non-existence of any element. No phone. No headphones. No tablet. No laptop.&lt;/p&gt;
&lt;p&gt;My mind was just drifting with the chatter in the café. I left myself to the flow.&lt;/p&gt;
&lt;p&gt;When you let your thoughts wander, they take you on a journey you&apos;ll never think possible. You reflect on the smallest details of your fast life. Your brain absorbs all the mistakes you&apos;ve made. You accept that you can&apos;t change failures anymore, as much as you feel guilty.&lt;/p&gt;
&lt;p&gt;You might as well not worry about them and focus on what you can change: what you do now. And what you will do next.&lt;/p&gt;
&lt;p&gt;Nothing else.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The next day, I left my phone at home again and decided to stop by the same café. I was lucky; I sat down at the same table.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sitting alone in a café without distractions reveals a lot about people. The same people you pass by in a split second while rushing from home to work, from a meeting to a meeting. The invisible suddenly appears right in front of you. People don&apos;t go away in two seconds. They stay. They sip a coffee. They talk with others, laugh, cry, and worry. Oh, worry.&lt;/p&gt;
&lt;p&gt;Worry is only visible in people&apos;s eyes. Eyes are the channel of the heart. You have to close your ears and look at people&apos;s eyes to see their hearts.&lt;/p&gt;
&lt;p&gt;You realize that looking into eyes is frightening—both for you and the other person. You try to avoid it, but eventually make eye contact because nobody is physically moving anywhere.&lt;/p&gt;
&lt;p&gt;As none of you are passing by in a second, you mimic looking at something else. They continue their conversation. But you saw their worry, and you can&apos;t help but try to understand.&lt;/p&gt;
&lt;p&gt;You leave the café to avoid making things awkward.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I went there the next day. This time, my table was occupied. I don&apos;t know when it became my table. But it felt like that. I found another one. It was closer to the staff.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sitting alone in a café without distractions shows you how a café works. You never contemplate how they operate behind that giant coffee machine while you&apos;re waiting for your coffee before you run to catch the next bus, tram, subway, or taxi. You never ruminate when you sip from a single-use cup and burn your tongue.&lt;/p&gt;
&lt;p&gt;You notice how the staff circulates porcelain cups, from dirty to clean, to the top of the coffee machine. You observe the staff&apos;s reactions to each customer. You try to analyze if someone is a regular by noticing how the staff talks.&lt;/p&gt;
&lt;p&gt;You wonder whether they consider you a regular, since you&apos;ve been there for the last couple of days. Or they call you &lt;em&gt;a creepy guy with a dog&lt;/em&gt;. You will never know. You&apos;re not fine with never knowing.&lt;/p&gt;
&lt;p&gt;You promise yourself to come the next day to observe how the staff talks to you.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I again went to the same café. Unlucky me. A different staff were working on that day. Yet I ordered the same: a cup of americano with a double shot of espresso.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sitting alone in a café without distractions, with a dog that had crawled under the table, brings a light to a truth: you can&apos;t control or influence other people&apos;s thoughts and feelings, no matter what you do. Staff may think of you as a weirdo with a dog; your friends might want to be in your place; your family might be nervous because they can&apos;t reach out to you.&lt;/p&gt;
&lt;p&gt;You know you can&apos;t change any of those unless you change who you are. It makes you feel alone and powerless.&lt;/p&gt;
&lt;p&gt;You are alone and powerless. You encounter a deep challenge.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The next day, I didn&apos;t go to the café. I instead took an even longer walk. I went there the following day, knowing I had faced that challenge in my longest walk.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sitting alone in a café without distractions shows everyone you&apos;re alone.&lt;/p&gt;
&lt;p&gt;It&apos;s an alone act.&lt;/p&gt;
&lt;p&gt;A scary but powerful one.&lt;/p&gt;
&lt;p&gt;Many avoid at all costs. That&apos;s why everybody looks at you with wondering eyes. They are afraid of your powerful joy. They can&apos;t grasp why someone would do this to themselves. They are hesitant but are thinking of doing the same.&lt;/p&gt;
&lt;p&gt;Then you realize you&apos;re planting thoughts in people&apos;s minds that you can&apos;t control. Feelings are feelings. Thoughts are thoughts.&lt;/p&gt;
&lt;p&gt;Just at the moment you think you are alone again, you see another weirdo across the café sitting alone without distractions. That weirdo is looking at your sleeping-in-a-croissant-shape dog under the table. Weirdo is enjoying the moment, while your dog is on an adventure in her second dream.&lt;/p&gt;
&lt;p&gt;You smile. You know you&apos;re not alone. You are one weirdo sitting at a distance from one other. You know there are many.&lt;/p&gt;
&lt;p&gt;Maybe one of them is reading this and feeling heard. Perhaps one will never see this and will always feel alone. But it only needs one look around. You glance over the café and leave with a smile.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The next day, I went there again. This time, I put in an intentional distraction. A good one.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sitting alone in a café without distractions only gets better when there is something to write on. Not with a keyboard. You must use your single hand to write, not two. Ideally, with a pen on paper.&lt;/p&gt;
&lt;p&gt;The pen is meant to slow you down. The words shouldn&apos;t land on paper at the speed of thinking or even talking.&lt;/p&gt;
&lt;p&gt;The writing must hurt your wrist or hand. It must turn into a burden. That pain is a signal telling you that you have written long enough. Maybe you wrote only five lines. Perhaps one thousand.&lt;/p&gt;
&lt;p&gt;It doesn&apos;t matter.&lt;/p&gt;
&lt;p&gt;You take a break.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/the-unbearable-joy-of-sitting-alone-in-a-cafe/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/the-unbearable-joy-of-sitting-alone-in-a-cafe/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Increasing Efficiency and Effectiveness with Psychology &amp; Economics - Part II</title><link>https://candost.blog/newsletter/mediations-31/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-31/</guid><description>How Autonomy and Self-Regulation, Psychological Safety, Cognitive and Emotional Load can help</description><pubDate>Tue, 23 Dec 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/newsletter/mediations-30/&quot;&gt;In the last Mediations&lt;/a&gt;, I discussed economics, in particular, how better technology, processes and infrastructure increase efficiency and effectiveness. However, economics alone can’t cover all six pillars of socio-technical systems.&lt;/p&gt;
&lt;p&gt;I also realized that in the last issue, I made socio-technical systems theory look like an economics theory. It was actually born from psychology.&lt;/p&gt;
&lt;p&gt;Psychologists sought to explain why productivity declined following technological improvements. They found that assuming people will adjust to the technological advancements without incentives was a mistake. They looked for motives that drive people to change their behavior. Their founding was groundbreaking back then.&lt;/p&gt;
&lt;p&gt;No organization can evolve and survive without understanding and learning what drives people. Researchers covered those motives within the other pillars of socio-technical systems theory: people, goals, and culture—the heart of psychology.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Although all pillars are interconnected and can’t be considered in isolation, I will focus on the people pillar and briefly touch on the goals.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Designing effective incentives and systems requires understanding the needs of the exact people who will do the work. If the needs aren’t addressed, no infrastructure, technology or process can change the system’s productivity.&lt;/p&gt;
&lt;p&gt;Over the decades since systems theory, extensive research has been done on what drives people to improve productivity. At the foundation, we find autonomy and self-regulation, psychological safety, and cognitive and emotional load.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Autonomy and Self Regulation (a.k.a. The Drive)&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Without understanding why anyone would want to expand themselves upward, no leader can build what Daniel Pink calls, &lt;strong&gt;&lt;em&gt;drive&lt;/em&gt;&lt;/strong&gt;—&lt;em&gt;our deep-seated desire to direct our own lives, to extend and expand our abilities, and to make a contribution&lt;/em&gt;. Without drive, people always choose the easy way: living in their comfort zones.&lt;/p&gt;
&lt;p&gt;Although the underlying theory in psychology is called Self-Determination Theory (developed in the 1970s), I prefer Daniel Pink’s rebranded version, which has three core elements: &lt;em&gt;autonomy&lt;/em&gt;, &lt;em&gt;mastery&lt;/em&gt;, and &lt;em&gt;purpose&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;People don’t need to be managed in a traditional sense anymore, especially in the tech industry. They desire to be autonomous. When people own the decisions in their areas and can choose what and how to build, the rest is watching them create remarkable things without external pressure. Yet, autonomy is often misunderstood. It isn’t complete freedom. It means to &lt;em&gt;have the desire to be self-directed&lt;/em&gt;. A good example of autonomy is Google’s 20% time policy: everyone may spend 20% of their time initiating and driving innovative projects as long as it supports Google’s mission.&lt;/p&gt;
&lt;p&gt;However, autonomy only works when people have the &lt;em&gt;mastery&lt;/em&gt; needed to make the right decisions.&lt;/p&gt;
&lt;p&gt;Mastery is also often misunderstood. It isn’t the expertise; it is &lt;em&gt;the urge to get better&lt;/em&gt; at something that matters (&lt;em&gt;to the person&lt;/em&gt;). &lt;strong&gt;Anyone can approach mastery but never fully reach it, hence it keeps them engaged with what they do.&lt;/strong&gt; The desire to learn how things work deeply and know what to do when faced with a challenge can only be built with experience. Combining autonomy and mastery brings a “can-do” attitude that is driven by pragmatism. The more people approach mastery and can work with autonomy, the more efficient they become.&lt;/p&gt;
&lt;p&gt;Although improved efficiency is good, what about effectiveness? How can we align all pragmatic decisions with the organizational goals? The only way to ensure effective decision-making is &lt;em&gt;sharing the same purpose or goal&lt;/em&gt;, something larger than individuals, something meaningful beyond quarterly earnings. If someone is convinced of the organization’s values and the rationale for those values, they will &lt;em&gt;eventually&lt;/em&gt; make decisions aligned with the organization’s objectives.&lt;/p&gt;
&lt;p&gt;When we work with people who have the drive, we observe a constant desire to do better, to push forward, and to increase effectiveness alongside efficiency, &lt;em&gt;not separately&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It’s common that the same people also make many mistakes. We can’t expect anyone to make the right decisions 100%. When they take a faulty step or fail in their mission, does it imply they lack the desire to improve? Why do they create chaos even though they are autonomous? How do we expect them to take ownership of their actions and their consequences? How do we extract learnings from failures?&lt;/p&gt;
&lt;p&gt;We can’t answer any of these questions or build a driving organization without establishing psychological safety. Without it, &lt;em&gt;the drive&lt;/em&gt; has no room to shine.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Psychological Safety&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Probably one of the most popular (&lt;em&gt;yet often neglected&lt;/em&gt;) concepts in organizational thinking is &lt;em&gt;psychological safety&lt;/em&gt;. It’s also the most fragile foundational element of any organization. While building it takes a mountain of effort, a tiny mistake shatters it.&lt;/p&gt;
&lt;p&gt;Anyone can &lt;em&gt;claim&lt;/em&gt; that they try to provide a psychologically safe environment, yet they can’t &lt;em&gt;guarantee it&lt;/em&gt;. People can only &lt;em&gt;feel&lt;/em&gt; safe, and nobody can control others’ feelings.&lt;/p&gt;
&lt;p&gt;Most leaders struggle with psychological safety and get it wrong because they think it’s all about giving people space to talk or encouraging them to ask questions in company-wide meetings. They never learn what psychological safety really means.&lt;/p&gt;
&lt;p&gt;Harvard Business School professor Amy Edmondson defines it as the shared belief that it’s OK to take risks, express ideas and concerns, speak up with questions, and admit mistakes—and here’s the important part—without fear of negative consequences.&lt;/p&gt;
&lt;p&gt;Psychological safety demands showing vulnerability (&lt;em&gt;while admitting mistakes&lt;/em&gt;) and facilitating a safe conversation, &lt;strong&gt;&lt;em&gt;at all times&lt;/em&gt;&lt;/strong&gt;. It’s not only about giving space to ask questions, but it’s also about welcomingly reacting to questions.&lt;/p&gt;
&lt;p&gt;In a safe environment, people talk about the problems and mistakes openly and try to find the best possible solution instead of hiding things that &lt;em&gt;might hurt them&lt;/em&gt;. This, in turn, increases the effectiveness: if someone is focused on the wrong things, others should be able to raise their voice even if it doesn’t bring individual benefits.&lt;/p&gt;
&lt;p&gt;Although psychological safety enables people to take risks and try new ideas, it is equally important that they can manage information &lt;strong&gt;and&lt;/strong&gt; emotions to operate in a safe environment.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Cognitive and Emotional Load&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;When the mental effort required to process information or hold it in memory, or when there is constant context switching between tasks or tools, cognitive load increases. Every new tool, notification, or system adds cognitive overhead, even if each seems minor individually.&lt;/p&gt;
&lt;p&gt;High cognitive load directly impacts effectiveness in the short term and efficiency in the long term. High cognitive load introduces complexity. The higher the complexity, the lower the confidence in decisions. An incorrect decision can cause the team to work on the wrong things from the get-go. Although they can maintain a high delivery speed, it won’t matter &lt;a href=&quot;/the-one-with-the-wrong-problem/&quot;&gt;if they work on the wrong thing.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A lot of unwritten documentation, bugs, workarounds built into the system, incidental complexity (or &lt;a href=&quot;https://coder-mike.com/blog/2021/09/24/incidental-vs-accidental-complexity/&quot;&gt;accidental&lt;/a&gt;), or entangled business logic cause high cognitive load. If adding a slight change to the system causes many “we need to look at where it needs changing” moments because people can’t keep it in mind, this indicates high complexity.&lt;/p&gt;
&lt;p&gt;Meanwhile, emotional load can impact efficiency or effectiveness in the short term. Although acute emotional load can be sustained without a significant long-term impact on effectiveness, it must be resolved quickly. Chronic emotional load demotivates, destroys the drive, and drains people’s energy. When emotions are consistently high, the quality of decisions and output drastically reduces.&lt;/p&gt;
&lt;p&gt;One of the main challenges of the “socio” part of socio-technical systems is that technical systems often include dashboards, metrics, and other means to clearly monitor progress day by day. Socio-systems have none.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Measuring Psychology’s Impact&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Social systems usually have lagging indicators that are difficult to measure and to observe their impact. Because there is no “safety meter” for psychological safety, leaders struggle to gauge it. However, there are tools leaders can use, including 1:1 conversations, attrition patterns, the quality of conflict in meetings, trust levels between teams, surveys, communication patterns, and more. It’s always better to start with the leanest and most frictionless tools and observe and “measure” the changes.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;You want to leverage psychology more, but where do you start?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;There is no need to read Nietzsche, Jung or Adler’s academic texts at the beginning. Here are some recommendations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Start with learning the intersection of both economics and psychology by checking out Daniel Kahneman’s Thinking Fast and Slow and Robert Cialdini’s Influence; popular psychology-driven practical books. Both books provide a clear understanding of how the human brain works in terms of decision-making—a crucial mechanism in systems thinking. Kahneman’s biases will help with understanding how to hire more effectively and manage projects, while Cialdini’s strategies will help with driving change in the organization and convincing people to follow your guidance.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reducing cognitive load is all about proper team setup and clear domain boundaries. Looking into Team Topologies by Matthew Skelton and Manuel Pais is a great start. Also, reading about the incidental (and accidental) complexity is a good option.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reducing emotional load is not that simple as it depends on relationships and communication. There is extensive literature on both, but I found Dr. Rosenberg’s book Non-Violent Communication the most helpful and practical.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Systems thinking theory is the overarching theory of socio-technical systems theory. Donella Meadows’ book Thinking in Systems explains systems thinking in depth. Highly recommended.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you want to combine Systems Thinking, Team Topologies, organizational design, domain-driven approach in practice with Wardley maps, I recommend watching &lt;a href=&quot;https://www.youtube.com/watch?v=lpNzR0fvxDw&quot;&gt;Susanne Kaiser’s talk&lt;/a&gt; (I have Susanne’s book waiting on my desk to read soon).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For some people, understanding others comes straightforwardly, but they can’t wrap their heads around organizations easily. For some (like me), it’s the other way around. So, you might be strong in one but not the other. Focusing on the weak skill is always a better option. Even developing a basic understanding gives you a big leap.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-31/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-31/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Increasing Efficiency and Effectiveness with Psychology &amp; Economics - Part I</title><link>https://candost.blog/newsletter/mediations-30/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-30/</guid><description>How Socio-Technical Systems, Institutional Economics and Evolutionary Economics Theories can help</description><pubDate>Tue, 25 Nov 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Software systems have become incredibly complex over the last decade(s), along with the organizations that build them. As a result, increasing an organization’s efficiency and effectiveness became as challenging as developing a software product.&lt;/p&gt;
&lt;p&gt;A problem I see is &lt;strong&gt;people spending a lot of energy and time learning the intricacies of their craft&lt;/strong&gt; (software development, design, marketing, etc.), and &lt;em&gt;&lt;strong&gt;almost&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;no time learning the backbone of working in or with an organization: economics and psychology.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Both subjects are often discarded, but they specifically focus on increasing the efficiency and effectiveness of an organization and its people, respectively.&lt;/p&gt;
&lt;p&gt;To understand how economics and psychology help navigate an organization, we can use a few different theories as lenses. In this issue, we’ll talk about Economics. Part II will be about Psychology.&lt;/p&gt;
&lt;h2&gt;Socio-Technical Systems Theory&lt;/h2&gt;
&lt;p&gt;Maybe the most popular Economics theory these days is the &lt;em&gt;socio-technical systems theory (STS)&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;STS was born in the 1950s, when coal mines began using machinery. People held the dominant view of workers as “extensions to machines” (&lt;em&gt;does it sound familiar to how we evaluate working with AI?&lt;/em&gt;). Researchers sought to understand why they faced a paradox in coal mines: new mechanical technology decreased productivity and worker satisfaction, despite being technically superior.&lt;/p&gt;
&lt;p&gt;Over the last seven decades, STS has evolved into an interdisciplinary framework and has been applied to many complex organizations across different fields.&lt;/p&gt;
&lt;p&gt;According to STS, optimal organizational performance requires joint optimization of both social and technical subsystems that are divided into six: &lt;strong&gt;people&lt;/strong&gt;, &lt;strong&gt;technology&lt;/strong&gt; (not only software development but also tools used in the organization too), &lt;strong&gt;processes&lt;/strong&gt;, &lt;strong&gt;goals&lt;/strong&gt;, &lt;strong&gt;infrastructure&lt;/strong&gt; (not only software infra but also the infrastructure of an organization) and &lt;strong&gt;culture&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Falsely, many leaders focus solely on&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;technology&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt;,&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;processes&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt;, and&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;goals&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;to increase effectiveness and efficiency, paying less attention to the other three.&lt;/strong&gt; Moreover, the interconnections among these six and how they affect one another are often not considered. While new &lt;a href=&quot;/newsletter/mediations-28/&quot;&gt;industry-altering evolutions like AI&lt;/a&gt; are in full swing, this comes at a cost.&lt;/p&gt;
&lt;p&gt;Many leaders lack the understanding of how concepts from STS directly contribute to their organization (look at the ‘Great’ link I shared below to learn how). Almost all categories show their results in &lt;a href=&quot;https://amplitude.com/blog/leading-lagging-indicators&quot;&gt;lagging metrics&lt;/a&gt;, making it difficult to connect the dots between a change and its impact. Yet, we can get help from other theories.&lt;/p&gt;
&lt;h3&gt;Institutional Economics Theory&lt;/h3&gt;
&lt;p&gt;Institutional economics theory &lt;em&gt;characterizes institutions as extractive or inclusive: extractive ones concentrate power and wealth in small elites, while inclusive ones distribute power through pluralistic mechanisms&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In tech, extractive institutions can concentrate power and limit autonomy through decision bottlenecks (any change requiring multiple approval layers slows down iteration) or by hoarding knowledge and information at the top. These patterns result in long release cycles and teams perpetually blocked by dependencies due to a lack of context or micromanagement.&lt;/p&gt;
&lt;p&gt;On the other hand, inclusive institutions distribute authority and enable autonomy through decision rights at the team level (such as teams controlling their roadmap within boundaries), transparency (information access is open to everyone), and flat hierarchies (managers as enablers, not gatekeepers). These patterns result in frequent deployments, teams functioning as “mini-startups” with &lt;a href=&quot;/strong-ownership-culture-in-a-team/&quot;&gt;end-to-end ownership,&lt;/a&gt; cross-functional collaboration without permission demands, and knowledge sharing that enables domain ownership.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Creating inclusive institutions within the organization will enable “sustainable wealth”&lt;/strong&gt; (so to speak) for everyone and advance the organization (&lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;using RFCs&lt;/a&gt; or &lt;a href=&quot;/adrs-rfcs-differences-when-which&quot;&gt;ADRs&lt;/a&gt;, &lt;a href=&quot;https://jobs.netflix.com/culture&quot;&gt;Netflix’s culture&lt;/a&gt;, &lt;a href=&quot;https://engineering.atspotify.com/2014/3/spotify-engineering-culture-part-1&quot;&gt;Spotify Organization Model&lt;/a&gt;, or &lt;a href=&quot;https://gist.github.com/chitchcock/1281611&quot;&gt;Jeff Bezos’ API Mandate&lt;/a&gt; are among the best-known examples of creating inclusive institutions).&lt;/p&gt;
&lt;p&gt;The essential mechanism is that &lt;strong&gt;the leaders must commit to giving up power.&lt;/strong&gt; Knowing the results of decades of institutional economics research can help shape culture, infrastructure, and processes directly, while also having an indirect positive impact on goals, technology, and people.&lt;/p&gt;
&lt;p&gt;While institutional economics focuses on the institutional structure, evolutionary economics focuses on organizational capabilities, which are more linked to innovation.&lt;/p&gt;
&lt;h3&gt;Evolutionary Economics&lt;/h3&gt;
&lt;p&gt;Evolutionary economics favors a variation-selection-retention framework in which organizations generate modifications through experimentation and search processes, select environments in which to run these experiments (e.g., by choosing to compete in a market), and retain successful variants through organizational routines and memory. &lt;strong&gt;Innovation is not a discrete event but a continuous process of search under ambiguity and recombining existing knowledge in novel ways.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When we consider adapting AI or developing new AI tools, we need inclusive institutions that allow for innovation, and organizational capabilities and culture that nudge people to use their existing knowledge and experiment with newly available technology to select the right option that increases team and system performance.&lt;/p&gt;
&lt;p&gt;For example, the guild or chapter structure in Spotify’s model (&lt;em&gt;guilds are voluntary communities organized by technical domain, such as incident management guild or developer experience guild, that share best practices, coordinate technical debt, and enable expertise development&lt;/em&gt;) addresses the trade-off between cross-functional delivery teams and function specialization. Guilds act as meta-routines that share and update other routines. Allowing guilds to form and wield “soft power” to drive changes in organizational routines enables innovation.&lt;/p&gt;
&lt;p&gt;At SumUp, I’m part of the incident management guild, and we have put a lot of effort into automation. We improved how each team reports and manages their incidents with small steps, enabling a well-established blameless and effortless incident management culture.&lt;/p&gt;
&lt;p&gt;But how these theories play a role in a daily life of a software engineer?&lt;/p&gt;
&lt;h2&gt;Software Development and Economics&lt;/h2&gt;
&lt;p&gt;I see economics as a bonus that will help with any software engineering task. A better understanding of the environment helps reduce toil and rework. By learning evolutionary economics, a software engineer can seek small innovations in their work (or join a guild) without expecting divine permission. Using a variation-selection-retention mindset, they can create slight variations in the codebase, select the best, and retain it for the long term.&lt;/p&gt;
&lt;p&gt;By understanding institutional economics, engineers can choose the organization they want to work for and assess the company’s long-term value and sustainability. If a team lead has an ambition to collect all the information and power, &lt;a href=&quot;/learn-the-rules-of-promotions/&quot;&gt;the engineer in their team might have fewer chances for a promotion&lt;/a&gt;. When an engineer faces an extractive organization rather than an inclusive one, they can also plan how to influence it (a crucial skill for any leader) in the absence of &lt;a href=&quot;/bridging-the-gap-understanding-the-illusion-of-transparency-in-communication/&quot;&gt;transparency&lt;/a&gt; and accountability.&lt;/p&gt;
&lt;p&gt;We mainly delved into the technical aspects of socio-technical systems, briefly touching on the social elements. When we consider the &lt;a href=&quot;https://dora.dev/research/&quot;&gt;DORA research&lt;/a&gt;, which investigates the capabilities, practices and measures of high-performing technology-driven teams and organizations, leaders have to think &lt;a href=&quot;/newsletter/mektup-34/&quot;&gt;in terms of processes&lt;/a&gt; (&lt;em&gt;e.g., how to dedicate time to guilds/chapters&lt;/em&gt;), people (&lt;em&gt;e.g., how to structure teams&lt;/em&gt;), culture (&lt;em&gt;e.g., how to create autonomous teams&lt;/em&gt;), technology (&lt;em&gt;which AI tools everyone is encouraged to use&lt;/em&gt;), and even infrastructure (&lt;em&gt;if your security team is sitting in the corner office alone, you will have a hard time &lt;a href=&quot;/shift-left-on-security/&quot;&gt;shifting left on security&lt;/a&gt;&lt;/em&gt;). They need to create inclusive institutions that innovates using evolutionary methods.&lt;/p&gt;
&lt;p&gt;Of course, no leaders will be successful by learning these theories without practicing them at different scales (e.g., first in one team, then in the department) and without combining them with learnings from psychology.&lt;/p&gt;
&lt;p&gt;Lastly, all of these learnings are not reserved for the organization’s managers. Anyone can drive a change (it’s just easier when the managers are on the same page) and &lt;a href=&quot;/newsletter/mektup-29/&quot;&gt;influence their manager&lt;/a&gt; to take tiny steps in the right direction.&lt;/p&gt;
&lt;p&gt;We’ll talk about psychology in the next Mediations.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;I share the max three things I found interesting, sorted from good to great.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Good:&lt;/strong&gt;&lt;/em&gt; I sent this to a few people at work. Also deserves its share here. Building agency is what I wish everyone would try to do. &lt;a href=&quot;https://www.operatorshandbook.com/p/how-to-be-high-agency-at-work?utm_source=%2Fsearch%2Fhigh%20agency&amp;amp;utm_medium=reader2&amp;amp;hide_intro_popup=true&quot;&gt;How to be high agency at work&lt;/a&gt; by Torsten Walbaum&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Better:&lt;/strong&gt;&lt;/em&gt; &lt;em&gt;“…a reminder that self-understanding, like so many facets of life, rarely moves in a straight line.”&lt;/em&gt; let me repeat for myself: self-understanding rarely moves in a straight line._ &lt;a href=&quot;https://psyche.co/videos/from-prison-a-bank-robber-and-acclaimed-author-reflects-on-time&quot;&gt;From Prison, a bank robber and acclaimed author reflects on time&lt;/a&gt; by Psyche.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Great:&lt;/strong&gt;&lt;/em&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=lpNzR0fvxDw&quot;&gt;Adaptive Socio-Technical Systems with Architecture for Flow is a great talk by Susanne Kaiser&lt;/a&gt; about the topic we talked about this week. She uses Wardley Map, Team Topologies, and Domain-Driven Design approaches to structure an organization and its systems. Highly recommended!&lt;/p&gt;
&lt;h2&gt;Recently, I wrote about&lt;/h2&gt;
&lt;p&gt;I was looking for the meaning of life for the last few years. I found nothing. Apparently, it was there all the time. All I needed to do was to do a retrospective look (which took me a few weeks to complete). &lt;a href=&quot;/solving-problems-worth-solving/&quot;&gt;I wrote the end result and the journey of how a problem-solving mindset helped me get better at something I &lt;em&gt;feel&lt;/em&gt; is my passion now&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. My &lt;a href=&quot;/rss.xml&quot;&gt;RSS feed&lt;/a&gt; didn’t include the whole post before, now it does. Thanks, David, for reporting!&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-30/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-30/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Added Ko-fi to this blog</title><link>https://candost.blog/journal/adding-ko-fi-support/</link><guid isPermaLink="true">https://candost.blog/journal/adding-ko-fi-support/</guid><pubDate>Sat, 22 Nov 2025 06:25:42 GMT</pubDate><content:encoded>&lt;p&gt;I have now added Ko-fi support to my blog. I am still unsure about this, but I would like to experiment. I aimed to place it in the least intrusive place possible: at the end of the post.&lt;/p&gt;
&lt;p&gt;I don&apos;t know how it will conflict with the two action buttons I have there.&lt;/p&gt;
&lt;p&gt;I still prefer people commenting on the post instead of sending me money, but some people are more comfortable with the latter.&lt;/p&gt;
&lt;p&gt;Let&apos;s see how this goes.&lt;/p&gt;
&lt;p&gt;EDIT: I removed the link/button. It feels &lt;em&gt;weird&lt;/em&gt; to receive money from others for an open blog.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/adding-ko-fi-support/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/adding-ko-fi-support/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Solving Problems Worth Solving</title><link>https://candost.blog/solving-problems-worth-solving/</link><guid isPermaLink="true">https://candost.blog/solving-problems-worth-solving/</guid><description>Discovering how problem-solving shapes a journey from computer engineering to leadership</description><pubDate>Fri, 21 Nov 2025 14:11:00 GMT</pubDate><content:encoded>&lt;p&gt;In the last five to six years, I&apos;ve been &lt;a href=&quot;/seek-goals-that-will-change-how-you-live/&quot;&gt;looking for&lt;/a&gt; a &lt;a href=&quot;/on-the-purpose-of-life/&quot;&gt;grand goal in life&lt;/a&gt;. My search yielded nothing. &lt;a href=&quot;/goals-and-existence/&quot;&gt;The more I looked&lt;/a&gt;, the more it concealed. Then I stopped and turned around to look at what had happened so far. Something appeared out of nowhere. This retrospective look didn&apos;t reveal the meaning of life to me, but there was a beam, hidden behind my back, guiding me. That ray of light materialized as an eagerness to solve problems. That&apos;s when I realized I had found it.&lt;/p&gt;
&lt;p&gt;My clearest memories start from high school. Memorizing topics or formulas always drained my energy. Most of my weak subjects were the ones that forced me to memorize word-for-word: history, geography, literature, and even biology. The ones I thrived in—mathematics, physics, and sometimes chemistry—always gave me problems to solve. Naturally, I chose to follow a &lt;a href=&quot;https://en.wikipedia.org/wiki/Science,_technology,_engineering,_and_mathematics&quot;&gt;STEM&lt;/a&gt; degree and graduated as a computer engineer.&lt;/p&gt;
&lt;p&gt;It&apos;s boggling my mind how this eagerness to solve problems has always been there, but disguised. Apparently, it was scattered across multiple fields, and my forward-looking approach hid it behind me (&lt;em&gt;you can&apos;t see your back unless you use a mirror; and you don&apos;t see yourself in a mirror all the time&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;As little as I knew, this joy of solving problems has evolved throughout my career.&lt;/p&gt;
&lt;h2&gt;Problems with programming&lt;/h2&gt;
&lt;p&gt;I first enjoyed solving software problems because the stupid, riling, wily machine—&lt;em&gt;ahem, computer&lt;/em&gt;—was puzzling me.&lt;/p&gt;
&lt;p&gt;I remember very clearly the first lecture of the Introduction to Computer Science I had at the university. The professor told us, &quot;The computer is stupid. I mean, really stupid.&quot; We need to think and act as if it’s the dumbest thing that has ever existed. His job was to teach how to give clear instructions to the machine so it would do what we wanted. Learning those instructions became the first of many problems I tackled. I spent a decade working on it.&lt;/p&gt;
&lt;p&gt;I solved many problems in different programming languages; I learned best and worst practices, fundamentals, patterns, and paradigms. The more I learned, the more I realized that the problem wasn&apos;t the computer. It was doing precisely what I was telling it to do, but what I said was &lt;em&gt;sometimes&lt;/em&gt; wrong. I had to start from scratch multiple times. That was the problem I needed to fix next: how to think clearly and give precise direction—the exact thing the professor told me years ago. So, the problem was hominid.&lt;/p&gt;
&lt;h2&gt;Problems with thinking begin to appear&lt;/h2&gt;
&lt;p&gt;The human mind caused all bugs, not the machine. For the machine, it was all a matter of true or false, 0 or 1. It was the humans who coded those incorrect bits. That&apos;s when I thought we would be better off if we had solved the problems before coding. I moved one step to the left in the process.&lt;/p&gt;
&lt;p&gt;I focused on designing a solution up front, shaping my thinking about how to solve a set of problems rather than letting the design emerge over time. I learned more about quality, automation, better &lt;a href=&quot;/newsletter/mektup-8/&quot;&gt;software architecture&lt;/a&gt;, &lt;a href=&quot;/how-to-approach-software-architecture-design/&quot;&gt;system design&lt;/a&gt;, and the importance of building guardrails. The coding was much easier once we solved the problem on a whiteboard (or paper) and once we defined how we would shape the system for future iterations.&lt;/p&gt;
&lt;p&gt;After a while, I realized that approaching this way required a different mindset that not everyone possessed. If I helped people gain a fresh mindset, we could solve more problems efficiently. This approach paved the path to management and leadership.&lt;/p&gt;
&lt;h2&gt;Leadership and Management&lt;/h2&gt;
&lt;p&gt;I focused on avoiding wasted time by looking at the &lt;a href=&quot;/rethinking-performance-the-real-meaning-of-a-high-bar/&quot;&gt;team&apos;s culture&lt;/a&gt;, structure, and &lt;a href=&quot;/newsletter/mektup-29/&quot;&gt;interpersonal dynamics&lt;/a&gt; that enable healthy problem-solving and &lt;a href=&quot;/dont-assume-consensus-in-the-absence-of-objection/&quot;&gt;debate culture&lt;/a&gt;. A culture in which people &lt;a href=&quot;/building-trust-methodologically-with-right-tools/&quot;&gt;lift each other&lt;/a&gt;, in which incentives are &lt;a href=&quot;/strong-ownership-culture-in-a-team/&quot;&gt;correctly placed&lt;/a&gt;, in which everyone is encouraged to think in and &lt;a href=&quot;/newsletter/mektup-27/&quot;&gt;outside of the box&lt;/a&gt;, in which debate for finding the best possible solution rather than &lt;a href=&quot;/newsletter/mektup-9/&quot;&gt;ego satisfaction&lt;/a&gt;, and in which &lt;a href=&quot;/have-the-first-win-to-build-team-spirit/&quot;&gt;delivery speed is high&lt;/a&gt; thanks to &lt;a href=&quot;/newsletter/mektup-52/&quot;&gt;high-quality work&lt;/a&gt;, became my goal.&lt;/p&gt;
&lt;p&gt;In the end, it also became my job, and I became an engineering manager. At this stage, the process was no longer linear.&lt;/p&gt;
&lt;p&gt;I learned that I needed to jump one or two steps to the left, right, up, or down, or even around corners, in the process (I didn&apos;t know systems thinking at first). This demand changed how I approach problem-solving overall.&lt;/p&gt;
&lt;p&gt;The management and leadership problems were drastically different than machine problems. The biggest one I recognized was that &lt;a href=&quot;/the-one-with-the-wrong-problem/&quot;&gt;the teams were often solving the wrong problems&lt;/a&gt;. We wasted money and time solving a problem nobody cared about (and for sure weren&apos;t willing to pay for).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/newsletter/mektup-32/&quot;&gt;I began working closely with product&lt;/a&gt;, design, and other business units to understand why we are doing a project, what we aim to achieve, and how to make it feasible for the business.&lt;/p&gt;
&lt;p&gt;I&apos;m still learning, but so far, &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;this is the steepest learning curve I&apos;ve faced&lt;/a&gt;, not the programming languages. Because it not only includes product and business thinking, it also encompasses all the things I&apos;ve learned (machine language, software architecture, system design, people, culture, incentives, etc.).&lt;/p&gt;
&lt;p&gt;Problems at the intersection of software systems, psychology, and economics have become interesting not only because they reflect what I have learned so far. They are interesting because of the sheer complexity they contain.&lt;/p&gt;
&lt;h2&gt;Software Engineering, Psychology, and Economics on Complexity&lt;/h2&gt;
&lt;p&gt;While the software systems are technically sophisticated by themselves, we can&apos;t leave out the psychology (especially social psychology, the study of how people&apos;s thoughts, feelings, and behaviors are influenced by the real, imagined, or implied presence of others) and economics. Solving problems with software in &lt;a href=&quot;https://business.leeds.ac.uk/research-stc/doc/socio-technical-systems-theory&quot;&gt;socio-technical systems&lt;/a&gt; (the word ‘technical’ doesn&apos;t necessarily mean software; rather, technicalities of an organization) effectively and efficiently demands understanding both.&lt;/p&gt;
&lt;p&gt;Effectiveness has a lot to do with psychology, while efficiency is more about economics.&lt;/p&gt;
&lt;p&gt;Understanding motivation architecture (what motivates people), reading invisible signals (how to build psychological safety while working with different cultures), managing cognitive load effectively (why is a team/an employee underperforming) and navigating conflicts constructively (what unmet need created the conflict) require a good understanding of psychology. Learning psychology doesn&apos;t mean becoming a therapist. It&apos;s about understanding the operating system a person/a team is running on, so we can work with human nature rather than against it.&lt;/p&gt;
&lt;p&gt;While psychology examines why people behave as they do, economics focuses on the consequences of those behaviors within systems and how to optimize resource allocation. Learning more about economics (the study of how individuals, businesses, and societies manage their scarce resources to produce, distribute, and consume goods and services) opened my eyes to various instruments I wasn&apos;t aware of. Opportunity cost, marginal analysis, incentive structures, transaction costs, economies/diseconomies of scale, sunk cost fallacy, supply &amp;amp; demand, impact of biases, information asymmetry, and other mechanics raise awareness of how to increase the system&apos;s effectiveness; I was ready to learn them all, but...&lt;/p&gt;
&lt;p&gt;Learning all of these &lt;a href=&quot;/newsletter/mektup-47/&quot;&gt;takes considerable time and energy&lt;/a&gt;. However, none of them solved the majority of the problems that I have faced single-handedly. Instead, each helped me to avoid some stupidity.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;It is remarkable how much long-term advantage people like us have gotten by trying to be consistently not stupid, instead of trying to be very intelligent.&quot; —Charlie Munger&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Instead of trying to make a smart move, focusing on avoiding stupidity is the best approach I’ve found, since we have a minuscule amount of control over the components of socio-technical systems, unlike software.&lt;/p&gt;
&lt;p&gt;In a way, it is all clear to me now. Software engineering leadership (regardless of the job title, Engineering Manager, Director, VP, CTO, etc.) sits right in the middle of these three disciplines; practicing all demands time and focus.&lt;/p&gt;
&lt;h2&gt;Focusing on the right problems&lt;/h2&gt;
&lt;p&gt;While some people focus on influencing others or advancing the industry, I focus on building socio-technical and software systems that &lt;em&gt;solve problems worth solving&lt;/em&gt;. I constantly remind my ego that influencing one person is a big win in the attention economy and solving one problem can be a much bigger gain for the community than earning a million Euros (if the problem is the right one).&lt;/p&gt;
&lt;p&gt;It&apos;s correct that through solving some problems, I get paid. I earn enough to give me a headspace to learn a variety of topics, think about them and share them here.&lt;/p&gt;
&lt;p&gt;Still, not all problems are worth solving.&lt;/p&gt;
&lt;p&gt;I don&apos;t mean focusing on problems that bring money when I say the word &apos;worth.&apos; It is the other way around. If a problem is worth solving, it has a high probability of bringing some benefits, whether monetary or not.&lt;/p&gt;
&lt;p&gt;The world is a vast garbage heap of problems that were unnecessarily solved. People solving the wrong problems (careful, not solving them the wrong way) is the biggest waste of resources. That&apos;s also one of the main reasons many organizations fail. I intend to avoid that.&lt;/p&gt;
&lt;p&gt;People getting stuck with the wrong problem is the grand challenge of our modern age. It&apos;s a knotty task as most problems have become more layered, intertwined, and vastly complex. Nobody can solve any problem without going through the levels of complexity. That&apos;s why I&apos;m still surprised by how people think they can jump to bigger problems without going through the evolutionary process (a few can do, many can&apos;t).&lt;/p&gt;
&lt;h2&gt;Career journey&lt;/h2&gt;
&lt;p&gt;A junior engineer needs to solve problems at the code level; they need to learn the language of the machine (this might seem like changing with AI, but &lt;a href=&quot;/newsletter/mediations-28/&quot;&gt;I think foundational knowledge is still as crucial as before&lt;/a&gt;). They can become senior engineers once they accumulate enough solved problems.&lt;/p&gt;
&lt;p&gt;During seniority, they &lt;em&gt;should&lt;/em&gt; see enough problems and solutions to start recognizing patterns and different architectural shapes of the system(s). This approach will help them solve different problems and &lt;a href=&quot;/newsletter/mektup-24/&quot;&gt;become reliable&lt;/a&gt;. That&apos;s what experience means.&lt;/p&gt;
&lt;p&gt;Now I understand better why job postings ask for some years of experience: solving problems needs time—the &lt;a href=&quot;/love-the-constraints/&quot;&gt;biggest constraint&lt;/a&gt; of all.&lt;/p&gt;
&lt;p&gt;If you claim that you have great knowledge to be called a senior engineer after 1-2 years of software engineering, I can&apos;t diminish your knowledge, but I can play down your experience. I am 100% sure that you haven&apos;t solved enough problems.&lt;/p&gt;
&lt;p&gt;What is enough? It&apos;s a big question that I can only answer famously: &lt;em&gt;it depends&lt;/em&gt;. It&apos;s one of those &quot;you&apos;ll know it once you get there&quot; questions. But then, how do you know you&apos;ll arrive? Well, &lt;em&gt;it depends&lt;/em&gt; on how your organization defines the destination. When it comes to me...&lt;/p&gt;
&lt;p&gt;I see this as a journey and a race with myself; a journey through complexity and a race between humbleness and ego. The ego is pushing in every possible direction to contain life and always tries to bite more than it can chew (e.g., &lt;a href=&quot;/the-good-the-bad-and-the-ugly-of-career-ladders-and-frameworks/&quot;&gt;seeking the next promotion&lt;/a&gt;, surrendering to hustle culture, or &lt;a href=&quot;/my-experience-living-without-social-media/&quot;&gt;being the servant of the attention economy&lt;/a&gt;). That&apos;s why humility comes from knowing how much I don&apos;t know and being aware of gazillion problems, and from facing the challenge of finding the right one.&lt;/p&gt;
&lt;p&gt;A journey through complexity, because resolving problems at work is already arduous, let alone the whole life.&lt;/p&gt;
&lt;h2&gt;The journey going forward&lt;/h2&gt;
&lt;p&gt;I focus on the complexity of life and on solving problems at the intersection of software systems, psychology, and economics. One branch of this, in which I have dedicated my last 9 years, is solving problems for small- to medium-sized businesses—the backbone of the economy. Imagine solving an admin problem of a restaurant owner, a freelancer, a bakery, a landscaper, an event planner, or a handicraft shop. That enables them to focus on what matters to them and brings joy: their craft. That&apos;s where I believe many wonders are hidden.&lt;/p&gt;
&lt;p&gt;The other branch I&apos;m focused on is helping others learn how to approach solving these complex problems. If I&apos;m learning something to solve a problem I faced, &lt;a href=&quot;/passing-down-the-experience/&quot;&gt;I want to share my learning with others&lt;/a&gt;, and &lt;a href=&quot;/speaking-writing-and-high-quality-ideas/&quot;&gt;writing it down ensures that I have a clear understanding of what I&apos;m talking about&lt;/a&gt;. Repeating what Feynman said: &quot;If you want to master something, teach it.&quot;&lt;/p&gt;
&lt;p&gt;That&apos;s why this blog exists.&lt;/p&gt;
&lt;p&gt;And &lt;a href=&quot;/retiring-from-the-idea-of-retirement/&quot;&gt;I doubt that this journey will end anytime soon&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/solving-problems-worth-solving/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/solving-problems-worth-solving/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Distributed Discussions</title><link>https://candost.blog/newsletter/mediations-29/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-29/</guid><description>A subtle shift in an Internet user&apos;s behavior might change the world.</description><pubDate>Tue, 11 Nov 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Back in the late 90s, the Internet wasn’t readily available in my hometown. As it was costly, my parents couldn’t afford it. At that time, blogs were the TikTok or Instagram of today. By the time the Internet became accessible, social media websites like Facebook and Twitter were in full swing. Naturally, I caught the end of the blogging era and grew up with social media. Yet, I still dug into blogs and finally jumped on the train around 2011 and published my first blog article (&lt;em&gt;on Blogger, neither the post nor the blog survived&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;One thing I learned from the era in which blogs were reigning the Internet is that most discussions took place in the comments section of the article or were posted as a follow-up blog post. &lt;strong&gt;The blog author could have a conversation with readers in one place. Discussions were centralized while the content was distributed.&lt;/strong&gt; This has changed.&lt;/p&gt;
&lt;p&gt;Before social media, forums popped up first to provide a place for people to get together around a shared interest. People having a conversation about all possible topics gave many people a voice, as they didn’t have to build and maintain their blogs and still be part of the Internet. However, forums hit blogs hard as they took the discussions away from the blogs and into the forums. Then, forums became centralized in places like Reddit. Social media took this to another level.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reddit and other social media platforms centralized both the discussions and the content.&lt;/strong&gt; Today, when someone reads any blog post they enjoy, they share it on social media with their comments. However, social media algorithms are trained to demote posts that include links as they take people away from the platform (of course, Meta/X/LinkedIn don’t want you to leave even for a second). That further encourages people to copy/paste some of the text from the original post (or share a screenshot) and share their thoughts about it—not even allowing the original post to be reachable directly.&lt;/p&gt;
&lt;p&gt;The punishment of algorithms leads people back to forums to have a conversation there. One group discusses an idea over Facebook, a different group talks about it over X, another one starts a debate on HackerNews or Reddit, while yet another group takes it behind closed doors and runs a lengthy discussion over private chat groups.&lt;/p&gt;
&lt;p&gt;What could have been a meaningful discussion turns into a set of siloed monologues.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;By distributing the discussion across multiple platforms, we are creating echo chambers.&lt;/strong&gt; The exponential growth of echo chambers is one of the most significant problems facing the Internet (and, to a certain extent, the world). &lt;strong&gt;Trying to gain a different perspective became a luxury skill that a few people possess.&lt;/strong&gt; This evolution contributed to the polarization of the world as people sporadically see contrasting ideas and become less susceptible to outsiders.&lt;/p&gt;
&lt;p&gt;Additionally, social media gave everyone a voice. I’m an advocate for freedom of speech, but against hate speech. Anyone on social media can comment on anything, but sometimes it’s better if they don’t. People brew harmful thoughts within their echo chambers and stir each other up. The simmering thoughts that don’t encounter any contrarian ideas while they are tiny waves overflow the echo chamber like a tsunami. If all comments were centralized, people could have seen diverse thoughts, and each blog owner could reduce hate by moderating comments.&lt;/p&gt;
&lt;p&gt;The last problem I see is that having fewer comments on the original blog article forced authors’ hands to abandon their blogs and join the social media train and contribute to the &lt;a href=&quot;https://www.psychologytoday.com/us/blog/the-digital-self/202510/the-dopamine-economy-20-how-ai-is-rewriting-human-desire&quot;&gt;dopamine economy&lt;/a&gt;. &lt;strong&gt;The Internet has become a graveyard of abandoned blogs because people couldn’t see any reaction to the articles they posted&lt;/strong&gt; (&lt;em&gt;I acknowledge that we have gazillion more blogs than in the 90s; most of them are garbage, and it’s impossible to find all of them, let alone react&lt;/em&gt;). Bloggers moved to social media platforms and put their content behind closed doors of X, Facebook or Instagram. Once open and free blogs (and thoughts) began to feed the insatiable profit machine of social media. Meanwhile, most of the remaining bloggers have removed comments from their blogs because they only receive spam comments.&lt;/p&gt;
&lt;p&gt;I argue that open and centralized discussions (on distributed content) are far better for humanity. They provide an opportunity for diverse views to be expressed and coexist. It also gives the author a chance to learn from the audience and correct their mistakes. Otherwise, we all live in echo chambers (often for the profit of big corporations) seeing people like us, taking the same perspectives, complaining about the same concerns, and never learning that other views exist in the world.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When we centralize conversations, ideally in the original location that is open to everyone, all perspectives can coexist.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I acknowledge that not all blogs offer a commenting mechanism, forcing everyone to move discussions elsewhere (the chicken and egg problem). Often, the reason for this choice comes down to maintaining infrastructure, comments, and spam. Many bloggers (rightfully) don’t want to deal with that as they want to focus on the content. One or two real comments per year don’t justify the cost and effort (&lt;em&gt;I do maintain a commenting system on &lt;a href=&quot;/&quot;&gt;my blog here&lt;/a&gt;&lt;/em&gt;). However, once the blogger decides to have it, we owe a response in the place it’s published, if we are to respond.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;I share max three things I found interesting, sorted by good to great.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Good: The question,“&lt;em&gt;What is the purpose of a corporation? Is it solely to maximise shareholder value, as some free-market purists argue? Or does it bear responsibility to a broader set of values and stakeholders?&lt;/em&gt;” led a group of researchers to study Chinese companies that are closer to temples and how they distribute their profits. Read the “&lt;a href=&quot;https://aeon.co/essays/how-chinese-religious-traditions-shape-corporate-generosity&quot;&gt;In China, companies that are closer to temples are more generous to shareholders: religion subtly shapes economic behaviour&lt;/a&gt;” by Zhangxin (Frank) Liu.&lt;/p&gt;
&lt;p&gt;Better: “&lt;em&gt;Technology is the active human interface with the material world.&lt;/em&gt;” A great definition of technology from my favorite author. She wrote this in 2005, and I still haven’t seen a better definition. &lt;a href=&quot;https://www.ursulakleguin.com/a-rant-about-technology&quot;&gt;“A Rant About Technology” by Ursula K. Le Guin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Great: “&lt;em&gt;I deeply believe in environments that cause people to accomplish bigger and better things than what they imagined they could have done,&lt;/em&gt;” says Tobi Lütke, CEO of Shopify. Listen to Tobi Lütke’s &lt;a href=&quot;https://youtu.be/eMSqlQMk480&quot;&gt;great conversation&lt;/a&gt; with Stripe’s John Collison.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. I signed up to &lt;a href=&quot;https://www.berlin-triathlon.de/&quot;&gt;Berlin Triathlon&lt;/a&gt; (June 6-7) to challenge myself and train during winter. If you wanna join me (or join another event), just send me a email/message/comment and we can form an accountability group.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-29/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-29/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Evolving Software Engineering with AI</title><link>https://candost.blog/newsletter/mediations-28/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-28/</guid><description>Is the definition of software engineering changing with AI?</description><pubDate>Tue, 28 Oct 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been thinking about how the definition of software engineering has been changing with AI, as everyone is expected to do more.&lt;/p&gt;
&lt;p&gt;An engineering manager used to be the person focused on the team’s strategy, developing people’s skills, hiring, project management, etc.. They were deep into meetings and were the person who connected the dots across product, design, and engineering without actively coding on a project, but still reviewing the written code from time to time. Now, they also need to code themselves.&lt;/p&gt;
&lt;p&gt;A senior engineer who used to focus on bringing a somewhat ambiguous project or feature to completion now needs to lead a larger project together with fewer team members. A junior engineer who used to take smaller tasks is now expected to handle larger tasks (sometimes up to the previous senior level).&lt;/p&gt;
&lt;p&gt;What is behind all this stretch is the AI. The capacity AI has “freed up” needs to be utilized. Instead of leveraging the freed-up capacity to innovate, many organizations are squeezing more out of their people to increase efficiency.&lt;/p&gt;
&lt;p&gt;I don’t see anything new in the world when I look at the overall scenario. Every new tool that can affect the team’s productivity is always sought after. All these efficiency efforts must eventually translate into money (that’s where the current debate over AI is). The first step was always to exhaust existing capabilities while organizations tried to determine where and how to utilize the new capacity. We’re seeing the same with AI usage in software engineering. But what can we, as people who have been exhausted, navigate this change?&lt;/p&gt;
&lt;p&gt;Although definitions of roles and titles vary across organizations, the definition of software engineering doesn’t. That’s where I believe Dave Farley’s approach still holds and is sound. &lt;strong&gt;Dave says that software engineers have to be experts at learning and managing complexity.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Becoming an expert at learning has become much easier thanks to AI. AI can provide direct feedback on code, writing, system design, and more (although not 100% accurate; but hey, humans can’t provide 100% precise feedback either) before asking others to share feedback. With fast feedback cycles, we can increase efficiency and produce higher-quality work, which, in turn, reduces the effort others must put into sharing feedback. However, we can’t say the same about being experts at managing complexity—the other half of the heart of the craft.&lt;/p&gt;
&lt;p&gt;The more AI-produced code tries to make its way to production, the more we need to get better at managing complexity. Any codebase, including its structure, architecture, and patterns, must be consistent and simple so that AI—as well as humans—can easily follow it (with accurate instructions). If the AI-generated code increases the complexity, we need to know how to simplify it.&lt;/p&gt;
&lt;p&gt;Moreover, software engineering these days is less about writing code and more about reviewing the code that AI tools produce. Getting better at code review is another skill than writing the code, and it needs training. Maintaining critical judgment over AI results is as crucial as before.&lt;/p&gt;
&lt;p&gt;That’s why engineers must understand the fundamentals of software engineering (principles such as SOLID, modularity, and separation of concerns), architectural capabilities (such as maintainability, extensibility, and reliability) and general concepts (such as observability and monitoring). Without understanding the fundamentals of the craft, we can neither leverage AI effectively nor stay up to date with ever-evolving software engineering.&lt;/p&gt;
&lt;p&gt;As organizations extract efficiency with AI, the engineers who thrive will be those who double down on fundamentals to manage that complexity. Our roles are stretching, but software engineering’s definition remains constant: expertise in learning and managing complexity. Once we master that, AI can actually amplify rather than exhaust us. As Martin Fowler said, “Good programmers write code that humans can understand.” In the age of AI, good programmers ensure AI writes code that humans (and AI) can understand, maintain, and evolve.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Good&lt;/em&gt;&lt;/strong&gt;: &lt;a href=&quot;https://leerob.com/beliefs&quot;&gt;Beliefs of Lee Robinson&lt;/a&gt;. Although I believe one or two things differently, it’s a good list.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Better&lt;/em&gt;&lt;/strong&gt;: &lt;a href=&quot;https://www.experimental-history.com/p/thank-you-for-being-annoying&quot;&gt;Thank you for being annoying&lt;/a&gt; (also inspired one of my entries below).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Great&lt;/em&gt;&lt;/strong&gt;: Nothing great I found this week.&lt;/p&gt;
&lt;h2&gt;I wrote about&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;/journal/engineers-have-more-power&quot;&gt;As an engineer, you have more power than you think&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;/journal/admit-that-you-like-it&quot;&gt;Admit that you like it&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I added 10 new notes to &lt;a href=&quot;/notes/&quot;&gt;my Zettelkasten&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;P.S. The Mexico F1 GP was one of the best of this season. It was super fun!&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-28/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-28/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>As an engineer, you have more power than you think</title><link>https://candost.blog/journal/engineers-have-more-power/</link><guid isPermaLink="true">https://candost.blog/journal/engineers-have-more-power/</guid><pubDate>Wed, 22 Oct 2025 06:25:42 GMT</pubDate><content:encoded>&lt;p&gt;I consistently receive requests from the team to reduce tech debt. Every time, I say similar things. I want to share them here.&lt;/p&gt;
&lt;p&gt;As a software engineer, you have more power than you think.&lt;/p&gt;
&lt;p&gt;When you&apos;re coding for a new feature, you have the power to refactor a specific part of the codebase. You don&apos;t need any permission.&lt;/p&gt;
&lt;p&gt;When you see that reducing debt in a specific part of the codebase makes the next engineer&apos;s job faster and the results are visible quickly, you have the power to reduce tech debt. You don&apos;t need any permission.&lt;/p&gt;
&lt;p&gt;When you recognize that changing a system&apos;s architecture can enhance its reliability, maintainability, extensibility, or availability, you have the power to devise a structured solution and implementation plan, rather than waiting for divine permission.&lt;/p&gt;
&lt;p&gt;When you see that changing something in the codebase or in the tools we use will reduce cognitive load or maintenance efforts, you have the power to do so. You don&apos;t need permission.&lt;/p&gt;
&lt;p&gt;Most of these things don&apos;t need to be a separate work ticket with estimations. You can easily embed all of these into your existing work. If you are punished for doing something like that, then you&apos;re in the wrong environment.&lt;/p&gt;
&lt;p&gt;Don&apos;t forget, as an engineer, you make most of the decisions of organizations, although they might seem trivial at first glance. Each decision you make every day affects the future of the organization you&apos;re in.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/engineers-have-more-power/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/engineers-have-more-power/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Admit that you like it</title><link>https://candost.blog/journal/admit-that-you-like-it/</link><guid isPermaLink="true">https://candost.blog/journal/admit-that-you-like-it/</guid><pubDate>Fri, 17 Oct 2025 12:25:42 GMT</pubDate><content:encoded>&lt;p&gt;People are masters of complaint. Yet their feet keep walking the same path. They don’t surrender, retreat or abolish whatever they are not happy about. They are on a crusade with perennial whining.&lt;/p&gt;
&lt;p&gt;I, too, do the same. I complain about my job and my responsibilities. I hate doing certain things again and again. I complain about many things I’ve committed to in life, and now it feels like I have no time to do them all.&lt;/p&gt;
&lt;p&gt;But.&lt;/p&gt;
&lt;p&gt;But I know and I tell out loud: I love it. I just love it.&lt;/p&gt;
&lt;p&gt;I love that I’m failing to do them all. I love that I find it too stressful and difficult to resolve uncertainties or simplify complexities.&lt;/p&gt;
&lt;p&gt;If I had a second chance, I would do it again without regret.&lt;/p&gt;
&lt;p&gt;And you know what, everything becomes easier when you admit it.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/admit-that-you-like-it/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/admit-that-you-like-it/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Who Will Build Your Products Tomorrow?</title><link>https://candost.blog/newsletter/mediations-27/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-27/</guid><description>Chasing seniors alone creates an unsustainable system</description><pubDate>Tue, 14 Oct 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;One of my biggest concerns, and also &lt;a href=&quot;https://fortune.com/2025/08/08/ai-layoffs-jobs-market-shrinks-entry-level/&quot;&gt;a challenge many people are facing&lt;/a&gt;, is the reduction in the number of entry-level jobs, primarily due to AI; everyone is now looking for an experienced employee. Especially in a sector such as tech, this should be alarming because of basic math: fewer junior engineers means fewer seniors in the future.&lt;/p&gt;
&lt;p&gt;Considering our future needs for skilled and experienced talent, without investing in hiring junior talent and developing them, no organization will be able to find the necessary personnel to build its products. There is a myth that AI will take over all these jobs. I say myth not because I don’t believe in it, but also because of what Sam Altman &lt;a href=&quot;https://www.youtube.com/watch?v=JfE1Wun9xkk&quot;&gt;says&lt;/a&gt;: they want to build the AI that’s useful for humans (not the AI that &lt;em&gt;replaces&lt;/em&gt; humans).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Why do I believe organizations should continue to hire junior talent and invest in developing their skills? Isn’t it the responsibility of the person themselves?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is where things get tricky. If you recall the two previous Mediations (about the &lt;a href=&quot;/newsletter/mediations-21/&quot;&gt;intellect&lt;/a&gt; and &lt;a href=&quot;/newsletter/mediations-26/&quot;&gt;biases&lt;/a&gt; surrounding AI), learning with AI without any supervision or critical thinking is dangerous. When people &lt;a href=&quot;https://cdn.openai.com/pdf/a253471f-8260-40c6-a2cc-aa93fe9f142e/economic-research-chatgpt-usage-paper.pdf&quot;&gt;use ChatGPT to learn&lt;/a&gt; new things without critical judgment, they leave themselves at the mercy of AI.&lt;/p&gt;
&lt;p&gt;This is worrying because seniority in a profession doesn’t only mean the person has some information in their head, it means the person knows where to use that information and can decide based on facts and their experience. When we think about this concern, which is amplified by the fact that junior or graduate engineers are typically in their early 20s (&lt;a href=&quot;https://pmc.ncbi.nlm.nih.gov/articles/PMC2892678/&quot;&gt;the time when the prefrontal cortex, responsible for judgment and decision-making, is still developing&lt;/a&gt;), we will find ourselves surrounded by engineers making wrong decisions based on how AI guides them.&lt;/p&gt;
&lt;p&gt;There are a lot of resources and companies preaching to non-engineers to code with AI to build products or solve problems (and they &lt;em&gt;recommend&lt;/em&gt; their product for sure). While this is practically possible and will get even better over time, people still have to understand the underlying system. The product or a feature they build can be functional on the surface. However, when you dive deep, you find a product without a solid backbone holding it steady and ready for future iterations.&lt;/p&gt;
&lt;p&gt;When companies like Anthropic say 90% of code will be written by AI, many interpret this as eliminating human engineers entirely. This misses the critical point: that the remaining 10% and the supervision of the 90% requires experienced judgment. This judgment ensures that the product being developed has a steady foundation, is maintainable and extensible, while not full of security vulnerabilities.&lt;/p&gt;
&lt;p&gt;I strongly believe that AI can and will take over the majority of the hands-on coding part, where an engineer codes based on a pre-defined plan. For AI, coding is no different than answering in a language. A person gives an input, and AI translates it into another language. What is still required for humans to do is to (learn how to) create the plan for AI to execute. When we talked about the importance of proper planning in &lt;a href=&quot;/plan-slow-act-fast/&quot;&gt;Mediations #25&lt;/a&gt;, I didn’t mention AI at all. Yet, with AI, we need to plan enough before acting and writing very specific plans requires experience and knowledge that junior engineers lack.&lt;/p&gt;
&lt;p&gt;As junior engineers have no production-level coding or detailed planning skills yet, developing them needs consistent and deliberate practice, which practices like pair programming can provide (&lt;em&gt;I’ve found the most effective approach is having two engineers write a plan for AI together, then elaborate on the output as a pair&lt;/em&gt;). Makinh judgment calls during this pairing is where we train junior engineers and teach them the craft. Instead of junior engineers vibe-coding and making costly mistakes, we need to take the time to show them the way.&lt;/p&gt;
&lt;p&gt;Employers want to hire more people who possess high-quality reasoning skills and still need people to think critically so they can deliver high-quality products. All of this can’t be sustainable without a new generation taking over the flag. We still have the responsibility to train them and bring them into the workforce.&lt;/p&gt;
&lt;p&gt;Don’t forget, all seniors started somewhere, and there were always one or two people who showed the way. It’s time to be one of them for the next person. Hire a new graduate or a junior, or mentor someone to gain experience. You won’t regret it.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Good:&lt;/strong&gt;&lt;/em&gt; “Voyager 2’s Computer Command System has not been turned off since it first booted up about 48 years ago, making it the longest continuously operating electronic computer.” &lt;a href=&quot;https://spectrum.ieee.org/11-oddball-technology-records-you-probably-didnt-know&quot;&gt;11 Oddball Technology Records You Probably Didn’t Know&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Better:&lt;/strong&gt;&lt;/em&gt; &lt;a href=&quot;https://aeon.co/essays/the-planet-and-human-social-life-depend-on-peasant-farmers?utm_source=Aeon+Newsletter&amp;amp;utm_campaign=c86b21091d-EMAIL_CAMPAIGN_2025_09_26&amp;amp;utm_medium=email&amp;amp;utm_term=0_-19d630b572-838124504&quot;&gt;We need to protect peasants&lt;/a&gt;. They grow much of the world’s food, protect soil, water and biodiversity.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Great:&lt;/strong&gt;&lt;/em&gt; &lt;a href=&quot;https://sharif.io/anna-alexei&quot;&gt;Always invite Anna.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. &lt;a href=&quot;https://school.digitale-leute.de/bootcamps/ai-software-engineering&quot;&gt;I’ll be giving a few lectures for an AI Software Engineering Bootcamp&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-27/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-27/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Relying on AI too much</title><link>https://candost.blog/newsletter/mediations-26/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-26/</guid><description>Confirmation bias in AI usage leads to blind trust and costly errors. Learn how cognitive biases affect decision-making with AI tools and solutions.</description><pubDate>Tue, 30 Sep 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;The more I use AI, the more I realize that cognitive biases have a significant influence on my decision-making process. I unconsciously rely on Al’s output whenever I task it to do something and use the result as confirmation of my assumptions, thoughts, and ideas. The problem is that I have flaws, and neither my assumptions nor my ideas are always accurate.&lt;/p&gt;
&lt;p&gt;The problem is also apparent in the topics on which I consider myself knowledgeable. When I am using AI to think about an issue I’m facing at work (e.g., product or software problems) or debate on a topic, I don’t recognize AI’s mistakes because I lower my guard quickly. I trust it too much.&lt;/p&gt;
&lt;p&gt;I was talking with one of my colleagues, who is a good and experienced engineer. They were telling me about a problem Al introduced in the codebase while they were working on a new feature. They lost a day and a half to fix the problem.&lt;/p&gt;
&lt;p&gt;They didn’t initially catch the issue because it could only occur in edge cases. While guiding the AI, they had a flaw in their thinking and prompts, which the AI used it to build the problem into the system. Yet, the issue was an obvious one in hindsight.&lt;/p&gt;
&lt;p&gt;They used AI to refactor the codebase a few days earlier, and the AI did a remarkable job. The reliable result of AI output biased their judgment on the next task, and they overlooked an obvious problem, leading to major rework. My colleague expected (unintentionally) AI to do a good job, and they trusted the result (amplifying confirmation bias).&lt;/p&gt;
&lt;p&gt;My colleague is not a novice Al user. They are using AI every day in a variety of tasks, which I think also causes problems. The more AI tools get to know the person, the more the person trusts the result, the less they recognize the mistakes.&lt;/p&gt;
&lt;p&gt;The mutual confirmation loop reinforces confirmation bias, causing the person to overlook errors. If the person is working in a domain with high stakes, such as finance or healthcare, these situations can cause major problems and cost a fortune to recover from.&lt;/p&gt;
&lt;p&gt;While my colleague and I are knowledgeable in a field where we use AI, imagine juniors or novices who can’t even detect the issue due to a lack of knowledge. As they lack sufficient experience and rely more on AI to perform tasks (instead of learning themselves), building a reliable and safe system becomes more challenging.&lt;/p&gt;
&lt;p&gt;I know that these bugs can still occur even without Al. Yes. They will continue to happen, whether AI-generated or not. That’s why I consider AI tools as assistive to humans, not a decisive authority in itself. They supplement, not replace, humans.&lt;/p&gt;
&lt;p&gt;We still need to educate ourselves, learn the fundamentals of the craft, as well as recognize our cognitive biases. We need to nudge ourselves to challenge both our own results and those of AI. We still need mechanisms such as peer reviews, cross-validation (e.g., four eyes principle), and adversarial and critical testing.&lt;/p&gt;
&lt;p&gt;So, next time when you use AI, be aware that just because it produced a correct result before, it doesn’t mean it’ll do it the next time.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Good:&lt;/em&gt;&lt;/strong&gt; &lt;a href=&quot;https://jmarriott.substack.com/p/the-dawn-of-the-post-literate-society-aa1&quot;&gt;The dawn of the post-literate society and the end of civilisation&lt;/a&gt;. Screens and falling literacy are eroding deep reading and critical thinking, threatening innovation, democratic debate and the future of our civilization. I still can’t believe how little we read…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Better:&lt;/em&gt;&lt;/strong&gt; Written in 1899. &lt;a href=&quot;https://www.benning.army.mil/infantry/199th/ocs/content/pdf/Message%20to%20Garcia.pdf&quot;&gt;A Message to Garcia&lt;/a&gt; is a wonderful piece. I added “carry a message to Garcia” to my dictionary.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Great:&lt;/em&gt;&lt;/strong&gt; “&lt;a href=&quot;https://www.youtube.com/watch?v=2AMu-G51yTY&quot;&gt;Man cannot stand a meaningless life.&lt;/a&gt;” 38 mins with Carl Jung, the founder of analytical psychology, two years before his death. (On a side note, the interview style is very different than today’s interviews.)&lt;/p&gt;
&lt;h2&gt;Recently, I thought/wrote about&lt;/h2&gt;
&lt;p&gt;I didn’t publish anything. I’m working on a few pieces, but couldn’t polish them enough to share here. Next time!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. I don’t know how many times &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;I mentioned this blog post&lt;/a&gt; in real life.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-26/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-26/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Plan Slow, Act Fast</title><link>https://candost.blog/plan-slow-act-fast/</link><guid isPermaLink="true">https://candost.blog/plan-slow-act-fast/</guid><description>Plan thoroughly upfront to execute projects faster later.</description><pubDate>Tue, 16 Sep 2025 05:11:00 GMT</pubDate><content:encoded>&lt;p&gt;Although this text seems related to software development projects, most lessons are also applicable to projects like planning a wedding, renovating a kitchen, and writing a book. I marked lessons with bold.&lt;/p&gt;
&lt;p&gt;I’ve been managing several large, months‑to-years‑long, cross‑team projects. As these projects tend to go over schedule and budget, I learned to take a different approach: &lt;strong&gt;plan slow, act fast&lt;/strong&gt;. The bigger the project, the more planning I do.&lt;/p&gt;
&lt;p&gt;When we choose the Silicon Valley way and &quot;move fast and break things,&quot; we often discover flaws in our approach in the late stages and must rebuild the solution or create workarounds to address them. Moreover, teams’ estimates are substandard or often plain wrong, which exacerbates the situation by creating a false perception that we will finish early. Sometimes, all of these problems are together.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Moving fast and breaking things is probably one of the worst things that a large project team can do.&lt;/strong&gt; Rushing to start the implementation of a project guarantees that the project will go over schedule and budget. &lt;strong&gt;When problems are complex, they require a careful and precise approach.&lt;/strong&gt; Yet, we rarely take that approach to untangle the whole complexity.&lt;/p&gt;
&lt;p&gt;In software projects, product managers and designers often take time to &lt;strong&gt;understand the problem and prototype a few solutions to test their ideas&lt;/strong&gt;. It&apos;s a great approach to invalidate various proposals and choose a good direction. Yet, this is rarely mirrored on the engineering side. Engineers are sometimes involved early on in the product and design decisions, but they rarely touch code until implementation begins. Once the project kicks off, they act quickly, but end up moving slowly and often exceeding the schedule and budget. So, what can we do better?&lt;/p&gt;
&lt;p&gt;Once the team understands the complexity, &lt;strong&gt;they should identify the smallest repeatable module&lt;/strong&gt;. Imagine building a skyscraper. Consider building the whole thing at once; the project looks highly complex. But if the plan was to build one story of it, it appears simpler. So, the plan for the skyscraper, as building the same story over and over, makes it simpler. Although finding that module is difficult, once the team finds and builds the first one, the next iterations become easier and more predictable.&lt;/p&gt;
&lt;p&gt;Modularity also supports contingency planning. The reality is that something always goes wrong in a large project. I&apos;ve never worked on a project where everything worked as expected. That&apos;s why &lt;strong&gt;there must be a contingency plan and backup approaches.&lt;/strong&gt; Modularity helps with this because human brains are better at thinking in smaller pieces rather than comprehending the whole complexity. When we plan slowly, we consider risks carefully and choose the ones to guard against.&lt;/p&gt;
&lt;p&gt;When it comes to teams&apos; estimations, we need to change our approach. &lt;strong&gt;Instead of asking people to estimate the time, we need to examine any similar work that&apos;s been done before.&lt;/strong&gt; Humans are almost always wrong by a significant margin when it comes to predictions. Using previous data as a baseline and helping to anchor and adjust estimates is a more accurate way to build a timeline.&lt;/p&gt;
&lt;p&gt;The whole idea might sound like going against the &lt;a href=&quot;/bias-towards-action/&quot;&gt;bias toward action&lt;/a&gt; I advocate for. I still believe that learning comes from action. However, &lt;strong&gt;the learning should move to the beginning of the process: planning&lt;/strong&gt;. Learning from mistakes is cheaper in the early stages of a project compared to later stages. Examining and moving the solution of the most complex parts to earlier phases, prototyping in code, and building contingency plans keep the project on a realistic timeline and increase the chances of finish on time.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Good:&lt;/strong&gt; This one is for software engineers—&lt;a href=&quot;https://registerspill.thorstenball.com&quot;&gt;Joy &amp;amp; Curiosity Newsletter&lt;/a&gt;. I&apos;ve been following for a while. It gets better every time.
&lt;strong&gt;Better:&lt;/strong&gt; I&apos;ve been reading &lt;a href=&quot;https://surfingcomplexity.blog&quot;&gt;Lorin&apos;s blog about resilience engineering&lt;/a&gt; for a long time.
&lt;strong&gt;Great:&lt;/strong&gt; Nothing this time. Great things are rare.
​&lt;/p&gt;
&lt;h2&gt;Recently, I thought/wrote about&lt;/h2&gt;
&lt;p&gt;I didn&apos;t share any writing yet but I&apos;m thinking about one thing that I&apos;ll post an article soon:&lt;/p&gt;
&lt;p&gt;We can’t disconnect from our friends anymore. We carry emotional and relationship baggage with us wherever we go, often due to the influence of social media. We used to let go of friends when we moved on to somewhere else and found new ones on the way. We didn’t know what old friends were doing. Now, everyone we meet comes with baggage. We are in their life constantly and can’t disconnect at all because unfollowing on social media is considered rude (even though we might not see the person again).&lt;/p&gt;
&lt;p&gt;P.S. I wrote about &lt;a href=&quot;/leading-a-big-project-step-by-step/&quot;&gt;how engineering managers lead big projects before&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/plan-slow-act-fast/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/plan-slow-act-fast/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Growth of startups is often constrained by the economy</title><link>https://candost.blog/notes/84a/</link><guid isPermaLink="true">https://candost.blog/notes/84a/</guid><pubDate>Sat, 13 Sep 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/notes/92b/&quot;&gt;Similar to villages being poorer&lt;/a&gt;, startups also often fail due to a lack of talent, capital, etc. The only way to prevent failure is to increase demand. It will, in turn, increase the capital and enable the founder to hire and &lt;a href=&quot;/notes/92/&quot;&gt;divide the labor&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/84a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/84a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to create a tech strategy?</title><link>https://candost.blog/notes/84b/</link><guid isPermaLink="true">https://candost.blog/notes/84b/</guid><pubDate>Sat, 13 Sep 2025 16:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;Put a step-by-step plan, start small, and try to deliver value quickly.&lt;/li&gt;
&lt;li&gt;Have your budget in the strategy.&lt;/li&gt;
&lt;li&gt;Consider sickness &amp;amp; vacation in your plans.&lt;/li&gt;
&lt;li&gt;Consider the &lt;a href=&quot;/notes/37a/&quot;&gt;impact of side work&lt;/a&gt; on your plans.&lt;/li&gt;
&lt;li&gt;PoC and step-by-step guides are good.&lt;/li&gt;
&lt;li&gt;Know your audience.&lt;/li&gt;
&lt;li&gt;When you go to a board meeting, go with multiple options (and with your recommendation).&lt;/li&gt;
&lt;li&gt;Don’t put a wall of text in the presentation.&lt;/li&gt;
&lt;li&gt;Say &lt;a href=&quot;/notes/17f/&quot;&gt;&lt;strong&gt;three things&lt;/strong&gt;&lt;/a&gt; to leave on people’s minds and tie all of the rest to those three points, and address them.&lt;/li&gt;
&lt;li&gt;Don’t just mention risks, but also show your plans for addressing them. (e.g., &lt;a href=&quot;/notes/79/&quot;&gt;tech debt&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/84b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/84b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why are villages poorer than cities?</title><link>https://candost.blog/notes/92b/</link><guid isPermaLink="true">https://candost.blog/notes/92b/</guid><pubDate>Sat, 13 Sep 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Due to the lack of &lt;a href=&quot;/notes/92/&quot;&gt;division of labor&lt;/a&gt;, everyone ends up doing many things by themselves.
Due to time constraints, people often struggle to accumulate sufficient capital for growth, as the &lt;a href=&quot;/notes/88/&quot;&gt;cash flow&lt;/a&gt; is very low.
Due to low demand, people can’t generate enough income from a single income stream, regardless of their choice.
Due to the lack of access to the talent. There are not enough people around to take an active role in the business.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Many startups can’t afford to hire a person to delegate some tasks. Many founders suffer from burnout due to trying to do too many things simultaneously. The same rules apply there, too.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/92b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/92b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What you&apos;re NOT doing</title><link>https://candost.blog/notes/46e2/</link><guid isPermaLink="true">https://candost.blog/notes/46e2/</guid><pubDate>Wed, 10 Sep 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;“What am I not doing?” is a good question to ask when you’re &lt;a href=&quot;/notes/65/&quot;&gt;trying to do things&lt;/a&gt; and struggle to get results simultaneously. It’s also a good question to ask when you want to discover other options. Despite &lt;a href=&quot;/notes/1i1/&quot;&gt;creating discomfort&lt;/a&gt;, inverting the approach provides insights and reveals what you haven&apos;t been looking at.&lt;/p&gt;
&lt;p&gt;It’s a question to ask yourself at all times, even when things go well, and also when you get ambiguous feedback about what you’re trying to achieve.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;Professional growth&lt;/a&gt; at work demands finding what you’re not doing enough of for &lt;a href=&quot;/notes/5/&quot;&gt;promotion&lt;/a&gt;, especially if you don’t have a manager who’s helping you. This approach becomes &lt;a href=&quot;/notes/8j/&quot;&gt;necessary for managers&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46e2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46e2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Humans can&apos;t understand increasing scope well</title><link>https://candost.blog/notes/9c1/</link><guid isPermaLink="true">https://candost.blog/notes/9c1/</guid><pubDate>Mon, 08 Sep 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Exponential increases in scope create only a linear understanding in humans. When planning an event, a year ahead may seem far off. However, planning an event 5 years or 10 years ahead doesn’t feel 5x or 10x one year from now. We can’t comprehend the scope. Between 5 years and 10 years, there are five more years. However, both 5 years and 10 years seem very close to the human brain. We can neither visualize nor feel the real difference. This is called &lt;a href=&quot;https://www.lesswrong.com/s/5g5TkQTe9rmPS5vvM/p/2ftJ38y9SRBCBsCzy&quot;&gt;Scope Insensitivity&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19d/&quot;&gt;We struggle to split things into chunks and eliminate&lt;/a&gt;. Comprehending the full picture and seeing all effects is a big challenge.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/9c1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/9c1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Approaching growth when faced with competition</title><link>https://candost.blog/notes/29a1/</link><guid isPermaLink="true">https://candost.blog/notes/29a1/</guid><pubDate>Sun, 07 Sep 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Competition makes progress dynamic and demands rapid change. However, success ultimately slows down. You need time, a consistent and gradual increase in success while keeping a fast pace and dynamic processes. The result and gratification will come in small pieces and slowly. Focus on what matters and discard the noise. Keeping your head straight and relentlessly trying is what you need to do if you know you’re on the right track.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Competition always brings good results. &lt;a href=&quot;/notes/1i1/&quot;&gt;Without any contest, we can’t talk about any progress in humanity&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You need to &lt;a href=&quot;/notes/82/&quot;&gt;establish your fundamentals&lt;/a&gt; so you can handle both competition and growth challenges.&lt;/li&gt;
&lt;li&gt;You’ll need to &lt;a href=&quot;/notes/29/&quot;&gt;get comfortable with uncertainty&lt;/a&gt;. Trying to grow while facing competition will bring you many surprises.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; From Kinsale Capital’s Q1/2025 earnings call. The CEO said: In a competitive market, it’s going to be a little bit slower than in a less competitive market (referring to growth).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/29a1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/29a1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Quest for Happiness</title><link>https://candost.blog/notes/93/</link><guid isPermaLink="true">https://candost.blog/notes/93/</guid><pubDate>Sat, 06 Sep 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There are fundamental elements of happiness. At the door of happiness, the porter bounces you off without wealth, health, and &lt;a href=&quot;/notes/52d/&quot;&gt;friendship&lt;/a&gt;. Without a certain level of wealth (the basics of living, such as a secure place, basic clothes, food, clean water, etc.), happiness can’t be built. The level of wealth required to make one person happy changes, but beyond a certain threshold, the returns diminish. Despite health being one of the fundamentals and the absence of it definitely causing unhappiness, its existence still can’t guarantee happiness. There are many healthy and wealthy, but unhappy people in the world.&lt;/p&gt;
&lt;p&gt;The last layer of happiness is closely tied to compassion and &lt;a href=&quot;/notes/44g3/&quot;&gt;social relationships&lt;/a&gt;. It doesn’t mean that one &lt;a href=&quot;/notes/91/&quot;&gt;has to have friends around them&lt;/a&gt;; it’s about not feeling alone. Some people happily live in solitude, but they &lt;em&gt;never feel alone&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;That suggests there are layers to happiness. Happiness is an inner interpretation of wealth, health, and social relationships. Only understanding that level and finding it can bring happiness.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s)&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;For quite some time, I believed &lt;a href=&quot;/goals-and-existence/&quot;&gt;having goals and achieving them&lt;/a&gt; was key to happiness. I was wrong.&lt;/li&gt;
&lt;li&gt;The media &lt;a href=&quot;/notes/30b3/&quot;&gt;bloats the happiness of others&lt;/a&gt; and creates a delusion that everyone is happy but us.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Beyond Religion by Dalai Lama&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/93/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/93/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Compassion is the foundation of well-being</title><link>https://candost.blog/notes/94/</link><guid isPermaLink="true">https://candost.blog/notes/94/</guid><pubDate>Sat, 06 Sep 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;“Without another’s loving care, none of us would have lived more than a few days.”&lt;/em&gt; Although compassion begins within oneself, it is about caring for others’ problems (&lt;a href=&quot;/the-one-with-the-wrong-problem/&quot;&gt;not yours&lt;/a&gt;) and actively helping to resolve them without expecting anything in return and without any self-interest. The benefits of compassion are gaining happiness and relief through others. Instead of &lt;a href=&quot;/seek-goals-that-will-change-how-you-live/&quot;&gt;prioritizing our own goals&lt;/a&gt; and happiness, it’s about putting others’ happiness first, knowing that greater happiness will increase the happiness of society, including our own. Compassion is what can bring &lt;a href=&quot;/notes/93/&quot;&gt;all humans together&lt;/a&gt; around a single entity, “we,” and destroy the fundamental &lt;a href=&quot;/notes/90/&quot;&gt;rivalry&lt;/a&gt; and hatred of us vs. them.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Building compassion might not come easy. &lt;a href=&quot;/notes/41b2/&quot;&gt;Find the story behind someone’s behavior&lt;/a&gt;. &lt;a href=&quot;/notes/8d/&quot;&gt;Ask questions&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Beyond Religion by Dalai Lama&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/94/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/94/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Justice and compassion - to forgive is not the same as to forget</title><link>https://candost.blog/notes/95/</link><guid isPermaLink="true">https://candost.blog/notes/95/</guid><pubDate>Sat, 06 Sep 2025 16:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Physical or violent measures can only restrain others’ physical behavior, never their minds.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“To forgive is not the same as to forget. After all, if one forgets a wrong that has been done, there is nothing left to forgive!”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I still struggle to understand how justice can be applied with compassion and aimed at preventing the wrongdoer from committing the deed again. Yes, we can and should remove the death sentence and apply justice and set up punishments proportionally to the crime. Yet, it’s still a failure.&lt;/p&gt;
&lt;p&gt;I understand the arguments against a &lt;a href=&quot;/notes/94/&quot;&gt;compassionate approach&lt;/a&gt; to justice. But the Dalai Lama is right. The justice should be compassionate, recognizing that people can change. Probably that’s the half summary of the chapter. The other half is “&lt;em&gt;to forgive is not the same as to forget.&lt;/em&gt;”&lt;/p&gt;
&lt;p&gt;We need to separate action from the actor. How can we punish the action and forgive the actor? According to Adler, the human mind and body are one and the same. The only forgiving can happen person-to-person. When someone hurts another, the person can forgive, but the justice system will punish the action. That’s why I don’t see a way out besides educating people not to do the harmful action in the first place.&lt;/p&gt;
&lt;p&gt;Additionally, the punishment alone is not enough. Although we can put the most balanced justice system, the majority of perpetrators repeat their actions because our punishment system doesn’t prepare people to go back to life without a big struggle. I believe we should incorporate more compassion into how we apply punishment and enable perpetrators to have a better life after serving their sentence. Once the punishment is served, they shouldn’t seek to return to jail because they don’t feel they belong in the community outside of prison.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Forgiveness is within our control; &lt;a href=&quot;/notes/46g/&quot;&gt;focus on what you can change&lt;/a&gt;. Justice is no longer in our hands.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b6a/&quot;&gt;You need to face all your emotions head-on to be able to forgive.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Not everyone had the same life as you. People make mistakes. If you &lt;a href=&quot;/notes/46i/&quot;&gt;surround yourself with diverse people&lt;/a&gt;, you’ll already develop a habit of interacting with a variety of individuals and can build empathy more easily.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Beyond Religion by Dalai Lama&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/95/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/95/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Reading a lot vs. Reading Well</title><link>https://candost.blog/newsletter/mediations-24/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-24/</guid><pubDate>Tue, 02 Sep 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I took a short break from writing due to some family matters, which have left me feeling incomplete. These days, I’m trying to come back and build those broken habits once again.&lt;/p&gt;
&lt;p&gt;Although I didn&apos;t write much, I somehow had a lot of spare time for reading; 10 minutes here, 15 minutes there. It’s too short for writing but perfect for reading a few articles and books. Thanks to it, I caught up with the majority of the online articles I wanted to read, which were waiting on my endless reading list.&lt;/p&gt;
&lt;p&gt;During reading, I realized one thing I had tried to avoid: focusing on reading a lot of things.&lt;/p&gt;
&lt;p&gt;On my “About” page on my blog, there is a sentence I wrote: “I don’t care how many books I read.” This statement dilutes the importance of reading a lot and portrays reading well as a remedy.&lt;/p&gt;
&lt;p&gt;Reading a lot and reading well are both crucial elements of life. Reading a lot is a discovery; reading well is a settlement. Without discovering, one never knows where to settle. Once settled, wanderlust kicks in after a while, and one seeks to discover. It’s a constant tension.&lt;/p&gt;
&lt;p&gt;I’ve never stopped reading a lot of things. However, I slowed down discovery. These days, my wanderlust for reading new things is urging me to accumulate yet-another-reading-pile. This time, I’m not fighting back; I’m recovering my equilibrium.&lt;/p&gt;
&lt;p&gt;Meanwhile, during this break, here are the three things I’ve read, from good to great.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Good:&lt;/em&gt; Books are my main learning material. &lt;a href=&quot;https://andymatuschak.org/books/&quot;&gt;Andy challenges the approach of existing non-fiction books to learning&lt;/a&gt;. Something to think about… (I love Andy’s writing by the way)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Better:&lt;/em&gt; I re-read &lt;a href=&quot;https://annehelen.substack.com/p/did-your-parents-have-friends&quot;&gt;this&lt;/a&gt;. It’s on friendship, parents, and you. Read it and think about it.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Great:&lt;/em&gt; Somehow, I overlooked &lt;a href=&quot;https://www.lesswrong.com&quot;&gt;this community&lt;/a&gt;. It’s the community and the content I’ve been scouring for years. I’m reading non-stop for days.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Recently, I thought/wrote about&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I really, really, really can’t worry about the whole world. It’s not about becoming numb; it’s rather about staying sane. &lt;a href=&quot;/i-cant-worry-about-the-whole-world/&quot;&gt;I wrote about it&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The majority root cause of incidents in general is “people choosing the easy way,” as Lorin says. I &lt;a href=&quot;/the-root-cause-of-all-incidents/&quot;&gt;wrote a short one about it&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I mentioned this concept to my boss a few weeks back, and since then, we’ve been referring to it in our conversations. So, &lt;a href=&quot;/the-invisible-gun/&quot;&gt;I wrote a short one about it&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; As I’m in discovery mode these days, add a comment and send me what you&apos;ve found interesting lately.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-24/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-24/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Invisible Gun</title><link>https://candost.blog/the-invisible-gun/</link><guid isPermaLink="true">https://candost.blog/the-invisible-gun/</guid><description>A management concept I remind myself often. As a boss, you carry a gun. It&apos;s up to you to figure out which size.</description><pubDate>Fri, 29 Aug 2025 05:11:00 GMT</pubDate><content:encoded>&lt;p&gt;I started referring to one management concept. I refer to it often, also to remind myself when I am talking with people I’m working with. The concept is called an invisible gun. I don’t know where I read it on the Internet. The closest I could get to the source is &lt;a href=&quot;https://www.agilealliance.org/wp-content/uploads/2016/01/AgileAntipatterns-SampleChapter.pdf&quot;&gt;Adam Weisbart&lt;/a&gt; and Adam explains it well.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Still pointing the gun at him, I explained: “See, the trouble is, every manager has an invisible gun, whether he knows it or not. Some bosses carry big shotguns, while other, more self-aware managers carry small pistols. Regardless of the size, they all have them. Because of this gun, ‘suggestions’ often become ‘directives’ in the minds of employees. It’s not a boss’s fault necessarily, nor is it the fault of the employee; after all, we’ve been trained to listen to our bosses, and we have a financial incentive to do what the boss wants. We’d hate to get shot. No one wants to get a bad review, or worse, lose his job.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you have ever watched &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Office_(American_TV_series)&quot;&gt;The Office TV show&lt;/a&gt;, the whole show, 9 seasons and 201 episodes, is a testament to this analogy. There you see how people take great distances to avoid getting shot, even though their boss is a weirdo.&lt;/p&gt;
&lt;p&gt;I also had been in many situations, both as a manager and a direct report, where this analogy was 100% true. When I was on the barrel side of the gun (when talking with my manager), I chose my words wisely, as if saying anything wrong could cause problems. When I was on the other side (when talking with my direct reports), it wasn’t clear why the person was hesitant to explain their thoughts openly and freely. I &lt;a href=&quot;/bridging-the-gap-understanding-the-illusion-of-transparency-in-communication/&quot;&gt;wondered&lt;/a&gt; why I was not able to decipher the person I’m talking to and why they encrypt the conversation. I thought it was that person’s problem. But it wasn’t.&lt;/p&gt;
&lt;p&gt;The power dynamics of the relationship are imbalanced. The manager has the decision power over the direct report’s income and &lt;a href=&quot;/on-retaining-people/&quot;&gt;their future in the company&lt;/a&gt;. They can make a person’s life miserable or remarkable. The direct report doesn’t have this power.&lt;/p&gt;
&lt;p&gt;Anyone knowing this power imbalance will feel uncomfortable when they talk to their manager. Regardless of their relationship, authority will always be there to tip the balance to one side.&lt;/p&gt;
&lt;p&gt;As a manager, I would love to carry no gun, but it’s impossible as the whole idea of ‘working with a boss’ is embedded into our society and, as Adam says, ‘we have a financial incentive to do what the boss wants.’ However, I keep reminding myself of this concept, so I at least &lt;a href=&quot;/transparency-over-context/&quot;&gt;work on&lt;/a&gt; making the gun I’m carrying smaller and smaller, so people may sometimes forget it’s there.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/the-invisible-gun/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/the-invisible-gun/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Root Cause of All Incidents</title><link>https://candost.blog/the-root-cause-of-all-incidents/</link><guid isPermaLink="true">https://candost.blog/the-root-cause-of-all-incidents/</guid><description>How small mistakes often cause incidents, the importance of simple solutions, and leadership&apos;s role in fostering quality problem-solving. </description><pubDate>Wed, 20 Aug 2025 05:11:00 GMT</pubDate><content:encoded>&lt;p&gt;I used to be puzzled by complex problems that cause incidents. I used to think that service disruptions or unavailability were due to complicated implementations, complex approaches that require brain power, or network issues where reliability is always questionable. After coordinating dozens of incidents, I began to be puzzled over how so many small mistakes were leading to incidents rather than complex ones.&lt;/p&gt;
&lt;p&gt;Overlooked or straightforward implementations were the majority of the root causes. All of them looked like small mistakes in hindsight. Maybe it’s the nature of these situations: people often underestimate the complexity of solution design and approach, assuming everything is easy. Yet, the simplest solutions are the most complex ones as they require a thorough understanding of all fundamentals.&lt;/p&gt;
&lt;p&gt;In his blog post, &lt;a href=&quot;https://surfingcomplexity.blog/2025/08/17/easy-will-always-trump-simple/&quot;&gt;Lorin talks&lt;/a&gt; about why choosing the easy solution often trumps the simple ones. People opt for easy solutions due to &lt;em&gt;production pressure&lt;/em&gt; to deliver a piece of work within a deadline. Easy solutions are naturally the ones that are fastest to implement. Nobody has given the time to design the simplest solution.&lt;/p&gt;
&lt;p&gt;When we give enough time and chance to design the simplest, remarkable things happen. We’ve seen this various times in the partnership of Jony Ive and Steve Jobs. They also had production pressure, but Steve Jobs gave Jony the time and space to find the simplest solution from all angles, which led to inventing various things along the way. They never use the easy solution. But not every company is Apple. I don’t think the current Apple is the same as the one with Steve Jobs. These days, Apple has started to choose easy ones.&lt;/p&gt;
&lt;p&gt;Lorin, I think rightfully, also accepts the failure of &lt;em&gt;simple&lt;/em&gt; in the battle with &lt;em&gt;easy&lt;/em&gt;. People will always choose the easy option if leadership doesn’t push for a &lt;em&gt;simple&lt;/em&gt; solution and give the team time to think, experiment, and plan; even that sometimes means dropping everything and starting from scratch.&lt;/p&gt;
&lt;p&gt;That’s why we’ll always have incidents or crappy product experiences, and the majority will be caused by people choosing, or being forced to choose, the easy way.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/the-root-cause-of-all-incidents/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/the-root-cause-of-all-incidents/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Find the story behind the behavior</title><link>https://candost.blog/notes/41b2/</link><guid isPermaLink="true">https://candost.blog/notes/41b2/</guid><pubDate>Sun, 17 Aug 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You never know someone else’s story. When you find anyone difficult, &lt;a href=&quot;/notes/62b/&quot;&gt;there is always an underlying story or reason&lt;/a&gt;. Some people don’t understand why they behave the way they do and are unaware of &lt;a href=&quot;/notes/7b/&quot;&gt;their desires&lt;/a&gt;. &lt;a href=&quot;/notes/53d/&quot;&gt;Try to learn&lt;/a&gt; and &lt;a href=&quot;/notes/44g3/&quot;&gt;understand their story behind the scenes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For yourself: if you don’t know why you act in a certain way and what your underlying beliefs and reasons are, you won’t be able to change your behavior. &lt;a href=&quot;/notes/46h/&quot;&gt;Discover&lt;/a&gt; your &lt;a href=&quot;/notes/52/&quot;&gt;values&lt;/a&gt; and what you care about. Make them explicit to yourself.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/41b2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/41b2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Driving Empathy with our commonality as humans</title><link>https://candost.blog/notes/44g3/</link><guid isPermaLink="true">https://candost.blog/notes/44g3/</guid><pubDate>Sun, 17 Aug 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Our common humanity properties are related to mind, feeling, and thinking. It appears that we distinguish ourselves from other beings through the way we use our minds to direct our feelings and thoughts, in various ways—whether to understand our surroundings or interpret our internal struggles. Ultimately, &lt;strong&gt;we seek happiness and strive to avoid pain&lt;/strong&gt;. &lt;em&gt;All humans&lt;/em&gt; have this same drive. That drive looks different for people, but ultimately, it’s the same. Whether it is imagination or real things that our minds create, we all seek happiness. That’s how we can feel empathy for anyone. We need to share a common purpose to feel a &lt;a href=&quot;/notes/20l/&quot;&gt;sense of belonging&lt;/a&gt; and be part of a community. To the Dalai Lama, that common purpose appears to be seeking happiness and avoiding pain.&lt;/p&gt;
&lt;p&gt;Not the empathy part, but the rest looks/sounds very close to stoicism; I think they have a lot in common.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20l/&quot;&gt;To feel the whole world as part of our group&lt;/a&gt;, thinking that we all seek happiness and try to avoid pain, helps.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b2/&quot;&gt;Most of the stories behind why people behave in a certain way&lt;/a&gt; end up in either seeking happiness or avoiding pain.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30c1/&quot;&gt;Selfish goals&lt;/a&gt; are unattainable. The only way to get rid of them is to approach others with empathy.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Wealth of Nations by Adam Smith&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44g3/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44g3/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Division of Labor</title><link>https://candost.blog/notes/92/</link><guid isPermaLink="true">https://candost.blog/notes/92/</guid><pubDate>Sun, 17 Aug 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the most significant advancements in society&apos;s business came from the division of labor. There are three roles in a business: landlord, manufacturer, and laborer. Landlord and manufacturer are often one person (and usually the same). There is no division there. However, in manufacturing, labor is divided into multiple roles. When divided, the productivity of the labor is the multitude of the sum of the productivity of each person working alone. When everyone takes a distinct role and the product results from the combination of everyone’s combined effort, the output is more than the sum of what each person can produce. Let’s say 10 people are working in a manufacturing setting, and each can produce two units per day individually. With division of labor, they can make 1000 units per day (instead of 2 × 10 = 20). This is the gain of the division of labor. It’s also the reason that cities are much richer than the villages. Because there are not many people to divide the labor or produce something on a farm throughout the year. The farm work is seasonal; you can’t employ ten people all the time. Typically, one person handles most tasks on a farm, and the produce is limited to the efforts of one or a few people.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Although we’re discussing the division of labor on a grand scale, I think the separation is also applicable to teams within an organization. Landlord: Executives, Manufacturer: Team Leads, Laborer: Individual contributors. More on &lt;a href=&quot;/notes/84/&quot;&gt;84&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Once you know where you stand, it’s easier to &lt;a href=&quot;/notes/1i1/&quot;&gt;find ways to penetrate another&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Wealth of Nations by Adam Smith&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/92/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/92/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Fundamentals of increasing the quantity of work</title><link>https://candost.blog/notes/92a/</link><guid isPermaLink="true">https://candost.blog/notes/92a/</guid><pubDate>Sun, 17 Aug 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An increase in the amount of outcome/output comes from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Increase in dexterity&lt;/strong&gt;: Once a person learns how to do a job, they increase the quantity of output. Doing the same thing over and over again, &lt;a href=&quot;/notes/53e/&quot;&gt;understanding its characteristics&lt;/a&gt; and adjusting to it takes time, but helps produce a lot more than others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reducing context switching&lt;/strong&gt;: When the context changes, the person’s mind doesn’t go to it directly. It takes time to adapt to the new work, &lt;a href=&quot;/notes/74/&quot;&gt;become focused&lt;/a&gt;, and establish a new rhythm. This is irrelevant to dexterity. Sole changing context is already reducing the quantity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable one person to accomplish many tasks using machines and automation&lt;/strong&gt;: Machines undoubtedly increase the quantity. However, automation innovation and machines often stem from people who are doing the job and their laziness. When a person knows what they are doing, they will try to invent new ways to do less work. This laziness leads to innovation. #leadership (increase productivity, improve the outcomes/output) #investment (look at the CEO if they know what they are doing)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33a/&quot;&gt;Invest in growing your employees&lt;/a&gt; so their dexterity increases.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/82/&quot;&gt;Measure the productivity&lt;/a&gt; to make constant improvements.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Wealth of Nations by Adam Smith&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/92a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/92a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Belonging together to something increases likeness</title><link>https://candost.blog/notes/20l/</link><guid isPermaLink="true">https://candost.blog/notes/20l/</guid><pubDate>Sun, 17 Aug 2025 15:35:01 GMT</pubDate><content:encoded>&lt;p&gt;Regardless of its form, belonging to a place unites people, similar to belonging to a family. Not only kinship, but also people who look alike actually like each other more. Also, when people come from similar places or families, they like each other more. Commonalities increase belonging. This closeness in proximity peaks when we invite people to our homes. As homes are the most intimate places, people visiting homes as guests are liked more, and they feel they belong to a closer group after being invited, the family. When we want to increase unity or likeness, we can gradually invite people and involve them in dinner preparations. Acting like they are part of the family allows us to create stronger bonds, improving the relationship overall.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52d/&quot;&gt;For Genghis Khan, kinship alone wasn’t enough to belong; he united behind companionship&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Expats often form communities within themselves, and others &lt;a href=&quot;/notes/75/&quot;&gt;discriminate against them&lt;/a&gt; as both sides unite behind common locations.&lt;/li&gt;
&lt;li&gt;When people identify too strongly with their geographical location, &lt;a href=&quot;/notes/44k/&quot;&gt;polarization increases&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24a1/&quot;&gt;To unite people behind a common goal&lt;/a&gt;, find what they actually have in common.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20l/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20l/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>I Can&apos;t Worry About The Whole World</title><link>https://candost.blog/i-cant-worry-about-the-whole-world/</link><guid isPermaLink="true">https://candost.blog/i-cant-worry-about-the-whole-world/</guid><description>I reduced news overload with curated attention: focus locally and preserve compassion through selective awareness.</description><pubDate>Sun, 17 Aug 2025 05:11:00 GMT</pubDate><content:encoded>&lt;p&gt;When I wrote about how much I abstract myself from daily news (&lt;a href=&quot;/no-more-debate-with-latest-or-daily-news/&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;/my-experience-living-without-social-media/&quot;&gt;2&lt;/a&gt;, &lt;a href=&quot;/social-media-impaired-my-learning/&quot;&gt;3&lt;/a&gt;), many people asked me how I can stop worrying about a gazillion things happening in the world. I pondered whether I had become numb. I found out, over time, that I developed a high level of attention to certain things and serenity to worry less about many, many others.&lt;/p&gt;
&lt;p&gt;My attention became laser-focused on what’s in my immediate surroundings or what’s influencing them. Instead of worrying about what’s going on thousands of kilometers away, I narrowed down my worry to one to two thousand kilometers. I still care about what’s going on in far lands. Yet, I choose ignorance; I prefer not to hear them. When I say this aloud, it sounds wrong, doesn’t it?&lt;/p&gt;
&lt;p&gt;It’s wrong only if knowing problems far away brings any benefit to the people there or me. If knowing what’s going on helps me act on issues with my actions’ success rate higher than, let’s say, 5%, then what I’m doing is wrong. Let me say again: 5%. It’s a low bar.&lt;/p&gt;
&lt;p&gt;The best I can offer is either financial assistance or attending a protest. The last protest I attended was “Occupy Gezi” in 2013. Although I find protesting people admirable and support them, I can’t see a huge influence when the protests focus on issues in faraway lands. I don’t know what protesting Putin or Trump in Berlin would achieve. We can argue that our protests put pressure on our government to act, but I rarely see any successful results.&lt;/p&gt;
&lt;p&gt;On the money side, I already have a recurring donation to certain places and still do extra whenever I can. Even with this, knowing minor problems in faraway lands every day doesn’t change much. Instead, when I can combine monetary help with other support for issues nearby, then they become more effective.&lt;/p&gt;
&lt;p&gt;In addition, I choose ignorance because the more I know, the less I act. It feels overwhelming due to &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Paradox_of_Choice&quot;&gt;the paradox of choice&lt;/a&gt;—increasing anxiety when there are many things to choose from. I can’t worry about all the things happening around the world because I have one life to live (sounds selfish, doesn’t it?). I can’t protest against all political decisions, wars, and more because I have a family to feed. I have certain things I care about, and I can focus on helping with them as much as I can. The rest, I can’t do much; so, instead of cognizant inertia, I choose illiteracy on the concerning topic.&lt;/p&gt;
&lt;p&gt;Also, knowing all causes &lt;a href=&quot;https://media-studies.com/desensitisation/&quot;&gt;desensitization&lt;/a&gt;—reducing the psychological arousal to concerning events and lowering the likelihood of helping victims. The more I know, the more I normalize what should be abnormal. My threshold to act on issues increases, and I stop acting on anything because I see them all day, every day. I want bad things to be still unusual.&lt;/p&gt;
&lt;p&gt;What puzzles me is how people choose the other way: high knowledge and no action. It’s our reality. The interconnectedness of the world has led to it, and it’s worsening continuously.&lt;/p&gt;
&lt;p&gt;The world wasn’t interconnected this much for thousands of years. We had no idea what was happening even in our close family’s lives until we saw them face-to-face and they told us what had happened. Now, the majority of humans are connected and learn when something is wrong, regardless of where. While we survived for thousands of years without knowing what was happening hundreds of kilometers away, today’s reality is different; a reality I can’t deny.&lt;/p&gt;
&lt;p&gt;I can’t deny it, but the problem is that we still don’t know how to live with this much interconnectedness and information overload. Therefore, we need to explore various approaches to learn how to play with the cards we have.&lt;/p&gt;
&lt;p&gt;Hence, I’m taking a stand that many may find unorthodox. Instead of creating an illusion for myself, I intentionally don’t learn about certain things so I can focus on helping with what I care about every day. That means I carefully curate my news feed, ignore a lot of news, and don’t follow micro news. Instead, I want to understand the immediate things that directly affect my life or the lives of my loved ones, and the long-term trends and movements that change the direction of a large population (hence the world).&lt;/p&gt;
&lt;p&gt;We might argue that whatever happens on the other side of the world affects me whether I like it or not. True. When the US President announces a trade bill, it, of course, affects me. However, there is nothing I can do about it when the day this news hits the headlines. I neither live in the US nor am I a US citizen who can vote, nor do I engage in any trade myself. I have practically &lt;em&gt;zero&lt;/em&gt; influence. Knowing all the details of the trade bill won&apos;t change anything in my daily life compared to learning it vaguely. Therefore, I spend time understanding how it will change the world order and whether I should adjust how I position myself in the new movement.&lt;/p&gt;
&lt;p&gt;I hold a specific position in life. The reason I’m writing here about the struggle of living, mediating between many issues, learning various things, is my ethical stand: I care about humanity. Without actively luring anyone into any political side, I’m trying to bring a perspective that hopefully can slightly impact someone’s life (I think I barely succeed in that). I’m focused on people surrounding me; trying to bring joy and peace to their lives (which in itself is a really demanding task that I still don’t succeed at) and make their lives a little better every day so they return the favor to someone else, and eventually, we can reach masses of compassion.&lt;/p&gt;
&lt;p&gt;I try to stand with anyone around me who brings peace and shows compassion. I can’t fly to Taiwan to support the oppressed, or I can’t go to Gaza to bring food with my hands to many orphans. Yet, I also know the power of the words that I write here. I know these words influence people (so far, very few). The words that might change people whose names I don’t even know.&lt;/p&gt;
&lt;p&gt;I know that certain groups will try to oppress and dominate others in all parts of the world. These groups need to be prevented somehow. The only people who stand against them are often the people who are closest to the problem. We can argue that we can create international pressure, but I don’t believe it works in this age (I am probably wrong. Prove me wrong, please). Look at Russia and Israel, the conflict-ridden countries of today. The pressure I can create here on Putin or Netanyahu by active protesting doesn’t even make a dent. I’m not a pessimist. Quite contrary, what I’m trying is the most optimistic approach I could find.&lt;/p&gt;
&lt;p&gt;Here is my optimism: Imagine that you somehow make the place around you a little better. Then your next street neighbor does the same after seeing you. Then their neighbor replicates the behavior. We start a chain of compassion. This compassion chain can spread everywhere in enough time. It is very slow progress and can take centuries. But any other approach is the same; the mass changes always need, at least, decades.&lt;/p&gt;
&lt;p&gt;While abstracting myself from the distant problems I can do nothing about, I create a headspace for the problems around me. Instead of spending hours learning about anything going on at the other corner of the world today, I can learn much more about what’s going on in the city/country I’m living in and can act on it. That said, I’m not recommending my approach to anyone. I know that this type of living is not for everyone.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/i-cant-worry-about-the-whole-world/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/i-cant-worry-about-the-whole-world/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Train Yourself Under Work Deadlines</title><link>https://candost.blog/newsletter/mediations-23/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-23/</guid><pubDate>Tue, 24 Jun 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;You finish one piece of work and look what’s next and see there are thousands of things waiting for you. It’s a never-ending story. Features pile up, deadlines look at you, and the pressure to go faster never lets up. Simultaneously, the need to train yourself and upskill (especially as AI transforms how we work) has never been more urgent. Your manager asks you to spend time training, but never clarifies if that’s more important than the feature you have to deliver. So, you default back to delivering the feature because if you don’t do that, you might find yourself in trouble.&lt;/p&gt;
&lt;p&gt;Meanwhile, if you ask any manager, they will tell you up-skilling is key to survival, especially for knowledge workers, as AI reshapes careers. Even with this awareness, they still don’t give any time block for training. When you’re sprinting from one release to the next between tight deadlines, who has hours to spare for training modules? If your manager is laser-focused on output, training feels like a “nice-to-have,” not a “must-do.” It’s easy to put off learning until “things calm down,” which is never.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The key is making learning work within your existing workflow rather than against it&lt;/strong&gt;. Integration is everything. Apply what you’re learning directly to your current projects.&lt;/p&gt;
&lt;p&gt;Let’s say you’re a software engineer juggling code reviews, feature development, and meetings while trying to stay up-to-date with testing best practices and push yourself to do more with AI. Instead of blocking out a whole afternoon for training (which never happens), use an AI-assistant to explain to you testing best practices and experiment with the assistant’s suggestions for additional test scenarios for your new feature, learning about boundary testing and mocking strategies in the process. While coding with AI, ask AI to explain to you the concepts, and mix practice with theory. This way, you gain both theoretical and practical knowledge while still advancing your work. And you shouldn’t stop there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Form an unofficial “learning pod” with your teammates where everyone shares insights, holds each other accountable, and swaps tips on what you learned&lt;/strong&gt;. Don’t wait for your manager to organize this. Learning pods turn individual learning into a team advantage. These meetings don’t have to be big. A thirty-minute one-on-one sessions also work. You can share these testing patterns you’ve discovered with another engineer on your team and brainstorm what else you can do, turning the session into a mutual learning opportunity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Once you’re ready, show your approach to your manager and ask for support&lt;/strong&gt;. &lt;a href=&quot;https://www.hbs.edu/ris/Publication%20Files/25-045_1c5a1d13-a61d-41d2-b8b4-2e5971ea23e0.pdf&quot;&gt;Research&lt;/a&gt; shows that middle managers make or break training engagement. Teams with proactive managers—those who champion learning and can actually connect it to career growth—see much higher participation.&lt;/p&gt;
&lt;p&gt;Whether your manager is one of these types or not, you can take the first step without consulting your manager and surprise them with the result. They will see you still delivering while learning and contributing to others’ growth, too. This approach will help you get buy-in for dedicated learning time (when needed) and connect the training to team objectives. Frame it as an investment in better delivery, not a distraction from it.&lt;/p&gt;
&lt;p&gt;There’s no perfect formula for balancing delivery and learning. The reality is messy, and the pressure to ship isn’t going away. But integrating learning directly into existing work will help you adapt to industry changes, while the cost of standing still is rising with AI. The organizations and individuals who thrive will be those who make learning a habit, not a luxury.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Good&lt;/em&gt;: I will look, understand, act on the survey results from Lenny: &lt;a href=&quot;https://www.lennysnewsletter.com/p/how-tech-workers-really-feel-about&quot;&gt;How tech workers really feel about work right now&lt;/a&gt; + many things resonate a lot.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Better&lt;/em&gt;: &lt;a href=&quot;https://www.theguardian.com/tv-and-radio/2025/jan/17/not-second-screen-enough-is-netflix-deliberately-dumbing-down-tv-so-people-can-watch-while-scrolling&quot;&gt;Is Netflix dumbing down the TV Series so you can watch it easier when you scroll through your Instagram/TikTok&lt;/a&gt;? I rarely watch Netflix, but for other reasons.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Great&lt;/em&gt;: I found nothing great this time. Great things should be rare. Finding one is a blessing and requires a bit of luck.
​&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; I&apos;ll be speaking at two conferences in July. ​&lt;a href=&quot;https://ti.to/wearedevelopers/world-congress-2025/discount/WWC25_JOINME&quot;&gt;Click here to join me​ (with 10% Discount)&lt;/a&gt; at WeAreDevelopers World Congress. &lt;a href=&quot;https://ticket.apidays.global/event/apidays-munich-2025/d6e0279c-a0f9-49c9-ab25-3caba9b31943/cart?coupon=IKNOWCANDOSTDAGDEVIREN&quot;&gt;​Click here to claim your 100% discount&lt;/a&gt; to join me​ at API Days Munich.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-23/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-23/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Deglobalizaiton</title><link>https://candost.blog/newsletter/mediations-22/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-22/</guid><pubDate>Tue, 10 Jun 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;You probably heard the word globalization countless times. But these days, after decades of pursuing globalization, we&apos;re chasing deglobalization.&lt;/p&gt;
&lt;p&gt;Rather than simply being the opposite of globalization, deglobalization is a deliberate movement toward less connected societies characterized by powerful nation-states prioritizing local solutions and border controls over global institutions and free movement.&lt;/p&gt;
&lt;p&gt;Following the Industrial Revolution and World Wars, there was a shift toward increased interconnectedness between countries and culture, when institutions like the European Union were founded.&lt;/p&gt;
&lt;p&gt;Now, the time is changing again toward a more closed society—countries are leaning toward becoming self-sufficient as the fear of &quot;losing authenticity&quot; and &quot;losing the race&quot; becomes stronger.&lt;/p&gt;
&lt;p&gt;However, the caveat is that it&apos;s not easy, especially due to the Internet and technological advancements. Anyone can still learn what&apos;s going on on the other side of the globe in a second, even when the borders are closed.&lt;/p&gt;
&lt;p&gt;Right-wing deglobalization populists are afraid of losing control due to the Internet. However, they still have a means of control: migration policies.&lt;/p&gt;
&lt;p&gt;While countries attempt to close their borders under the umbrella of boosting internal talent, they have begun to stagnate in technological advancements. The best talent doesn&apos;t follow borders or boundaries. If anyone is skilled at the job and it&apos;s a high-demand one, all countries will still want to acquire them, regardless of whether they make it difficult or not.&lt;/p&gt;
&lt;p&gt;By now, you probably know that this newsletter doesn&apos;t always provide specific steps to take; its primary purpose is to take a step back and offer you a timeless idea. Yet, I still ask the question of &quot;What can I do in this era of deglobalization?&lt;/p&gt;
&lt;p&gt;Understanding the whole system is almost impossible. Any prediction can be proven wrong in an instant. All we can do is to know what we aim for in life, follow a purpose, and ensure that what we chase is in high demand. If that makes us feel we don&apos;t belong where we are or that requires a change, we still have the opportunity to migrate to somewhere else.&lt;/p&gt;
&lt;p&gt;Meanwhile, we must follow how policies evolve and their impact on our daily lives, work, and relationships is crucial. Therefore, we have to continue to read, analyze, and reposition ourselves again and again and again.&lt;/p&gt;
&lt;p&gt;Let me know your observations on deglobalization. Just hit reply on this email.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;While we&apos;re talking about demographic shift and migrations, what is our ethical obligation to refugees? Read a good essay: &lt;a href=&quot;https://aeon.co/essays/a-philosophical-view-of-our-ethical-obligations-to-refugees&quot;&gt;Moral Refuge​&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=tybOi4hjZFQ&quot;&gt;​A better breathing exercise&lt;/a&gt; for instant relaxation. Read the video description before you begin. (&lt;a href=&quot;https://bakadesuyo.com/2025/01/how-to-be-healthier&quot;&gt;A related article from someone else&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&quot;Alignment is the difference between progress and stagnation.&quot; Great post: &lt;a href=&quot;https://buildrightside.com/autonomy-alignment&quot;&gt;Alignment &amp;gt; Autonomy&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Recently, I Wrote About&lt;/h2&gt;
&lt;p&gt;I have a weekly Sunday ritual where I close out the week on my small agenda and write my weekly promises to myself for the upcoming week + some other habit tracking stuff. This ritual has been working so far for ~6 months. &lt;a href=&quot;/a-weekly-planning-ritual-that-works/&quot;&gt;I wrote a post about it&lt;/a&gt;.
​&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; I&apos;ll be speaking at two conferences in July. ​&lt;a href=&quot;https://ti.to/wearedevelopers/world-congress-2025/discount/WWC25_JOINME&quot;&gt;Click here to join me​ (with 10% Discount)&lt;/a&gt; at WeAreDevelopers World Congress. &lt;a href=&quot;https://ticket.apidays.global/event/apidays-munich-2025/d6e0279c-a0f9-49c9-ab25-3caba9b31943/cart?coupon=IKNOWCANDOSTDAGDEVIREN&quot;&gt;​Click here to claim your 100% discount&lt;/a&gt; to join me​ at API Days Munich.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-22/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-22/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>A Weekly Planning Ritual That Works</title><link>https://candost.blog/a-weekly-planning-ritual-that-works/</link><guid isPermaLink="true">https://candost.blog/a-weekly-planning-ritual-that-works/</guid><pubDate>Fri, 30 May 2025 11:33:00 GMT</pubDate><content:encoded>&lt;p&gt;For a long time, I’ve been searching for a planning methodology that fits my life. I delved into bullet point journals, to-do lists, daily notes, and &lt;a href=&quot;/concluding-my-struggle-with-note-taking-systems-and-apps-finally/&quot;&gt;the Obsidian rabbit hole&lt;/a&gt;. None of them worked. I followed some for months, but never felt like they fit into how my brain and life work. Until I created my own system, combining the best of all things I tried. Now, every Sunday around 21:30, I go to my desk, take my physical agenda, recap the last week and plan the next one. I can’t say this system will work for everyone, but I’m sure it will give ideas to a few.&lt;/p&gt;
&lt;p&gt;The system I created takes all the pieces from different planning systems. It contains to-dos, calendar, mindfulness, checklists, reflection, promises, and tracking. It’s a combination of ideas that fit one week into two pages of a pocket-sized notebook.&lt;/p&gt;
&lt;p&gt;It’s essential for me that this is &lt;strong&gt;not&lt;/strong&gt; a digital system. The pen and paper, and limitations of the size of the agenda give constraints. When limitations are removed, creativity and focus go with them. Most digital tools offer flexibility by eliminating these constraints, providing a sense of pseudo-creativity when it comes to planning. Additionally, the pocket-sized agenda allows me to carry it everywhere, preventing me from reaching for my phone for every single thing.&lt;/p&gt;
&lt;h2&gt;Agenda Layout&lt;/h2&gt;
&lt;p&gt;I use a &lt;a href=&quot;https://www.leuchtturm1917.com/weekly-planner-notebook-2026-18-months-ruled.html&quot;&gt;Leuchtturm A6 weekly planner&lt;/a&gt; with an extra pen loop to ensure I always have a pen with it. Although the Leuchtturm weekly planner’s page layout looks a little different, I customize each week in the following setup.&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;image-cols-2&quot;&amp;gt;
&amp;lt;img src=&quot;/images/content/posts/a-weekly-planning-ritual-that-works/1.jpg&quot; alt=&quot;Weekly Calendar Page&quot;&amp;gt;
&amp;lt;img src=&quot;/images/content/posts/a-weekly-planning-ritual-that-works/2.jpg&quot; alt=&quot;Weekly Planning Checklist, Promises, Reflections&quot;&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;Seeing the whole week at once and the quality of the paper and agenda are the reasons I chose Leuchtturm. At a glance, my layout gives everything I need to plan for the whole week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Days&lt;/strong&gt; section to write down important events, exercise plan, and crucial TODOs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weekly Focus&lt;/strong&gt; for mindfulness&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reading/Listening to/Learning&lt;/strong&gt; section to track progress&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pre-week Checklist&lt;/strong&gt; to ensure I don’t miss anything during the ritual&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weekly Promises&lt;/strong&gt; to push myself out of my comfort zone&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reflections&lt;/strong&gt; to retrospectively look at the last week&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once I place the layout, I focus on checking all items on the Pre-week Checklist one by one. The items inside are not for the week, but for the planning ritual itself. Although the checklist fulfills its job within the next 15-30 minutes, it ensures I don’t miss anything during the ritual. Once all items are checked, the ritual comes to an end.&lt;/p&gt;
&lt;p&gt;After the layout is set, I begin by recapping the last week.&lt;/p&gt;
&lt;h2&gt;Recapping the Previous Week&lt;/h2&gt;
&lt;p&gt;Without looking back, I would be fooling myself to plan the next week well. Retrospection brings learning: learning from mistakes, learning from unexpected events, and learning about what has happened both within and outside my control, as well as what I did well. That includes assessing how much I was able to stick to my habits and my budget.&lt;/p&gt;
&lt;h3&gt;Habit Tracking&lt;/h3&gt;
&lt;p&gt;One of the things I learned from Jerry Seinfeld’s chain method and James Clear’s Atomic Habits was to &lt;a href=&quot;/seek-goals-that-will-change-how-you-live/&quot;&gt;track the things I want to do and get better&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Therefore, I try to track habits as much as possible. However, sometimes, I forget to mark some habits as completed in my habit tracker. During this ritual, I complete the previous week’s missing tracking. Because if I don’t, I’ll never remember them in the future. So, this step ensures that I track my habits at least once a week—for my memory, it is a good time span to remember.&lt;/p&gt;
&lt;h3&gt;Financial Tracking&lt;/h3&gt;
&lt;p&gt;I did budgeting for a while and tried to plan all my spending with apps like YNAB, but it didn’t fit my lifestyle. I was stressed while trying to maintain a budget. As I don’t spend money unnecessarily, don’t have any debt, and am privileged enough not to need a tight budget, I&apos;ve abandoned budgeting.&lt;/p&gt;
&lt;p&gt;Instead, during this ritual, I look at what I spent money on in the last week and learn from it. If I had an impulse buy, I would acknowledge it and try to prevent myself from making it in the future. If I had an unexpected big payment, I would try to learn and increase my savings goal to put extra money aside for the next unexpected event.&lt;/p&gt;
&lt;p&gt;I also check on my investments and review their performance. I don’t follow the financial market daily as it is volatile. I instead look for substantial changes in my investments and observe if I need to set time aside during the week to reassess any situation.&lt;/p&gt;
&lt;h3&gt;Reflections&lt;/h3&gt;
&lt;p&gt;Once I complete the tracking, I use the empty section on the bottom right to write my reflections on the last week.&lt;/p&gt;
&lt;p&gt;Reflections mostly focus on understanding if the plan for the week was challenging, whether my promises were impossible to achieve, and whether the events were overwhelming. Evaluating the previous week &lt;a href=&quot;/journal/retrospective-look-change-strategy/&quot;&gt;allows me to set the upcoming week more realistically&lt;/a&gt;, which is what I do next.&lt;/p&gt;
&lt;h2&gt;Plan the New Week&lt;/h2&gt;
&lt;p&gt;After a retrospective look at the last week, I can usually position myself better. I begin with routine tasks and planned events, and then gradually move on to my ambitious wishes.&lt;/p&gt;
&lt;h3&gt;Event Prep &amp;amp; Scheduling&lt;/h3&gt;
&lt;p&gt;When I sit down to plan the week ahead, I often have a few events already scheduled. Although all are always on my Google Calendar, I still write them down on the left side under the day. These events include meeting with a friend, joining a meetup, or going to a concert.&lt;/p&gt;
&lt;p&gt;The purpose is to know how much time and headspace I will have left for the day and the rest of the week. If I already plan to attend a meetup on Tuesday, I know I won’t have time in the evening for something else. If I know I will have to sleep late on Saturday, I don’t plan a workout for the early morning on Sunday.&lt;/p&gt;
&lt;p&gt;Once events are on the calendar side of the agenda, I know what I can plan for workouts.&lt;/p&gt;
&lt;h3&gt;Workout Schedule&lt;/h3&gt;
&lt;p&gt;I used to be indecisive in the mornings. While trying to decide, I lost time and, along with it, my motivation. I do not want to find myself in a limbo of “Which workout should I do today?” when I wake up. That’s the reason I plan what workout I will do each day and choose my rest day(s). The main goal is to decide for my future self.&lt;/p&gt;
&lt;p&gt;It is easier for me to follow the plan if I have already decided and distributed the workouts to the days. I sometimes change the plan during the week, but only when I have a specific reason. I might shift a rest day when I feel sick or have muscle pain, or shuffle it with another workout, but I still stick to the workouts as much as I can.&lt;/p&gt;
&lt;p&gt;Once the events and workouts are planned, the time comes for what I want to do beyond my routine life.&lt;/p&gt;
&lt;h3&gt;Weekly Focus&lt;/h3&gt;
&lt;p&gt;I choose one trait to focus on during the week. This is neither a goal nor something to complete in a day or two; it’s a continuous mindfulness exercise, something to keep in mind throughout the week.&lt;/p&gt;
&lt;p&gt;A weekly focus becomes even more powerful when it lasts for a few weeks.&lt;/p&gt;
&lt;p&gt;For example, a few months ago, my focus was “write without self-judgment or self-criticism” for a few weeks. During that time, whenever I had a pen at hand, I wrote whatever came to my mind. When I caught myself thinking, “This text doesn’t make sense,” or “I produce terrible ideas,” or “delete everything and find another angle,” I diverted my attention away. The focus was to keep writing without self-destruction.&lt;/p&gt;
&lt;p&gt;The important thing is to have mindful moments and focus on what truly matters while making progress on weekly promises.&lt;/p&gt;
&lt;h3&gt;Weekly Promises&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;If I have to choose the most important part of weekly planning, I would choose my weekly promises because these promises bring ambition to my life.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Until setting promises, everything is &lt;em&gt;still&lt;/em&gt; a routine life for me. Nothing ambitious; only the routine is more organized. With three weekly promises I make to myself, I raise the bar.&lt;/p&gt;
&lt;p&gt;You can think of these as goals, but using the word &lt;em&gt;promise&lt;/em&gt; gives a different meaning. If I promise myself to do something by the end of the week, I try my best to achieve it. It also forces my hand &lt;strong&gt;not&lt;/strong&gt; to do other things. That’s the whole point.&lt;/p&gt;
&lt;p&gt;In a given week, I may want to do a hundred things, but I deliberately focus on my promises and avoid the rest. One example from my previous promises is “Finish &lt;a href=&quot;/how-to-delegate-anything-successfully/&quot;&gt;Mediations newsletter’s 13th issue&lt;/a&gt;.” I always send the &lt;a href=&quot;/newsletter/&quot;&gt;newsletter&lt;/a&gt; on Tuesday, and the promise was to make it ready on Sunday, two days before. During the week, that’s what I focused on and worked on to bring to the finish line. That required me not to do many other things, such as binge-watching a TV series or watching random YouTube videos. When I had to choose one, I knew what I had promised myself. By deciding on one promise, I &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;eliminated many other decisions&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Ending the Ritual&lt;/h2&gt;
&lt;p&gt;Once the weekly promises are set, I briefly scan the whole plan again. I ensure that everything on my checklist has a ✔︎ on it. If yes, I’m ready for the week. I close the notebook and go to sleep.&lt;/p&gt;
&lt;p&gt;During the week, I regularly check my notebook to remind myself of my promises. Whenever I find myself sitting idly or binge-watching random YouTube videos, I look at my agenda and pull myself to keep my promises.&lt;/p&gt;
&lt;p&gt;Sunday evenings are &lt;a href=&quot;/the-power-of-ritualization-rituals-vs-routines/&quot;&gt;my ritualistic moment&lt;/a&gt;—my last 15-30 minutes before I go to bed. The ritual mentally closes my week and prepares me for the next; then I sleep in peace.&lt;/p&gt;
&lt;p&gt;And with this post being published, I kept another promise to myself. ✔︎&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/a-weekly-planning-ritual-that-works/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/a-weekly-planning-ritual-that-works/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On AI vs. Intellect</title><link>https://candost.blog/newsletter/mediations-21/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-21/</guid><pubDate>Tue, 27 May 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I keep thinking about how AI is changing my life and where I should be cautious. Although I’m not against using AI to improve my life, my hobbies, and my work, I’m hesitant to apply it in some other areas, mostly gathering information and learning. Considering the history, I’m unsure whether we gain an advantage.&lt;/p&gt;
&lt;p&gt;If we look back, the TV changed the world in a way nobody could have imagined. &lt;strong&gt;People trusted whatever they heard on TV&lt;/strong&gt; (which they still do today) as it became a single source of information for many (and still is). After decades, only the Internet could dethrone TV.&lt;/p&gt;
&lt;p&gt;The Internet has become a platform where people learn almost everything. Unlike TV, which was initially controlled by governments and later by the wealthy, &lt;strong&gt;the Internet’s decentralized approach allowed the public to shape its own knowledge base.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Topping up the Internet, AI has arrived. Although the AI can be adjusted to be slightly deterministic and less creative, &lt;strong&gt;we don’t know where and how the information it provides is shaped or whether it’s true&lt;/strong&gt;. Yet, many people receive information and use it without filtering; they accept it as the truth.&lt;/p&gt;
&lt;p&gt;What started with TVs progressed to a more dangerous state with each step. With each invention, we lost our intellect. With TV, we believed and trusted in people who were on TV to guide us to the truth. That didn’t go well, and TV became the ultimate vehicle for disinformation. The Internet topped that up as it introduced social connections—we can have a conversation with others, unlike TV. That introduced echo chambers. When any idea looked popular, it was considered the truth. This disadvantage is leveraged by many, including manipulators and politicians.&lt;/p&gt;
&lt;p&gt;With AI, another unprecedented change in society has begun, in which &lt;strong&gt;we rely on information produced by an algorithm whose results are volatile&lt;/strong&gt;. We don’t know its dataset and how it forms those “thoughts.” It uses data scraped from the Internet and creatively generates ideas. Along with it, it multiplies the problems of the Internet.&lt;/p&gt;
&lt;p&gt;I’m not here to bring pessimism to your life about AI or warn you against it. Yet, similar to how we criticize the TV and the Internet, we must keep our critical judgment when using AI. &lt;strong&gt;When we seek information from any AI tool, we must evaluate the result, distill it to extract the truth, and ensure that it’s not a hallucination of the model.&lt;/strong&gt; Otherwise, we’ll learn precise but completely inaccurate information as the truth. That’s the real danger.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We must become ignorant&lt;/p&gt;
&lt;p&gt;Of what we’ve been taught,&lt;/p&gt;
&lt;p&gt;and be, instead, bewildered.&lt;/p&gt;
&lt;p&gt;— Rumi&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;I share max three things I found interesting, great, cool, etc., from good to better to great.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One of the reasons I rarely watch movies or read fiction is that most of them have a similar and predictable plot. I know that structured storytelling is compelling and generates a good income for the storyteller. Yet, I prefer listening to stories from people, even though their storytelling might be subpar—&lt;a href=&quot;https://aeon.co/essays/why-does-every-film-and-tv-series-seem-to-have-the-same-plot&quot;&gt;a good piece by Eliane Glaser on this topic&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I must admit, I admire Patrick Collison as a leader. He had an interview with Jony Ive, an iconic character. His questions were good, but what stood out was Jony&apos;s answers, thoughts, approaches, and you name it, whatever he said. &lt;a href=&quot;https://x.com/patrickc/status/1920590121537052881/mediaViewer?currentTweet=1920590121537052881&amp;amp;currentTweetUser=patrickc&quot;&gt;Watch this&lt;/a&gt;.​&lt;/li&gt;
&lt;li&gt;At around age 30, I began to wonder about my impact on my younger brother, my only sibling. I recalled various moments from our youth. I pondered how my actions shaped him. To this day, I still don’t know if I influenced him to switch his profession not once, not twice, but three times and move to Australia. &lt;a href=&quot;https://www.nytimes.com/2025/05/06/magazine/siblings-families-parents-influence.html&quot;&gt;After reading this&lt;/a&gt;, I began wondering again.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;“We can’t choose our families, but we can choose the stories we tell ourselves about them.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Recently, I thought/wrote about&lt;/h2&gt;
&lt;p&gt;I wanted to finish a blog article this week. However, my job took up a lot of my time this week, and I couldn’t finish it. I had to make a decision: either exercise or finish the article. So, I chose exercising. Hence, nothing to add here this week. 🤷🏼&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=7gTz_JmlYtQ&quot;&gt;Building a product from an idea is one thing; manufacturing is another.​&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-21/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-21/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The One with The Wrong Problem</title><link>https://candost.blog/the-one-with-the-wrong-problem/</link><guid isPermaLink="true">https://candost.blog/the-one-with-the-wrong-problem/</guid><description>Reflection on how ego and stubbornness led to focusing on the wrong problem, and the journey of finding the right one.</description><pubDate>Fri, 16 May 2025 06:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I spent two weeks obsessing over a problem that, in hindsight, didn’t even exist. The one that was attractive to me, without asking myself whether it really mattered. My ego took over, and stubbornness kept me locked in. I stuck with the wrong problem until I finally “solved” it. I changed how I approach problems after noticing it and observing others fall into the same trap.&lt;/p&gt;
&lt;p&gt;As my job as a manager is to observe how others work and help them improve, I often catch people when they focus on the wrong problem because they regularly misinterpret situations and reality. &lt;strong&gt;It’s comfortable to choose the first approach they find, the easiest problem they encounter, or the one that they &lt;em&gt;assume will bring the most benefits&lt;/em&gt;.&lt;/strong&gt; They find a problem attractive when it is relevant to what they enjoy doing or what they think they ought to be doing.&lt;/p&gt;
&lt;p&gt;I was in the first group rather than the latter. If I saw an opportunity to do something I liked and was familiar with, I jumped on it. Because I knew I would do a good job and bring results. I assumed these results would also benefit me. I convinced myself that others would accept me more and see me as successful. I created an illusion of success and became a victim of my own pride and ego.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Experts cling to their beliefs in large part because their egos are attached to being ‘smart’ or ‘the best’ in their area of focus.”
— &lt;a href=&quot;https://hbr.org/search?term=Sydney%20Finkelstein&quot;&gt;Sydney Finkelstein&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;When the ego is destroyed, when desires are stripped away, when arrogance is torn down, we arrive at the truth.&lt;/strong&gt; Nobody wants to be seen as stupid or wrong. I didn’t want either. However, the person who can &lt;a href=&quot;/notes/7/&quot;&gt;admit that they are wrong&lt;/a&gt; triumphs. Confessing the mistake requires setting the expertise aside and sitting in the learner’s chair.&lt;/p&gt;
&lt;p&gt;When I employed an open mind, a learner’s mindset, the right problem revealed itself, not the one that would &lt;em&gt;presumably&lt;/em&gt; benefit me the most. &lt;em&gt;Feeling&lt;/em&gt; like an expert (and having the attitude of “I know them all”) prevented me from evaluating the problem fairly. I became a fake expert, shortsighted at the expense of &quot;effectiveness.&quot; I focused on the number of issues I solved, while forgetting the efficiency: solving the right problem.&lt;/p&gt;
&lt;p&gt;The surprising truth, especially for people in leadership roles like me, is that others often tell us the problem, but we ignore it. We deny taking another perspective.&lt;/p&gt;
&lt;h2&gt;Most problems are already obvious&lt;/h2&gt;
&lt;p&gt;Arnie Malham, in his book &lt;a href=&quot;/books/worth-doing-wrong-book-summary-review-and-notes/&quot;&gt;Worth Doing Wrong&lt;/a&gt;, talks about the importance of fostering an &lt;a href=&quot;/notes/54/&quot;&gt;open culture at work&lt;/a&gt;. Only an open culture can provide opportunities for everyone to raise their voices, escalate problems (or even solve them without anyone noticing), and &lt;a href=&quot;/notes/31/&quot;&gt;share feedback&lt;/a&gt;. The leader’s job is to create this culture and listen to the people, understand the problems, and prioritize correctly.&lt;/p&gt;
&lt;p&gt;Most escalated problems may appear as noise, especially when they conflict with problems leaders identify on their own. Many leaders tap into their ego and think, “My team neither sees the big picture nor the right problems.” They choose the problems they &lt;em&gt;assume&lt;/em&gt; are important. They miss the forest for the trees.&lt;/p&gt;
&lt;p&gt;:::note[Story Time]
Sometime ago, my team was falling behind on deliverables and was becoming a bottleneck in various projects. I focused on delivering results project by project and looked for all small problems that their resolution could speed up development. The harder I pushed for speed, the slower we got. However, the moment I took a step back, the moment I listened to my team, the moment I looked at the forest, I realized that I had chosen the wrong problem. The problem was not in my team or the speed of development.&lt;/p&gt;
&lt;p&gt;We had a lot of dependencies in most projects. At any moment, we had more than five teams working on projects that are relevant to each other, and my team was part of at least four of them. As my team was responsible for a core functionality and consisted of seven engineers, we were expected to provide support to almost all. Hence, we had a lot of ongoing projects and constant context switching between them.&lt;/p&gt;
&lt;p&gt;The day I listened to my team became the day we decided to move two or three team members from my team to other teams and let other teams develop features on our codebase. The change was going to reduce my influence as a leader but would make the organization more efficient. By shifting our focus to the right problem, we unclogged the organization’s bottleneck even though we reduced the bottleneck’s size. With the change, my team also became happier as the team size and work-in-progress projects were reduced.
:::&lt;/p&gt;
&lt;p&gt;The higher we are up the hierarchy chain, the more people look up to us. We’ll frustrate even more people and harm the business when we are on the wrong problem. Contrary to the benefits we think we’ll gain in the short term, solving problems nobody cares about or not the most important ones will put our job at risk in the long term. When we listen to the people and acknowledge our ignorance, we’ll find success and wisdom.&lt;/p&gt;
&lt;h2&gt;Wisdom&lt;/h2&gt;
&lt;p&gt;The wisdom comes from how we handle the ignorance. Acknowledging complex problems that consist of many unknowns, understanding the intricacies between components, listening to the people who are closer to the problems and learning from them are the steps I take now.&lt;/p&gt;
&lt;p&gt;So, what can YOU learn from my mistake?&lt;/p&gt;
&lt;p&gt;Don’t invent problems. Leave your ego aside and carefully observe and evaluate what people tell you. Ask questions with curiosity. The more you learn, the easier it gets to identify the right problem. Don’t worry too much about the solution. When you’re on the right problem, you’ll eventually find a solution that works.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;I created this article using these notes: &lt;a href=&quot;/notes/46j/&quot;&gt;46j&lt;/a&gt;, &lt;a href=&quot;/notes/52a4/&quot;&gt;52a4&lt;/a&gt;, &lt;a href=&quot;/notes/7/&quot;&gt;7&lt;/a&gt;, &lt;a href=&quot;/notes/12/&quot;&gt;12&lt;/a&gt;, &lt;a href=&quot;/notes/31/&quot;&gt;31&lt;/a&gt;, &lt;a href=&quot;/notes/27a/&quot;&gt;27a&lt;/a&gt;, &lt;a href=&quot;/notes/38b/&quot;&gt;38b&lt;/a&gt;, &lt;a href=&quot;/notes/54/&quot;&gt;54&lt;/a&gt;, &lt;a href=&quot;/notes/30/&quot;&gt;30&lt;/a&gt;, &lt;a href=&quot;/notes/52a/&quot;&gt;52a&lt;/a&gt;, &lt;a href=&quot;/notes/68/&quot;&gt;68&lt;/a&gt;, &lt;a href=&quot;/notes/7c/&quot;&gt;7c&lt;/a&gt;, &lt;a href=&quot;/notes/20c/&quot;&gt;20c&lt;/a&gt;, &lt;a href=&quot;/notes/24a1/&quot;&gt;24a1&lt;/a&gt;, &lt;a href=&quot;/notes/56m/&quot;&gt;56m&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/the-one-with-the-wrong-problem/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/the-one-with-the-wrong-problem/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What you do on bad days matters more than on good days</title><link>https://candost.blog/newsletter/mediations-20/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-20/</guid><description>Only 8-9% of people keep their New Year’s resolutions, but achieving them requires consistent action beyond motivation.</description><pubDate>Tue, 13 May 2025 09:05:00 GMT</pubDate><content:encoded>&lt;p&gt;What you do on bad days matters more than on good days&lt;/p&gt;
&lt;p&gt;I am considering making this newsletter more helpful for you by extending its content while reducing the time required to read it. So, your return on investment should increase with every issue. I decided to open the issue with a few paragraphs of text, focusing on one timeless idea. Then a few things across the world that I found great—a product, some news, a person. I’ll try this and look forward to your feedback. Hit reply and let me know what you think!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Four months have passed since New Year’s resolutions. According to statistics, 23% of the people quit within the first week, 43% by the end of January, and up to 80% by mid-February. At the end of the year, we will have 8-9% of the people remaining. The long story short is that fewer than 1 out of 10 people stick to their resolutions. Which group are you in? One in 10 or the remaining 9? I’m somewhere in between (we’ll see at the end of the year).&lt;/p&gt;
&lt;p&gt;Albeit the majority of my resolutions are on track, I abandoned a few. It’s challenging to keep pushing and staying on track. There is one thing I constantly remind myself: if I wait for motivation or inspiration to arrive, I will most likely not find it. Even when I do, I probably won’t take any action about it.&lt;/p&gt;
&lt;p&gt;We all have good and bad days. It’s easier to work out or eat healthy when we are in a good mood. But “what you do on your bad days matters more than what you do on your good days,” &lt;a href=&quot;https://www.awakin.org/v2/read/view.php?tid=2577&quot;&gt;says&lt;/a&gt; &lt;a href=&quot;https://kk.org&quot;&gt;Kevin Kelly&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I try to think of all my resolutions as my work. I work every weekday, even if I’m not motivated. Why not think of the new pledges we make to ourselves in the same way? As I’m &lt;a href=&quot;/seek-goals-that-will-change-how-you-live/&quot;&gt;trying to change how I live&lt;/a&gt;, who said it’s gonna be like a vacation?&lt;/p&gt;
&lt;p&gt;The best we can do: Take the action today, quit tomorrow. Action creates progress; progress turns into momentum, and momentum eventually brings motivation.&lt;/p&gt;
&lt;h2&gt;Good to Great&lt;/h2&gt;
&lt;p&gt;I share max three things I found interesting, great, cool, etc.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;LEGO F1 GP in Miami. Think about the engineering, the planning, and building the real-size ten F1 cars with Lego. A team of 26 people spent 22,000 hours and used a total of 4 million bricks. 🤯 Why? F1 and LEGO are both about pushing boundaries; &lt;a href=&quot;https://www.lego.com/en-us/aboutus/news/2025/may/lego-f1-drivers-parade&quot;&gt;why not do it together and create a successful marketing campaign&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gatesnotes.com/home/home-page-topic/reader/the-day-i-knew-what-i-wanted-to-do-for-the-rest-of-my-life&quot;&gt;Bill Gates is shutting down the foundation and giving away all his wealth (~$108bn)&lt;/a&gt;. It blows my mind how much wealth a person can accumulate. Anyway, he finally decided to give it all away.&lt;/li&gt;
&lt;li&gt;Download, print, and hang on the wall: &lt;a href=&quot;https://sketchplanations.com/how-to-instantly-feel-better&quot;&gt;How to instantly feel better?&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Recently, I thought/wrote about&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I feel like owning a website/blog is a different thing from other hobbies. I &lt;a href=&quot;/on-owning-a-website/&quot;&gt;wrote&lt;/a&gt; about how I see it.&lt;/li&gt;
&lt;li&gt;I &lt;a href=&quot;/living-without-algorithms/&quot;&gt;wrote&lt;/a&gt; about why and how I am trying to run away from recommendation engines and algorithmic feeds.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-20/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-20/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How many times did you solve the wrong problem?</title><link>https://candost.blog/journal/how-many-times-did-you-solve-the-wrong-problem/</link><guid isPermaLink="true">https://candost.blog/journal/how-many-times-did-you-solve-the-wrong-problem/</guid><pubDate>Fri, 09 May 2025 13:15:42 GMT</pubDate><content:encoded>&lt;p&gt;How many times did you see someone solving the wrong problem?&lt;/p&gt;
&lt;p&gt;How many times did you catch yourself doing the same?&lt;/p&gt;
&lt;p&gt;I often catch myself focusing on the wrong problem or a non-urgent one because it&apos;s easy to focus on what we like or what we think will position us well.&lt;/p&gt;
&lt;p&gt;I heard from one of my previous leaders that solving a problem that nobody even wants to get close to brought them a lot of learning. So, maybe we shouldn’t invent problems that don’t need any solution or whose solutions don’t matter.&lt;/p&gt;
&lt;p&gt;Instead, we should seek the most critical problem. Even looking for that will teach us many things along the way.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/how-many-times-did-you-solve-the-wrong-problem/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/how-many-times-did-you-solve-the-wrong-problem/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Self-discipline is a long-term character investment</title><link>https://candost.blog/notes/52a4/</link><guid isPermaLink="true">https://candost.blog/notes/52a4/</guid><pubDate>Mon, 05 May 2025 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Building character is defending against the &lt;a href=&quot;/notes/27d/&quot;&gt;short-term wins&lt;/a&gt; of &lt;a href=&quot;/notes/30b3/&quot;&gt;your ego and pride&lt;/a&gt;. Only self-discipline and quieting ourselves, investing in long-term wins, can show the way to enlightenment, a fulfilled life that is driven by purpose. If we become slaves of lust, fear, and vanity, we distance ourselves from courage, &lt;a href=&quot;/notes/3b3/&quot;&gt;honesty&lt;/a&gt;, and &lt;a href=&quot;/notes/44h/&quot;&gt;humility&lt;/a&gt;. Self-discipline is what anchors us to stick with a permanent and important thing in the long term, rather than collecting the short-term benefits that have detrimental results over time.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Instead of ego, build &lt;a href=&quot;/notes/7/&quot;&gt;confident humility&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s)&lt;/strong&gt;: The Road to Character by David Brooks&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/52a4/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/52a4/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>No achivement alone</title><link>https://candost.blog/notes/52a3/</link><guid isPermaLink="true">https://candost.blog/notes/52a3/</guid><pubDate>Mon, 05 May 2025 11:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Although society is more individualistic than ever and day by day becomes more individualistic, you need &lt;a href=&quot;/notes/20l/&quot;&gt;others’ assistance to fight your inner struggles&lt;/a&gt;. Some people have God to fill this gap and use it to fight prejudices, selfishness, &lt;a href=&quot;/notes/38a/&quot;&gt;greed&lt;/a&gt;, and &lt;a href=&quot;/notes/52a2/&quot;&gt;pride&lt;/a&gt;, and they develop self-compassion and individual will. These inner forces are too strong to fight alone. You have to find outside help or hope that it will give you the best. These can be &lt;a href=&quot;/notes/63/&quot;&gt;cultural traditions&lt;/a&gt; as well. The thing is that they have to educate your heart and build values, and show what to feel in certain circumstances.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52d/&quot;&gt;Genghis Khan found friendship to be the main driver for loyalty&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s)&lt;/strong&gt;: The Road to Character by David Brooks&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/52a3/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/52a3/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Love is submission</title><link>https://candost.blog/notes/52a1/</link><guid isPermaLink="true">https://candost.blog/notes/52a1/</guid><pubDate>Mon, 05 May 2025 11:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“Love is submission, not decision.” — David Brooks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When we love, we change. We lose ourselves, pieces of our personality. Love makes us do things that we wouldn’t do otherwise. We neither decide to love nor decide to submit; we simply go for it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Road to Character by David Brooks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52d/&quot;&gt;Friendship is a form of love&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/52a1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/52a1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pride deludes us</title><link>https://candost.blog/notes/52a2/</link><guid isPermaLink="true">https://candost.blog/notes/52a2/</guid><pubDate>Mon, 05 May 2025 11:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Staying humble is knowing that &lt;a href=&quot;/notes/46g/&quot;&gt;almost nothing is in our control&lt;/a&gt; and can change in a moment. Most of our lives are outside of our control; &lt;a href=&quot;/notes/30e/&quot;&gt;changes are driven by others&lt;/a&gt; in society, such as a boss at work, a politician, and even delays in the metro. Pride is thinking that we can control them all. It’s denying the truth and sitting in a creator of life chair. We are not the authors of our own lives. Neither has a divine power. Accepting that we have almost no control requires destroying this pride and breaking the delusion.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44h/&quot;&gt;Approach others with humility&lt;/a&gt;, not pride, to persuade them easily.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s)&lt;/strong&gt;: The Road to Character by David Brooks&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/52a2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/52a2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On Owning a Website</title><link>https://candost.blog/on-owning-a-website/</link><guid isPermaLink="true">https://candost.blog/on-owning-a-website/</guid><description>Personal websites offer unique freedom, flexibility, and connection unlike physical creations, balancing creative freedom with challenge of maintenance.</description><pubDate>Mon, 05 May 2025 06:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Something is different about owning a website—a palace on the web. Unlike a car or a house, unlike other hobbies, a website exists in a subtle space between the private and public spheres. Though you create it, nurture it, and spend countless hours making it beautiful and functional, it lives out there on its own. The magical part is that strangers across the globe (many people you will never see in your life) can leave their thoughts on the pages, creating connections impossible in other creative hobbies.&lt;/p&gt;
&lt;h2&gt;The Freedom of Creation&lt;/h2&gt;
&lt;p&gt;A personal website brings freedom. A sculptor can also say the same before they hit a chisel with a hammer to shape a block of marble, or a painter with a clean brush and endless color palette to use on an empty canvas. Yet, none gives the freedom the website provides.&lt;/p&gt;
&lt;p&gt;On a website, mistakes are replaceable and fixable; nothing is permanent. A mischievous strike on an almost finished sculpture or a degraded color on a paint after it has been dried can’t be undone or changed. But on a website? Even after a significant amount of coding and designing a website, everything can still change. Not only the design, but your creative content can change at any time too. If a post written years ago doesn’t reflect your thinking anymore, you can revise it or retire it with a note explaining how you have changed.&lt;/p&gt;
&lt;h2&gt;The Flexibility of Presentation&lt;/h2&gt;
&lt;p&gt;A personal website brings flexibility for presentation. Today, you may create a chronological blog; tomorrow, you can revamp the whole website and turn it into a carefully curated &lt;a href=&quot;/notes/&quot;&gt;knowledge garden&lt;/a&gt;. Today, you can design a static website (like this one); tomorrow, you can evolve it to an interactive experience.&lt;/p&gt;
&lt;p&gt;The possibilities are endless. Unlike physical creative works, which are frozen at the moment of completion, a website breathes and changes—sometimes drastically, sometimes subtly—reflecting the growth as both creator and person.&lt;/p&gt;
&lt;h2&gt;The Connection and Conversation&lt;/h2&gt;
&lt;p&gt;A personal website brings connections across so many boundaries. When an artist produces a piece, they rarely hear others’ thoughts if they don’t put the piece on social media. Their work is mostly visible in the world of silent viewers. But a website creates an ongoing dialogue.&lt;/p&gt;
&lt;p&gt;A piece written five minutes ago can be read by someone on the other side of the world. Imagine you share your personal grief on your blog before you go to sleep. Someone else, through the night, finds comfort in your words and shares their story in the comments. Or a piece you wrote to solve a technical problem can help others again and again, or the one you couldn’t solve can be solved by someone else’s suggestion in the comments.&lt;/p&gt;
&lt;p&gt;These connections have a different quality than those formed on social media. They are centered around ideas &lt;a href=&quot;/there-are-no-analytics-on-this-blog/&quot;&gt;rather than driven by the number of likes&lt;/a&gt;. That’s why &lt;a href=&quot;/speaking-writing-and-high-quality-ideas/&quot;&gt;an idea written five years ago can still find an audience and restart a conversation just like it was published a moment ago&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The Immortality of Ideas&lt;/h2&gt;
&lt;p&gt;A personal website gives an opportunity for survival. Unlike physical artifacts that decay or require careful preservation, digital thoughts can be perfectly replicated, backed up, preserved, and even later improved.&lt;/p&gt;
&lt;p&gt;I built my own website first using Jekyll. I didn’t like the design that much and moved to Hugo, then to Ghost and later Astro, each time with a different design while preserving the pieces I’ve written.&lt;/p&gt;
&lt;p&gt;The only thing that has a chance to survive is your ideas that fill the website. Although you must update your website’s infrastructure due to ever-changing technology, your ideas, thoughts, memories stay the same. A website provides intellectual immortality.&lt;/p&gt;
&lt;h2&gt;The Responsibility of Maintenance&lt;/h2&gt;
&lt;p&gt;Within all these opportunities and freedom, there is one downside: maintenance. A personal website carries a maintenance burden. A book doesn’t need any further effort from its author once published; a paint only needs occasional dusting. But the website needs ongoing attention.&lt;/p&gt;
&lt;p&gt;Even keeping it alive without adding anything new demands time and devotion. The technical infrastructure keeps changing under the hood. If you don’t choose the simplest and plainest approach, you must keep it updated. This is why we have seen the rise of services like Substack, Medium, Ghost, and WordPress, offering solutions around maintaining a website.&lt;/p&gt;
&lt;p&gt;While keeping the website alive needs time, the real cost comes from indulging in the pursuit of perfection. Making perfect websites shouldn’t be the goal unless it’s for an artistic approach. Otherwise, it should be about the freedom. Having a space to write and organize thoughts, artifacts, information and documenting the journey is the reason it exists. Many people, including me, lose a lot of time trying to make the perfect website, forgetting its real purpose.&lt;/p&gt;
&lt;h2&gt;Verdict&lt;/h2&gt;
&lt;p&gt;The website is ultimately more than just a collection of pages; it’s a reflection of self. It reveals who we are through content and how we present the content. It combines the narrative elements of writing, visual components of design, the structural thinking of information architecture, opening a true place of the mind to visitors around the globe.&lt;/p&gt;
&lt;p&gt;Yes, it requires effort to build and &lt;a href=&quot;/notes/25d/&quot;&gt;commitment to maintain&lt;/a&gt;. But there is nothing like it; no other medium evolves with you, gathers connections around the world and preserves thoughts. That’s why it’s worth having.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/on-owning-a-website/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/on-owning-a-website/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Online social networks are worthless</title><link>https://candost.blog/notes/91/</link><guid isPermaLink="true">https://candost.blog/notes/91/</guid><pubDate>Sun, 04 May 2025 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Online social networks have passed their promise of creating a social network. It feeds the desire for attention in a competitive market. We seek the likes of people we didn’t know existed. This hyper-competitive side of social networking technology takes our time immensely in return for, simply put, nothing. The currency of likes is not worth a dime.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Likes are driven by &lt;a href=&quot;/notes/44g1/&quot;&gt;our inner drive to be accepted by a group&lt;/a&gt;. However, this time, the group is the one we don’t even know. It’s &lt;a href=&quot;/notes/20d/&quot;&gt;pure automatic&lt;/a&gt;, on &lt;a href=&quot;/notes/38b/&quot;&gt;autopilot&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s)&lt;/strong&gt;: The Road to Character by David Brooks&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/91/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/91/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>No contest, no progress</title><link>https://candost.blog/notes/1i1/</link><guid isPermaLink="true">https://candost.blog/notes/1i1/</guid><pubDate>Sun, 04 May 2025 15:01:00 GMT</pubDate><content:encoded>&lt;p&gt;When our lives pass without contest, conflict, or friction, when our lives pass without success or merit, we’re merely filling existence. Our lives become useless and purposeless. The person who &lt;a href=&quot;/notes/38a1/&quot;&gt;commits&lt;/a&gt;, strives, conflicts, penetrates the hardship, &lt;a href=&quot;/notes/67/&quot;&gt;seeks the inconvenient&lt;/a&gt;, and &lt;a href=&quot;/notes/54d/&quot;&gt;crosses the ocean of difficulties&lt;/a&gt; to build merit or succeed can say that they exist for good.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30c/&quot;&gt;Having good values and metrics&lt;/a&gt; in life is difficult, not the easiest.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46d/&quot;&gt;Self-doubts&lt;/a&gt; are part of the friction we create ourselves.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s)&lt;/strong&gt;: The Road to Character by David Brooks&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1i1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1i1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Imaginations are dangerous</title><link>https://candost.blog/notes/46j/</link><guid isPermaLink="true">https://candost.blog/notes/46j/</guid><pubDate>Sun, 04 May 2025 14:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Imaginations and daydreams are dangerous. They &lt;a href=&quot;/notes/9b/&quot;&gt;distance us&lt;/a&gt; from reality by envisioning ideals or triumphs over others or difficult situations. It forms fantasies and prevents us from celebrating our achievements; it forces us to &lt;a href=&quot;/notes/38a/&quot;&gt;focus on what’s left undone&lt;/a&gt; and makes us stuck on unattainable future possibilities.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;When you find yourself daydreaming because you were born into difficulty, &lt;a href=&quot;/notes/30e/&quot;&gt;you still have a way out&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In ambiguous situations, we may drift to daydreams or imagination. &lt;a href=&quot;/notes/29b/&quot;&gt;Find a better compass than imagination&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s)&lt;/strong&gt;: The Road to Character by David Brooks&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46j/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46j/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>FOMO is selfish</title><link>https://candost.blog/notes/46e1/</link><guid isPermaLink="true">https://candost.blog/notes/46e1/</guid><pubDate>Sun, 04 May 2025 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;FOMO is selfish. It means that you must taste all experiences and always seek the newest, shiniest thing. It focuses on your experience. It spreads you too thin. You become a dopamine addict by tasting and trying everything. You can’t go deep into a specific topic because you say a lot of yeses and sacrifice your time with shallowness. You miss a lot for one big overwhelming yes, which can only be gained by &lt;a href=&quot;/notes/52a/&quot;&gt;saying a lot of noes to trivial things&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/embracing-the-joy-of-missing-out/&quot;&gt;No FOMO, only JOMO&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Success is not about experiencing everything but &lt;a href=&quot;/notes/25/&quot;&gt;consistently doing what you value&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/38a1/&quot;&gt;Stick to your commitments&lt;/a&gt; and &lt;a href=&quot;/notes/38a/&quot;&gt;how you define yourself&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44g2/&quot;&gt;Defending against the popularity of something is difficult, but not impossible&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/67/&quot;&gt;Not everything in life has to be convenient&lt;/a&gt;. Resist your desire.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/72a/&quot;&gt;When you have too many commitments, stop and analyze&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s)&lt;/strong&gt;: The Road to Character by David Brooks&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46e1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46e1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Selfish goals are unattainable</title><link>https://candost.blog/notes/30c1/</link><guid isPermaLink="true">https://candost.blog/notes/30c1/</guid><pubDate>Sun, 04 May 2025 11:15:00 GMT</pubDate><content:encoded>&lt;p&gt;A selfish goal is unattainable. When you want people to love you, and if you try forcing your way in, you’ll never be loved. But only when you want to &lt;a href=&quot;/notes/20i/&quot;&gt;learn more about others&lt;/a&gt; and &lt;a href=&quot;/notes/20h/&quot;&gt;be genuinely curious&lt;/a&gt;, you’ll be loved as a by-product. &lt;a href=&quot;/notes/30e/&quot;&gt;Self-forgetfulness will bring that as a by-product&lt;/a&gt;—the same for acquiring knowledge. If you &lt;a href=&quot;/notes/65/&quot;&gt;aim to learn more&lt;/a&gt;, &lt;a href=&quot;/notes/7c/&quot;&gt;you’ll never learn&lt;/a&gt;. You’ll gain knowledge when you love a topic and &lt;a href=&quot;/notes/30c/&quot;&gt;immerse yourself in it&lt;/a&gt;. You only get what you want when you &lt;a href=&quot;/notes/38a/&quot;&gt;don’t focus on it directly, but do it indirectly&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s)&lt;/strong&gt;: The Road to Character by David Brooks&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30c1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30c1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Wisdom is learning how to handle your ignorance</title><link>https://candost.blog/notes/7c/</link><guid isPermaLink="true">https://candost.blog/notes/7c/</guid><pubDate>Fri, 02 May 2025 15:57:08 GMT</pubDate><content:encoded>&lt;p&gt;Wisdom is the moral quality of knowing what you don’t know; it’s learning and handling your ignorance and limitations. You can &lt;a href=&quot;/notes/69/&quot;&gt;learn someone else’s knowledge&lt;/a&gt;, but it will be mere information for you. Turning that information into knowledge and then later wisdom, you must understand how much you don’t know.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;Uncertainty and open-mindedness&lt;/a&gt; are the elements to acquire and drive wisdom.&lt;/li&gt;
&lt;li&gt;Once you learn your limitations, you can &lt;a href=&quot;/notes/69/&quot;&gt;start criticizing fairly&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Road to Character by David Brooks&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/7c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/7c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Social Media Impaired My Learning</title><link>https://candost.blog/social-media-impaired-my-learning/</link><guid isPermaLink="true">https://candost.blog/social-media-impaired-my-learning/</guid><description>Learning from social media was my excuse to keep consuming while lying down on my couch.</description><pubDate>Tue, 29 Apr 2025 07:05:00 GMT</pubDate><content:encoded>&lt;p&gt;One lie I used to tell myself was that I was learning &lt;em&gt;a lot&lt;/em&gt; from social media or content online. I used this lie as an excuse to keep consuming while lying down on my couch. Later, I realized that this was only a delusion. After shutting down social media, I realized my learning was an illusion, and it is also impaired. I’m still trying to fix it.&lt;/p&gt;
&lt;p&gt;It’s hard.&lt;/p&gt;
&lt;p&gt;The “useful” information we receive on social media &lt;em&gt;looks&lt;/em&gt; useful at first. &lt;strong&gt;The pleasure and satisfaction come from seeing something we didn’t even know existed.&lt;/strong&gt; &lt;a href=&quot;https://www.theguardian.com/global/2021/aug/22/how-digital-media-turned-us-all-into-dopamine-addicts-and-what-we-can-do-to-break-the-cycle&quot;&gt;Despite the dopamine rush&lt;/a&gt; that comes from discovery, we continue with our lives without any change. For example, when I discovered in-cockpit-view flight videos, I “&lt;em&gt;learned&lt;/em&gt;” a lot about how to pilot an aircraft. I watched, again and again, how pilots lift off and land a plane. Yet, I still can’t even imagine myself piloting an aircraft. I built a mastery, but a false one.&lt;/p&gt;
&lt;p&gt;The other example of false mastery is life hacks—techniques that promise to help you use your time and life more efficiently. Learning how to cut a cucumber in a way that saves 200 milliseconds is not something I should be worried about. The time I could save from cutting cucumbers in the next decade was already lost while watching that three-minute video. I’m not a professional chef, but I now have an illusion of competence. I consumed information, although I could already cut a cucumber.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consuming information doesn’t equate to building knowledge.&lt;/strong&gt; They are fundamentally different. According to &lt;a href=&quot;https://www.coursera.org/learn/learning-how-to-learn/&quot;&gt;Barbara Oakley&lt;/a&gt;, a Distinguished Professor of Engineering at Oakland University and the instructor of one of the most popular online courses, Learning How to Learn, &lt;strong&gt;building knowledge or skill requires&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;focused&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;unfocused&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;thinking, spaced repetition and deliberate practice with increasing levels of challenge while applying information, making mistakes and correcting them one by one.&lt;/strong&gt; When I read online, watch a short video, or listen to a podcast, I do neither of these, but somehow, my brain remembers the stupid cat video I watched five years ago.&lt;/p&gt;
&lt;p&gt;When I dig into the reasons, it’s obvious why; it actually involves elements of learning. I watch the video multiple times (focused learning), share the cat video with friends, and we watch it again (spaced repetition) and talk about it while creating a social bonding experience (applying information on different levels). Yet, we don’t do the same with any other information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Most of the “useful” information we consume online becomes neglected and quickly forgotten&lt;/strong&gt; because we see it when lying down on the couch—the moment we want to do the least—or right before we get off the bus, train, or taxi, making it impossible to act on new info. We don’t share these with friends or talk about them. We only delude ourselves with a crack of information, so we have something to say in social groups or compete in pub quizzes (if only we remember it).&lt;/p&gt;
&lt;p&gt;Some claim that they use social media productively: following accounts that share great and informational content, and optimizing their feeds by following certain accounts and regularly blocking accounts that share either junk or useless content. However, they forget that &lt;strong&gt;the lack of information is not the problem anymore; the excess of it is. Content consumption is not the solution; learning selectively is.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I believe there is one group of people who solve this problem: using social media for inspiration, nothing else. For example, someone who is into pottery can be inspired by a new idea they see on social media and try the concept themselves later on. &lt;strong&gt;The real learning is still offline. Online is only the&lt;/strong&gt; &lt;strong&gt;*inspiration***&lt;/strong&gt;.** They have no intention of learning from there and don’t mix up two concepts with each other.&lt;/p&gt;
&lt;p&gt;So, knowing these, how can I fix my learning?&lt;/p&gt;
&lt;p&gt;Two steps I have already taken: &lt;a href=&quot;/my-experience-living-without-social-media/&quot;&gt;quit social media&lt;/a&gt; and &lt;a href=&quot;/living-without-algorithms/&quot;&gt;live without algorithms&lt;/a&gt;. I doubt these alone will fix my learning.&lt;/p&gt;
&lt;p&gt;I’ll share when I take another step.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/social-media-impaired-my-learning/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/social-media-impaired-my-learning/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Living without algorithms</title><link>https://candost.blog/living-without-algorithms/</link><guid isPermaLink="true">https://candost.blog/living-without-algorithms/</guid><description>My experiment to live without recommendation engines or algorithmic feeds. The battle against popular culture driven by algorithms.</description><pubDate>Mon, 28 Apr 2025 05:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What started with an experiment of &lt;a href=&quot;/my-experience-living-without-social-media/&quot;&gt;living without looking at social media&lt;/a&gt; turned into quitting it completely, &lt;a href=&quot;/how-to-get-to-the-end-of-a-pile-of-unread-books/&quot;&gt;changing my reading habits&lt;/a&gt;, and &lt;a href=&quot;/no-more-debate-with-latest-or-daily-news/&quot;&gt;stopping consuming news daily&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As the new step of decluttering my life, I am changing my approach to using services that heavily leverage algorithms to recommend new content, such as Netflix, Disney+, Apple TV, Prime Video, YouTube, Amazon, Letterboxd, LinkedIn, and more. I keep my accounts on most services, but intend never to scroll the feed or jump from one piece of content to another.&lt;/p&gt;
&lt;p&gt;My goal is to stop relying on algorithmic feeds to fill my time. Many people find these algorithms helpful, but I find them detrimental.&lt;/p&gt;
&lt;h2&gt;The Why&lt;/h2&gt;
&lt;p&gt;Not only do I waste a lot of time, but I am also not even aware of wasting it. Companies using algorithmic feeds aim to obtain my time to the fullest &lt;strong&gt;without me noticing it.&lt;/strong&gt; They create a frictionless user experience, which in turn allows them to serve better targeted ads (or sell more subscriptions). This doesn’t make any of these companies evil; it’s how business works.&lt;/p&gt;
&lt;p&gt;My goals and these companies’ goals conflict. What matters to them does not matter to me. Although most products use algorithms (and prediction models) to engage me with what I &lt;em&gt;may&lt;/em&gt; like, it almost always feels like a toxic relationship. Sex is good, but life would be much better without all the manipulation.&lt;/p&gt;
&lt;p&gt;I wanted to get rid of manipulation and keep the good parts.&lt;/p&gt;
&lt;h2&gt;What to do&lt;/h2&gt;
&lt;p&gt;I &lt;a href=&quot;/seek-goals-that-will-change-how-you-live/&quot;&gt;set out for myself&lt;/a&gt; a single goal: &lt;strong&gt;Never look at any screen if I don’t already know what I’m looking for.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This goal is a fundamental shift in how I approach anything (adding another decision &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;here&lt;/a&gt;). If I don’t know whether I really need a new shirt, I don’t buy one. If I don’t know which movie I want to watch, I either don’t watch one or first decide on the movie before turning on the TV. Deciding first before looking at any digital service forced me to build up an inventory.&lt;/p&gt;
&lt;p&gt;Although I’m still crawling on this topic, I began keeping an inventory of movies to watch, things to buy, books to read, questions to find answers to, articles to write, people to get in touch with, restaurants to try, food to cook, and many more. These are plain lists that live in a note on my Obsidian (except articles and newsletters to read, which are on Readwise Reader; I’ll share more about it in another post) instead of other digital services.&lt;/p&gt;
&lt;p&gt;I tried and used various other apps to manage all these lists. &lt;a href=&quot;https://oku.club/&quot;&gt;Oku&lt;/a&gt; for my books, &lt;a href=&quot;https://letterboxd.com/&quot;&gt;Letterboxd&lt;/a&gt; for movies and TV series, Amazon for shopping list, and more. They were all convenient as I didn’t have to type in so many details—with one search and a click, the item is added to a list. Yet, &lt;a href=&quot;/productivity-scam-and-perception-of-time/&quot;&gt;convenience doesn’t make everything better&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Having a plain list in a file (or even on paper) has certain advantages. &lt;strong&gt;The friction of manual writing is itself a selection process.&lt;/strong&gt; While adding an item, you have to write the full name and any details you need. You have no autocomplete, no suggestions. Before writing these, I consider whether I really want to write them down. Despite a bit of friction, it’s still easy; once you write the name in the inventory, it’s done. Choosing something from the inventory, on the other hand, is where I replace algorithms.&lt;/p&gt;
&lt;p&gt;Compared to any of the products (like Amazon or YouTube), the information in the list is minimal. Look at your shopping list on Amazon; you have price, reviews, shipping information, and more. When you keep your own list, you have as much as your own entry. &lt;strong&gt;The trick is using the list as an initial decision point.&lt;/strong&gt; When I want to watch &lt;em&gt;something&lt;/em&gt;, I don’t go to Netflix or Apple TV directly; I open my list first, choose one, and search for it specifically. This approach breaks the association of “being bored” with any digital service. I intend to do a specific thing and avoid filling a gap with algorithmic recommendations in my life whenever I get bored.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“People are drawn to the easy and to the easiest side of the easy, but it is clear that we must hold ourselves to the difficult.” — Rainer Maria Rilke&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;However, this was not easy (and still isn’t). I needed to break some habits.&lt;/p&gt;
&lt;p&gt;I constantly checked my phone for LinkedIn to see if I had a comment on my last post, or opened a YouTube video without thinking about it. After I come home from work, I feel tired and the phone is “just there” to fill the evening and “relax.” So, I looked for what I could do to change how I use my phone.&lt;/p&gt;
&lt;h2&gt;The How&lt;/h2&gt;
&lt;p&gt;After researching a lot, trying various methods, I established two guidelines for myself:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No native apps on the phone; only the mobile browser will be used.&lt;/li&gt;
&lt;li&gt;Use tools to break unwanted habits.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;No native apps&lt;/h3&gt;
&lt;p&gt;I already tried this approach when I was &lt;a href=&quot;/my-experience-living-without-social-media/#apps-and-devices-setup&quot;&gt;experimenting with living without social media&lt;/a&gt;. I knew it worked, but I needed a few changes.&lt;/p&gt;
&lt;p&gt;Native apps are the grand palaces of companies. Companies customize everything inside to their needs (ideally, users’ needs, but not always). Giving these native apps real estate on my phone, the device that I carry with me everywhere, and putting them in a very accessible position makes it easier to use them. I want the other way around. Reaching these services should be really difficult; I must put in an effort. There has to be a lot of friction.&lt;/p&gt;
&lt;p&gt;Hence, no native apps on the phone. That’s the rule. This way, I have to log in on a mobile browser, which doesn’t have the optimal user experience (because most products don’t care too much about mobile browser experience). Yet, this alone is not enough.&lt;/p&gt;
&lt;p&gt;The mobile browser is still within reach. Adding only a second delay, sadly, doesn’t cut the habit. One recommendation I read somewhere (probably from James Clear or Cal Newport) told me to log in and log out of these services every single time, &lt;a href=&quot;/my-experience-living-without-social-media/#apps-and-devices-setup&quot;&gt;which I did&lt;/a&gt;. I even added two-factor authentication. But it still didn’t work well for me.&lt;/p&gt;
&lt;p&gt;So, I had to add the second guideline.&lt;/p&gt;
&lt;h3&gt;Use tools to break unwanted habits&lt;/h3&gt;
&lt;p&gt;I get frustrated with bad user experience (UX) design and stop using the product. &lt;strong&gt;The problem is that most of the products I mentioned have great UX design.&lt;/strong&gt; They create a seamless experience. They optimize algorithms to show you the next relevant thing in the most convenient way.&lt;/p&gt;
&lt;p&gt;For example, I don’t want to scroll my YouTube feed because recommendations are still tailored to what I searched and watched (only lately, YouTube started introducing new topics to me). One thing I want to use YouTube for is to help my life. Yet, every time I open YouTube, I find myself checking other videos. YouTube makes it compelling to watch more with features like autoplay. So, I needed to break the UX.&lt;/p&gt;
&lt;p&gt;There is a browser extension app called &lt;a href=&quot;https://untrap.app&quot;&gt;UnTrap for YouTube&lt;/a&gt; that works on iPhone Safari. It enables you to remove almost any feature YouTube has, ranging from removing the main feed to gray-scaling the whole website or removing buttons. After setting up the app and adjusting the design, here is a screenshot of what my YouTube looks like:&lt;/p&gt;
&lt;p&gt;&amp;lt;img  class=&quot;mb-5&quot; src=&quot;/spinner.gif&quot; data-src=&quot;/images/content/posts/living-without-algorithms/minimal-youtube.png&quot; style=&quot;width:200px;&quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;I removed the features I didn’t want to use. Decluttered my YouTube and left what I use: search and my profile page to access my history.&lt;/p&gt;
&lt;p&gt;I needed something similar for LinkedIn. Again, luckily, there was another browser extension app from the same developer: &lt;a href=&quot;https://socialfocus.app&quot;&gt;SocialFocus: Hide Distractions&lt;/a&gt;. If you’re using any social media (ranging from Facebook to HackerNews), you can customize almost everything for the browser. I only use its LinkedIn features as I don’t use other websites.&lt;/p&gt;
&lt;p&gt;Here is a screenshot of what my LinkedIn looks like now:&lt;/p&gt;
&lt;p&gt;&amp;lt;img  class=&quot;mb-5&quot; src=&quot;/spinner.gif&quot; data-src=&quot;/images/content/posts/living-without-algorithms/minimal-linkedin.png&quot; style=&quot;width:200px;&quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;(Once a week, I check my feed, but do it on my laptop)&lt;/p&gt;
&lt;p&gt;Last but not least, I needed to declutter my home screen on the phone. I first tried having an empty home screen. However, the iPhone’s library quickly replaced it while I was trying to access a few apps I used for different purposes. Most products leverage visual associations (like app icons) to remind me that the app exists and reinforce my habits of using the product more. I wanted to break these associations as well. I found an app call &lt;a href=&quot;https://www.blankspaces.app&quot;&gt;Blank Spaces&lt;/a&gt; to use my home screen without any app icons.&lt;/p&gt;
&lt;p&gt;Here is a screenshot of my home screen:&lt;/p&gt;
&lt;p&gt;&amp;lt;img  class=&quot;mb-5&quot; src=&quot;/spinner.gif&quot; data-src=&quot;/images/content/posts/living-without-algorithms/minimal-home-screen.png&quot; style=&quot;width:200px;&quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;I also turned off all Siri suggestions on my iPhone search (where you pull down the screen to search something).&lt;/p&gt;
&lt;p&gt;The second guideline builds on top of the first guideline. By combining the two, I finally began seeing the impact and changes in my life. I pick up my phone less and less. I am able to evaluate and understand what matters to me the most. &lt;strong&gt;All the noise is gone.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yet, &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;every decision is a loss&lt;/a&gt;. What matters is understanding the gains as well as the losses of any decision.&lt;/p&gt;
&lt;h2&gt;Where I lose&lt;/h2&gt;
&lt;p&gt;Similar to my social media decision, the social impact of this decision is high. &lt;strong&gt;Cutting the ties with algorithmic feeds means I’m no longer informed about popular topics.&lt;/strong&gt; In conversations with friends, I can’t contribute to discussions when they talk about a new TV series or movie or any other popular culture topic.&lt;/p&gt;
&lt;p&gt;When I tell this to people, they are sometimes confused about whether I become aware of any topic at all. &lt;strong&gt;I do get to know them, but I do so either way later than the majority of social media users or from other sources.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let’s take any popular Netflix show. Everyone learns about the show due to Netflix pushing it to the front row in the app. Some people immediately watch and form an opinion. In its first weeks, everyone talks about it (great marketing success, Netflix 👏🏼). I get to know there is a new show and whether it’s a good one via the people I know whose taste in shows is closer to mine. Then I add the show to my watchlist on Obsidian. When I want to watch something next time, I look at my list. By then, the hype is often gone and I can reason to watch it by sheer will, not popularity.&lt;/p&gt;
&lt;p&gt;This approach may not apply to cinephiles or others with a passion. I don’t have a strong passion for the most popular subjects. I enjoy learning about many things, but can’t consider myself deeply knowledgeable in a single topic (I’m a multi-potentialite). I enjoy a lot of topics, but not so deep that I become a geek about it.&lt;/p&gt;
&lt;p&gt;I constantly look for new topics and say no to many. Any algorithmic feed is where I cut things out. &lt;strong&gt;I find popular and hype culture via algorithms to be detrimental.&lt;/strong&gt; I still learn many of the popular stuff via my friends, family, or the people I follow via RSS or email. But these almost always come too late, usually after the popularity is over. That means FOMO for many, but &lt;a href=&quot;/embracing-the-joy-of-missing-out/&quot;&gt;JOMO for me&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Last Thoughts&lt;/h2&gt;
&lt;p&gt;People underestimate real-life media. Before social media was defined with Facebook and Twitter, word of mouth was how society operated, and &lt;em&gt;it still does today&lt;/em&gt;. &lt;strong&gt;People are under the illusion that popularity on platforms is everything.&lt;/strong&gt; However, we still talk about what we are interested in and what’s popular in real life. The only difference is that you &lt;em&gt;have to listen to people&lt;/em&gt; instead of seeing what they say from a screen.&lt;/p&gt;
&lt;p&gt;Additionally, things-everyone-who-uses-social-media-knows are overrated. When you don’t have any algorithms that feed you with these popular topics like funny videos, you can send to your friend via Instagram DM (and receive a ❤️ emoji reaction), you do it in real life! All my friends talk about what they enjoyed or liked or found funny and show them to me. &lt;strong&gt;&lt;a href=&quot;/newsletter/mediations-3/&quot;&gt;Real-life socialization is not extinct&lt;/a&gt; yet.&lt;/strong&gt; It’s the actual way of being social (both for extroverts and introverts).&lt;/p&gt;
&lt;p&gt;By choosing not to use algorithmic feeds, &lt;strong&gt;I rely on the word-of-mouth recommendation engine&lt;/strong&gt;. I don’t care about how many people have seen a video on the other side of the world. I instead invest my energy in being part of a community, either around me or around a particular topic. When you look closely, it’s what everyone wants. The key to getting it is spending time on what matters to you, not what’s popular.&lt;/p&gt;
&lt;p&gt;The popularity these days is in the hands of a few products. As their goals are focused on maximizing their profits, I don’t see a reason why I should keep using their recommendation engines. I prefer making my own feed in my own way.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/living-without-algorithms/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/living-without-algorithms/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What I miss from Twitter and new commitment</title><link>https://candost.blog/journal/no-twitter-but-blog/</link><guid isPermaLink="true">https://candost.blog/journal/no-twitter-but-blog/</guid><pubDate>Wed, 23 Apr 2025 05:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Charity wrote &lt;a href=&quot;https://charity.wtf/2025/04/19/on-writing-social-media-and-finding-the-line-of-embarrassment/&quot;&gt;a post&lt;/a&gt;. It’s probably one of the things I miss the most on Twitter as well. Having the tech industry yapping about things, being a close community where you get to know a lot of opinions, and sharing what’s on your plate without the hassle of writing a blog post.&lt;/p&gt;
&lt;p&gt;That’s why I added a journal section to my blog to replicate what I’ve done on Twitter back then. Yet, I fail to write at a frequency similar to Twitter, just as Charity said.&lt;/p&gt;
&lt;p&gt;So, Charity promises an article per week; I’ll join as well. One entry per week in either the post or journal section, mostly 750-850 words (excluding certain weeks of the year when I travel).&lt;/p&gt;
&lt;p&gt;Like Charity, this is my public accountability post and commitment.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/no-twitter-but-blog/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/no-twitter-but-blog/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Writing is for everyone and no one</title><link>https://candost.blog/journal/writing-is-for-everyone-and-no-one/</link><guid isPermaLink="true">https://candost.blog/journal/writing-is-for-everyone-and-no-one/</guid><pubDate>Mon, 21 Apr 2025 15:31:42 GMT</pubDate><content:encoded>&lt;p&gt;Isn’t the writing about nothing but everything at the same time?&lt;/p&gt;
&lt;p&gt;Words are written for everyone, but most are read by no one.&lt;/p&gt;
&lt;p&gt;If nobody reads them, then why do we write?&lt;/p&gt;
&lt;p&gt;I claim that I write for myself, but I rarely read them again.&lt;/p&gt;
&lt;p&gt;Writing is for the clarity of the thought, but 99.99% of thoughts are still cluttered.&lt;/p&gt;
&lt;p&gt;99% of the writing is not writing; it’s editing.&lt;/p&gt;
&lt;p&gt;Then why don’t we call it editing? Because being an editor is also the role of a writer.&lt;/p&gt;
&lt;p&gt;So, why do we have to edit?&lt;/p&gt;
&lt;p&gt;Because without editing, the words either confuse or mean horrible things.&lt;/p&gt;
&lt;p&gt;Decluttering thoughts is getting rid of the confusion and putting guardrails on thinking.&lt;/p&gt;
&lt;p&gt;If we put guardrails, how do we insist that we are creative?&lt;/p&gt;
&lt;p&gt;Without bounding conditions, creativity can’t find the end of the tunnel.&lt;/p&gt;
&lt;p&gt;So, writing is about dealing with limitations, editing for clarity with the purpose of helping myself, but the output is for everyone else.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/writing-is-for-everyone-and-no-one/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/writing-is-for-everyone-and-no-one/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building Trust Methodologically with Right Tools</title><link>https://candost.blog/building-trust-methodologically-with-right-tools/</link><guid isPermaLink="true">https://candost.blog/building-trust-methodologically-with-right-tools/</guid><description>Leaders often overlook building trust, yet intentional actions can boost team performance. Learn key tools to systematically build trust.</description><pubDate>Tue, 15 Apr 2025 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Leaders deliberately plan to develop products or deliver projects. However, they rarely pay similar attention to building trust. They see trust as “natural” or “part of being a decent human being.” What they don’t know is that if they take a few intentional steps, they can actually build trust more efficiently and recover quicker when the trust is broken.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://dora.dev/capabilities/generative-organizational-culture/&quot;&gt;​According to DORA Research&lt;/a&gt;, building trust has a direct correlation to software delivery performance and contributes to a strong team culture.&lt;/strong&gt; Why, then, do leaders not approach systematically? Because people don’t know where to start or how to approach forming trust methodologically.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trust is like insurance.&lt;/strong&gt; You have to pay upfront to use it when you need it. If you try to use it without having it, like insurance, you’ll get a big NO as an answer. So, how do we get a big YES when we need it? How do we find that premium insurance?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trust has foundations.&lt;/strong&gt; Understanding them—like knowing your insurance policy in detail—is a first good step. I’ve put a reasonable amount of time into learning and practicing these fundamentals to earn the trust across the organization. Let’s dive in.&lt;/p&gt;
&lt;h2&gt;Foundations of Trust&lt;/h2&gt;
&lt;p&gt;Before we start, I want you to think about 2-3 people you trust in your personal and work life. How did you form the trust? Which events led you to trust them? There is no wrong answer.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Think about it for 15 seconds)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Done?&lt;/p&gt;
&lt;p&gt;Did you form trust because they were reliable in what they said, or was it because you got to know their personal life and enjoyed spending time on personal activities?&lt;/p&gt;
&lt;p&gt;I learned from Erin Meyer in The Culture Map book that trust can be put on a scale. On one side, we have cognitive trust (task-based); on the other, we have affective trust (relationship-based). How we form trust with people is influenced by our cultural background.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On cognitive trust (task-based), trust is formed by the reliability of the person.&lt;/strong&gt; The more reliable a person does a task, regardless of the topic, the more trust is put in them. The more the person keeps their promise at work and reliably finishes their job as expected, the more trust they earn.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On affective trust (relationship-based), trust is formed by the closeness between people and the time spent on activities.&lt;/strong&gt; The more people know each other at a personal level, the more they build trust. In these cultures, people trust each other more and even make verbal business contracts. The relationship itself becomes a contract—without writing things down.&lt;/p&gt;
&lt;p&gt;Below, you can see some countries and where they are placed on the trust scale.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/building-trust-methodologically/trusting_scale.png&quot; alt=&quot;Forming trust scale. (Source: The Culture Map by Erin Meyer)&quot; /&gt;
&lt;em&gt;Forming trust scale. (Source: The Culture Map by Erin Meyer)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Türkiye (where I’m coming from) is on the relationship-based culture side, while Germany (where I’m living now) is at the edge of the task-based culture side. Imagine the struggle I had when I first moved to Germany.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The approach to forming trust should change depending on how the other person forms trust, not how we prefer it.&lt;/strong&gt; While we form trust based on our expectations, others form trust based on theirs. So, if we want to earn someone’s trust, we should be aware of that person’s style and adjust our approach. However, some techniques work for the majority.&lt;/p&gt;
&lt;p&gt;Either cognitive or affective, trust can be formed by being reliable, having empathy, showing vulnerability and authenticity and providing transparency. In some cultures (like Turkish culture), character and relationship have more weight; in others (like German culture), reliability plays the most prominent role. I’ve worked with people at both edges of the trust scale. Focusing on these fundamentals helped me earn their trust.&lt;/p&gt;
&lt;p&gt;Once I understood which foundations were at the forefront for a person, I was able to leverage the right tools, which you need to know.&lt;/p&gt;
&lt;h2&gt;Tools to Form Trust&lt;/h2&gt;
&lt;p&gt;Leadership and building trust might come naturally to some, but adding new tools to the toolbelt helps everyone. Without knowing the tools, gaining the trust of the organization or a team won’t be easy. I have written about most of these tools in detail before. So, I don’t go into too much detail.&lt;/p&gt;
&lt;p&gt;Here is the complete list I leverage to build trust (with people directly reporting to me):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/effective-1-1-meetings-one-on-one-meeting-template/&quot;&gt;​Weekly, at least 30 minutes of one-on-ones&lt;/a&gt;: No manager monologue. One-one-ones are for the direct report, not for the manager. Listen carefully and act on what you promise.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/the-must-have-skill-for-every-leader-listening-with-empathy/&quot;&gt;​Show empathy&lt;/a&gt; / Self-awareness: Be genuinely interested and put yourself in their shoes.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/three-types-of-feedback/&quot;&gt;​Share Different Types of Feedback&lt;/a&gt;: Start with appreciation, then move to evaluation and/or coaching. Be aware of what kind of feedback the other side expects at a particular time. The goal: say the hard thing, hear the hard thing.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/transparency-over-context/&quot;&gt;​Transparency over context&lt;/a&gt;: The manager’s job is to manage information flow. Sharing context allows people to do their job effectively while reducing secrecy, which helps build trust.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/how-to-delegate-anything-successfully/&quot;&gt;​Delegation&lt;/a&gt;: Delegate the work you know best or the skill you can perform well to the person who can and wants to acquire it. There is no better way to grow talent. The more you delegate, the more you show that you trust.&lt;/li&gt;
&lt;li&gt;(for more relationship-based people) Lunch / Dinners / Social Events: Don’t underestimate the value of a shared meal. Food brings people together.
​&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;When I work with my peers or my managers, I still leverage most of these tools, but the shape changes.&lt;/strong&gt; With my peers, I rarely do weekly one-one-one but instead have irregular one-on-ones about a specific topic. I increase the level of transparency with them, including more personal details about my team, and I show them even more vulnerability. With my manager, I go all in on transparency and feedback, while delegation plays almost no role.&lt;/p&gt;
&lt;p&gt;Although there is still so much to learn, these fundamentals and essential tools already give a good framework to approach building trust systematically. I’ve been using them with many people, and they simply work. If you haven’t done it already, give it a try.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/building-trust-methodologically-with-right-tools/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/building-trust-methodologically-with-right-tools/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Thinking Beyond the Desk</title><link>https://candost.blog/journal/thinking-beyond-the-desk/</link><guid isPermaLink="true">https://candost.blog/journal/thinking-beyond-the-desk/</guid><pubDate>Fri, 11 Apr 2025 06:15:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the things I miss the most in my software engineering job is being able to close the computer and stop doing the work. The work needs an external tool that you depend on. The manager’s job is &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;different&lt;/a&gt;. You rarely need an external tool, and you can’t really turn off your brain, especially when you have a stake in a topic. You keep thinking about it because many problems neither need a computer nor a meeting.&lt;/p&gt;
&lt;p&gt;People-related challenging topics, such as difficult &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;feedback conversations&lt;/a&gt;, team restructuring and &lt;a href=&quot;/rethinking-performance-the-real-meaning-of-a-high-bar/&quot;&gt;performance improvement plans&lt;/a&gt; are sources of stress. When under stress, the thought spirals are endless. The worry about how we will impact someone else’s life and how we will be seen in the social setting keeps the mind busy. Hence, it’s easy to ponder and have different scenarios play in the head long before the actual conversation.&lt;/p&gt;
&lt;p&gt;Situations like these require neither a meeting room nor a desk or laptop. You simply continue thinking about it during cooking, walking, watching something, or any other activity you do. This is bad. I believe the root cause is not allocating the time correctly.&lt;/p&gt;
&lt;p&gt;Manager’s thinking time during work is almost nonexistent, especially these days. Many managers (&lt;a href=&quot;/journal/ctos-expected-to-do-more-in-2024/&quot;&gt;including CTOs&lt;/a&gt;) are expected to be the master of many trades, including hands-on work, strategy, business, people, psychology, software design, and many more. While trying to do all, there is no time left to think about that difficult feedback conversation.&lt;/p&gt;
&lt;p&gt;Without having any space to work out the details of the conversation, the strategy and the arguments, there is no way that any of these will be done during the work time. Eventually, thinking shifts to the time we go out of work because, finally, all other things are out of sight.&lt;/p&gt;
&lt;p&gt;I &lt;a href=&quot;/beyond-meetings-improving-managers-schedule/&quot;&gt;wondered how to stop&lt;/a&gt;. Meditation, journalling and mindfulness are things that come to mind. However, building mindfulness takes ages. It requires practice. Maybe the solution is to set solo work time at work and block it on the calendar. Then, use this time to journal, plan, and think about a topic in whatever format that fits. Writing or going for a walk is my default option. These don’t seem like visible work to anyone, but it’s a different type of job that helps all the visible ones.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/thinking-beyond-the-desk/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/thinking-beyond-the-desk/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Improving My Schedule as a Manager</title><link>https://candost.blog/beyond-meetings-improving-managers-schedule/</link><guid isPermaLink="true">https://candost.blog/beyond-meetings-improving-managers-schedule/</guid><description>How I balance meetings, solo work, and reflection time. While meetings dominate, uninterrupted time for planning and spontaneous chats is crucial for managers.</description><pubDate>Tue, 01 Apr 2025 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;One of my previous managers told me, “The manager’s work happens in meetings,” while I was complaining about the lack of uninterrupted time. Now, I can say that my manager was only half right. Considering &lt;a href=&quot;/effective-1-on-1-meetings-own-your-one-on-one-meeting/&quot;&gt;one-on-ones&lt;/a&gt;, alignment, check-in, &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;decision-making&lt;/a&gt; and many other meetings, it’s true that most of the work &lt;em&gt;happens&lt;/em&gt; during meetings. However, a significant chunk of work—arguably the most crucial—is outside scheduled meetings: spontaneous chats, reflection time and solo work. Without them, no manager can succeed.&lt;/p&gt;
&lt;p&gt;When I look at my calendar, 60-70% of my time, on average, is occupied by meetings. Regular and one-off meetings take most of my time. &lt;strong&gt;Realizing that I don’t have the luxury of having a half day without interruption and working with, as &lt;a href=&quot;https://paulgraham.com/makersschedule.html&quot;&gt;Paul Graham put&lt;/a&gt;, maker’s time after becoming a manager was an eye-opener.&lt;/strong&gt; It’s also what my manager was pointing to.&lt;/p&gt;
&lt;h2&gt;Manager’s vs. Maker’s Time&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Managers work with time slots like thirty minutes to an hour.&lt;/strong&gt; Most slots are occupied with meetings. Meeting-free days are rare. I know there are organizations with meeting-free days, but I observe that it requires immense discipline from everyone. Most organizations default back to having &lt;em&gt;fewer&lt;/em&gt; meetings on a &lt;em&gt;meeting-free&lt;/em&gt; day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Meetings are an unavoidable part of the work&lt;/strong&gt;, a big part. It is where the manager gathers context, exchanges ideas, &lt;a href=&quot;/the-must-have-skill-for-every-leader-listening-with-empathy/&quot;&gt;listens to others&lt;/a&gt; and ensures people are aligned and progress toward a shared goal. It is the work of the manager, which is different from the makers’ work.&lt;/p&gt;
&lt;p&gt;Makers work with big-time chunks, like spending half a day finishing a piece of work. &lt;strong&gt;Any meeting—regardless of the length—disrupts this flow, and the quality of the output gets lower. Hence, they try to avoid meetings at all costs.&lt;/strong&gt; The focus needed to complete the creative work overrules the importance of any work that’s done in collaboration. Most of the complaints of makers come from managers not being mindful of the maker’s time structure.&lt;/p&gt;
&lt;p&gt;Although I avoid interrupting &lt;em&gt;anyone’s&lt;/em&gt; &lt;a href=&quot;/newsletter/mektup-4/&quot;&gt;flow&lt;/a&gt; (if they have headphones on or have a focus time blocker on their calendar or status on team chat), I also had a LOT of spontaneous chat makers initiated either via sending me a message (“Do you have a few minutes?”), reaching out to me on my desk or catching me while getting a coffee in the office.&lt;/p&gt;
&lt;h2&gt;Spontaneous Chats&lt;/h2&gt;
&lt;p&gt;Random chats bring so much value for both sides that I began having slack time in case any of these pop up. Moreover, &lt;strong&gt;having this slack time gave me an opportunity to have spontaneous chats with others outside of my team&lt;/strong&gt;. Even though we don’t directly work together, knowing people in the organization proved to bring a lot of value later on.&lt;/p&gt;
&lt;p&gt;​As knowledge is power in our age, knowing who to reach out to to gather context for a project or connecting people who need each other is one of the superpowers of any manager. &lt;strong&gt;Spontaneous chats are the place to build that information map, so I know who to go to when documentation is not up-to-date&lt;/strong&gt; (&lt;em&gt;when is it ever up-to-date?&lt;/em&gt;). While these chats are random, my strategy is definitely not. I intentionally create slack time to have these chats. That requires setting uninterrupted solo work and reflection time on my calendar.&lt;/p&gt;
&lt;h2&gt;Solo Work&lt;/h2&gt;
&lt;p&gt;Solo work is what my manager failed to warn me to be mindful of (he actually told me, but way too late). It’s that work when you ask a manager about how their week was, and you hear them saying, “I finally got some work done.”&lt;/p&gt;
&lt;p&gt;It’s hard to set time aside to write that document, plan an upcoming meeting to maximize the outcome or share well-written updates with stakeholders. &lt;strong&gt;I need at least a few hours a week to work alone to &lt;a href=&quot;/speaking-writing-and-high-quality-ideas/&quot;&gt;jot down my thinking&lt;/a&gt;, build arguments, and think about how I will approach problems that involve people and technical systems.&lt;/strong&gt; I think hard about how I will &lt;a href=&quot;/transparency-over-context/&quot;&gt;set the environment&lt;/a&gt; for others to solve the problem. As this work is not visible on the calendar, many managers put an extra hour or two in a week to “get some work done.”&lt;/p&gt;
&lt;p&gt;When I try to put this work on my calendar, I often get other meetings scheduled over them. Just because it’s solo work, people’s argument is, “It’s easier to move it compared to a meeting with ten participants.” I’m not going to dive into how to say no to that meeting, but solo work is one of the fundamental parts of the job. It should find its place on the calendar every week.&lt;/p&gt;
&lt;p&gt;There is one more time category managers have, which often causes overtime work.&lt;/p&gt;
&lt;h2&gt;Reflection &amp;amp; Planning Time&lt;/h2&gt;
&lt;p&gt;I fall into a trap a lot. My mind wonders when I cook, walk my dog, run, or exercise, and I reflect on my work. I know I’m not alone.&lt;/p&gt;
&lt;p&gt;Management is a lot about reflecting on yesterday and planning today and the future. It’s not only about meetings, writing a document, or sending a message in a team chat. &lt;strong&gt;It’s thinking about all of these &lt;em&gt;before&lt;/em&gt; doing it, learning from past interactions, and reflecting on the last spontaneous chat or recent outcomes to prepare for the difficult feedback conversation in the next one-one-one.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This reflection time is the most neglected one, but in my experience, the most crucial one. When I neglect, I catch myself doing it outside of my working hours &lt;a href=&quot;/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/&quot;&gt;while walking&lt;/a&gt; my dog. It happens whether I like or want it or not. So, it’s better to make it intentionally part of the working hours. Work should stay at work anyway.&lt;/p&gt;
&lt;p&gt;Whether solo work, reflection time or meetings, I also learned that a manager’s calendar is very dynamic compared to a maker’s calendar. When I look at my last 8-10 weeks on my calendar, none of the two are the same. Hence, it’s difficult to say these hours are for this work and those for that. Some weeks, meetings occupy the most time, and other weeks, there is solo work. When any category dominates my two weeks back to back, I know I’m not getting my work done and I need to change something.&lt;/p&gt;
&lt;p&gt;How do you spend your time at work? What do you do to improve your schedule? Just comment or send me an email via button below. I read every email.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/beyond-meetings-improving-managers-schedule/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/beyond-meetings-improving-managers-schedule/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On Retaining People</title><link>https://candost.blog/on-retaining-people/</link><guid isPermaLink="true">https://candost.blog/on-retaining-people/</guid><description>Organizational change is inevitable; leaders must adapt, understand they need to let some people go, and create environments where teams thrive with evolution.</description><pubDate>Tue, 25 Mar 2025 07:05:00 GMT</pubDate><content:encoded>&lt;p&gt;The more I think about why organizational changes happen, the more I see that it’s merely an adjustment to the environment. The world is changing all the time. If you don’t adjust and evolve your organization with it, you’re practically falling behind and will eventually go out of business.&lt;/p&gt;
&lt;p&gt;You have to keep the momentum in the team and constantly reiterate yourself and your team. You always have to adapt your strategy to macro and micro changes. Sometimes, you even have to &lt;em&gt;be the change&lt;/em&gt; that forces others to adapt.&lt;/p&gt;
&lt;p&gt;While doing so, not everyone will be on board with your direction. Some will yell at you to tell you that you’re going in the wrong direction. You’ll not listen to these screams and keep pushing in your direction because you’ve made your decision or are stubborn enough to think that “others are wrong.” In time, these screams won’t disappear but will be less annoying because most people will adapt to the new change and lower their voices. You’ll be surprised to see how people change and how flexible they are when you look back. But some…&lt;/p&gt;
&lt;p&gt;Some will leave. You’ll want to convince them to stay, follow you and help you on your journey because they are brilliant. They are the smart ones in the “hire smart people and get out of their way” phrase. You’ll offer even more compensation for them to stay because they play a key role in your organization. You’ll take an extra mile and do whatever you can to keep them. And that will be a mistake. And that will be a mistake over another mistake you made earlier.&lt;/p&gt;
&lt;p&gt;When you offer them a better deal for them to stay, you think you’re doing best for the team and organization because you’ll struggle when the person is not there and thing will fall apart. Then, you’ll remember a phrase you’ve heard before and ask yourself many questions.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As a leader, your job is not to retain people but to create an environment where they will want to stay.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You’ll pause. Will gain another perspective. Suddenly you’ll realize that offering more was a mistake. Then, you’ll be fine with the person leaving. You’ll realize the person wasn’t fit for the environment and the culture you want to form in your changing organization. Either way, you’ll be better off without them going forward. No hard feelings. Then, you’ll realize the impact of the person in the organization. You’ll see the mistake you’ve made way earlier.&lt;/p&gt;
&lt;p&gt;You relied on one person too much. You built a castle with a very weak foundation: the castle was standing on one person’s shoulder. When the person left, the castle started to fall. Now, you have to build it again. But this time, you’re wiser. You’re not going to construct it on someone else’s shoulder. You’ll build standalone. That will be a good correction. You will start but will come across another roadblock.&lt;/p&gt;
&lt;p&gt;You need to part ways with some people because they don’t help you build the castle in the way you want or consider best for your organization. Ideally, these people will leave themselves. But ideals don’t always happen. So, you’ll have these difficult conversations. You’ll blame and question yourself on how you couldn’t think about it before, how you couldn’t see it.&lt;/p&gt;
&lt;p&gt;You can’t. Don’t worry. Things change around you, and you can’t predict and prepare for all of these scenarios. You’ll try your best to say a nice and grateful goodbye to the people you’re parting your ways with. However, circumstances might not allow you to have everything in the way you want. So, you might say a shitty goodbye. Everyone will blame you for it. Without knowing what you are going through, they will make you the villain. You’ll accept it. You have to. The mistake was yours; you have to own all criticism.&lt;/p&gt;
&lt;p&gt;Sometimes, you won’t make it shitty, but the people leaving will do it. They will make everyone suffer unnecessarily while leaving. You’ll never know why they do this because your communication bridges are already shattered. You’ll pray to finish this mess as soon as possible and go back to your &lt;em&gt;regular&lt;/em&gt; life.&lt;/p&gt;
&lt;p&gt;When you get over this, you will start new. You spent some trust credits on the way. You have to earn more. You’ll start looking for new people who are motivated by your culture. As people always think, they bring a fresh perspective. Yet, they rarely do. They don’t have a historical understanding of what happened. They fit your new culture better. That’s all.&lt;/p&gt;
&lt;p&gt;Once you are back to regular life, you’ll realize how quickly people adjust to the new reality. The ones who couldn’t adapt or were unwilling to do so left the organization. The remaining members are your real team.&lt;/p&gt;
&lt;p&gt;Now, you have a second chance. You’ll start looking for ways to build a strong new culture.&lt;/p&gt;
&lt;p&gt;It will be challenging, but one way or another, you’ll work on changing the culture by keeping in mind the phrase you remembered a while ago:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As a leader, your job is not to retain people but to create an environment where they will want to stay.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You’ll work tirelessly, thinking that you’ll reach that environment. However, that culture will only be half-working until the external environment changes again or until you make your next mistake. Once it happens, you’ll start all over again.&lt;/p&gt;
&lt;p&gt;This time, you know the drill, although knowing it won’t make it easier. You’ll take a deep breath and begin.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/on-retaining-people/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/on-retaining-people/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Transforming Complaints into Actions</title><link>https://candost.blog/transforming-complaints-into-actions/</link><guid isPermaLink="true">https://candost.blog/transforming-complaints-into-actions/</guid><description>Transform complaints into action by asking, &apos;What do you expect from me?&apos; Foster trust and focus on outcomes in your team.</description><pubDate>Tue, 18 Mar 2025 06:05:00 GMT</pubDate><content:encoded>&lt;p&gt;During one-on-ones or team meetings, people sometimes complain endlessly. Managers struggle to understand how to respond to their direct reports’ complaints. They become people’s venting sponges, having no idea how to react or take action on most complaints.&lt;/p&gt;
&lt;p&gt;I’ve been in that place, and I know I’m not alone. I’ve also complained a lot to my managers. Some of them also had no idea what to do. I know it because I remember their faces. They looked calm. They tried to hide their frustration. They tried to listen to me and took my heat off about a topic that didn’t matter a week later.&lt;/p&gt;
&lt;p&gt;I also listen to people’s complaints inside and outside of my team. As much as I try to &lt;a href=&quot;/the-must-have-skill-for-every-leader-listening-with-empathy/&quot;&gt;listen compassionately&lt;/a&gt;, my mind wanders while I wait for my turn to ask a question. Most of the time, I ask a few questions to &lt;a href=&quot;/bridging-the-gap-understanding-the-illusion-of-transparency-in-communication/&quot;&gt;understand the person’s feelings and thoughts better&lt;/a&gt;. However, &lt;strong&gt;I sometimes ask ONE question to kick people out of their complaining cycle.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not because I get tired of listening to them but because it’s my job (as a manager) to keep the focus on the outcomes while understanding people’s needs. &lt;strong&gt;Endlessly complaining has no outcomes.&lt;/strong&gt; Zero.&lt;/p&gt;
&lt;p&gt;Once I discovered one simple question that stops people’s complaints and remarkably moves them to a productive zone, I tested it on myself.&lt;/p&gt;
&lt;p&gt;When I caught myself complaining to my manager, I stopped. I answered that one question internally and told my manager, “Complaining doesn’t bring any value; here is what I will do about this issue that I care about a lot: I’ll do X, then Y. If it goes well, Z will be the next.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I realized that my complaints always had an underlying reason.&lt;/strong&gt; When I asked myself that one question, I auto-magically tried to find what that reason was. &lt;strong&gt;Many managers fail to find the root cause because they rarely focus on truly understanding the person.&lt;/strong&gt; For example, when someone constantly complains about never getting a chance to rewrite the legacy code, they often have another reason underneath. They may fear falling behind industry standards, which may create insecurity in their future, or they might feel that people don’t trust them.&lt;/p&gt;
&lt;p&gt;Now, I tested the same question; I began asking my direct reports.&lt;/p&gt;
&lt;p&gt;The question is, &lt;strong&gt;“What do you expect from me?”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When someone on my team starts complaining a lot, I ask, “What do you expect from me?” When I complain too much to my manager, I put myself in their shoes and ask, “What do I expect from my manager?” Then, I dive deep and try to understand what I really care about and what I need because if I’m going to ask my manager for something, it has to be worth it.&lt;/p&gt;
&lt;p&gt;When I ask my team members the question, sometimes they answer, “Nothing. I’m just venting; I needed to take the heat off.” That’s great! Now, I know that’s what they expect, and I keep listening. However, the answer is often something else.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;With that question, we open a conversation and start digging to find out what the person cares about.&lt;/strong&gt; I once had an engineer on my team who was very unhappy about many decisions in the organization. I asked the same question while they were complaining. Their answer was, “Can you help me make my concerns visible because I don’t have the forum to do it myself?” Through our conversation, I realized that they cared about accountability. Back then, a manager could get away with many bad decisions. For them, it wasn’t about any bad decision itself; it was about the dynamics of the organization. They didn’t have a voice or a forum to raise a concern. What we did was set up a meeting with the C-level.&lt;/p&gt;
&lt;p&gt;Today, I sometimes complain to my manager, and my team does the same to me. &lt;strong&gt;Complaining shows that we care about what we are doing; it’s a very human thing. But when it gets too much and is not actionable, it becomes frustrating, especially for managers.&lt;/strong&gt; A simple question can sometimes change a lot of things. A slight nudge to others can change the whole team’s mood. But don’t forget: &lt;em&gt;this question requires trust and asking with curiosity.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If the manager asks it with frustration, the team will close their communication doors. Even if the manager is frustrated, that frustration has to be hidden. &lt;strong&gt;The question should come from a place of genuine curiosity and be asked in a trustful environment.&lt;/strong&gt; Without these preconditions, it’s doomed to fail.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Next time you complain to your manager (or anyone in your life, really), ask yourself what you expect from the person listening to you.&lt;/strong&gt; Even if you don&apos;t answer loudly, this will help you clarify your thoughts and expectations, which will definitely lead to a happier and calmer life. If you find the answer, let the other person know as well so they don’t get frustrated.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/transforming-complaints-into-actions/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/transforming-complaints-into-actions/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>L8Conf and DecompileD Conferences</title><link>https://candost.blog/journal/l8-decompiled-conf/</link><guid isPermaLink="true">https://candost.blog/journal/l8-decompiled-conf/</guid><pubDate>Sat, 08 Mar 2025 15:25:42 GMT</pubDate><content:encoded>&lt;p&gt;In February, I gave a talk at the DecompileD Conference in Dresden, Germany, titled “Building Incident Management Skills.” I shared how we built and implemented the Incident Coordinator Role, which is focused on reducing the pressure from first responder engineers and coordinating the incident, allowing engineers to focus on resolving the incident quickly.&lt;/p&gt;
&lt;p&gt;This month, I will be speaking at L8Conf in Warsaw, Poland. This time, I’ll talk about “Overcoming Bottlenecks of Platform Teams.” How a platform team should approach their workload and which thinking strategies they should use will be the topic of the day. Preparing for this talk takes much more time than I initially thought. I will be exposing my failures in the last two years. I’m excited and nervous at the same time.&lt;/p&gt;
&lt;p&gt;If you want to join me and have a chat during the conference, you can use the L8_SPEAKER discount code to get 20% off on the ticket price. Buy your ticket &lt;a href=&quot;https://l8conf.com/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/l8-decompiled-conf/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/l8-decompiled-conf/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Act as if...</title><link>https://candost.blog/notes/77c/</link><guid isPermaLink="true">https://candost.blog/notes/77c/</guid><pubDate>Thu, 06 Mar 2025 05:35:01 GMT</pubDate><content:encoded>&lt;p&gt;“Act as if…”&lt;/p&gt;
&lt;p&gt;When you’re trying to get buy-in, share information and drive decisions, always put yourself in your audience’s seats while preparing. Ask yourself what they would expect from your presentation, as well as your strategy and approach. Act as if you’re in their seats and give yourself feedback. Look for what you’re missing and what you’re adding unnecessarily. Use this also to structure your talk: consider what they know already and what they don’t. &lt;a href=&quot;/notes/44k/&quot;&gt;Push yourself outside of your thinking bubble&lt;/a&gt;. If you’re giving a presentation to higher-level leaders or stakeholders, use this to &lt;a href=&quot;/notes/42e/&quot;&gt;anticipate questions&lt;/a&gt; they might ask and answer them in your presentation.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2d/&quot;&gt;Focus on making one point the key takeaway&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You might need to &lt;a href=&quot;/notes/3b7/&quot;&gt;audit your team in three pillars&lt;/a&gt; to present in higher-level meetings.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3e/&quot;&gt;Consider the medium&lt;/a&gt; while acting as if.&lt;/li&gt;
&lt;li&gt;This anticipating approach will &lt;a href=&quot;/notes/19c/&quot;&gt;help you move faster&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Don’t forget to lay out &lt;a href=&quot;/notes/20c/&quot;&gt;the pros and cons&lt;/a&gt; and why you go with one direction.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/77c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/77c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>People model you as a leader</title><link>https://candost.blog/notes/87a/</link><guid isPermaLink="true">https://candost.blog/notes/87a/</guid><pubDate>Wed, 05 Mar 2025 06:12:01 GMT</pubDate><content:encoded>&lt;p&gt;People model you as a leader. How you do anything is how you do everything.
People observe you and &lt;a href=&quot;/notes/9d/&quot;&gt;look up to you all the time&lt;/a&gt;. How you &lt;a href=&quot;/notes/77/&quot;&gt;behave in a meeting&lt;/a&gt;, how you approach a problem, and how you resolve an issue will be &lt;a href=&quot;/notes/54/&quot;&gt;reflected in people&lt;/a&gt;. Even when you want the least, like when you take a wrong action, it can change how people evaluate you in a way that reversing it will take years. Act thoughtfully, don’t &lt;a href=&quot;/notes/20d/&quot;&gt;impulse react&lt;/a&gt; and approach every single moment mindfully.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Notes:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;Say, “I don’t know,” when you don’t know, to&lt;/a&gt; build an open and trustful culture.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/87a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/87a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Real Meaning of a High Bar</title><link>https://candost.blog/rethinking-performance-the-real-meaning-of-a-high-bar/</link><guid isPermaLink="true">https://candost.blog/rethinking-performance-the-real-meaning-of-a-high-bar/</guid><description>Discover the meaning of a high bar: ownership, growth, and sustainable excellence. Learn how leaders inspire teams to unlock potential and redefine standards.</description><pubDate>Wed, 05 Mar 2025 05:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Many job descriptions, company websites, and leaders mention “having a high bar in performance.” Everyone talks about it, but few define it. Nobody is transparent and doesn’t explain what they think. Defining the high bar isn’t just an intellectual exercise—it’s about setting expectations for ourselves and those we work with.&lt;/p&gt;
&lt;p&gt;I like clarity. So, here is my attempt to define the high bar—at least mine, at least the one I keep for myself, and the one I apply to people reporting to me.&lt;/p&gt;
&lt;p&gt;To me, &lt;strong&gt;having a high bar in performance means constantly living with and demonstrating two key traits: an ownership mindset and an intrinsic drive for continuous improvement.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Ownership Mindset: The Foundation&lt;/h2&gt;
&lt;p&gt;I &lt;a href=&quot;/strong-ownership-culture-in-a-team/&quot;&gt;believe&lt;/a&gt; that people are motivated and driven by purpose when they own, &lt;em&gt;truly own&lt;/em&gt;, what they do. &lt;strong&gt;Truly owning means taking full responsibility for all aspects of the work.&lt;/strong&gt; It’s not like Gollum’s ownership of the ring in The Lord of The Rings but more like Sam’s mission of helping Frodo. Sam is driven with a purpose. He &lt;a href=&quot;/learnings-on-dealing-with-ambiguity/&quot;&gt;bears all the burdens on the road&lt;/a&gt;, sometimes more than Frodo. Even when everything is against him, he doesn’t give up and saves Frodo on various occasions. What he shows everyone is a true ownership mindset.&lt;/p&gt;
&lt;p&gt;When people own the idea, put in the work, and drive themselves to the results, remarkable things happen. Every time I see someone owning a piece of work, I see the pride in their eyes when it reaches its end. They meticulously consider all the details, eliminate various risks, work hard and finally achieve an outcome.&lt;/p&gt;
&lt;p&gt;Similarly, &lt;a href=&quot;/dont-take-responsibility-more-and-stop-blaming/&quot;&gt;they own the failure&lt;/a&gt;, too. If anything fails, they never say, “Ah, this failed because of that person or this or that.” They approach with, “&lt;em&gt;This failed; it’s on me and here are the things I will do differently from now on to ensure it doesn’t happen again.&lt;/em&gt;”&lt;/p&gt;
&lt;p&gt;But the ownership alone isn’t enough—it must be paired with a relentless desire for improvement.&lt;/p&gt;
&lt;h2&gt;Relentless Improvement: The Second Pillar&lt;/h2&gt;
&lt;p&gt;The second pillar of the high bar is the unending desire to improve—known as the growth mindset. It involves &lt;strong&gt;a hunger for improvement and a curiosity to explore&lt;/strong&gt; &lt;a href=&quot;/notes/19a/&quot;&gt;&lt;strong&gt;unknown unknowns&lt;/strong&gt;&lt;/a&gt;, which keeps the person “awake” until all are discovered.&lt;/p&gt;
&lt;p&gt;They rarely settle into a comfort zone at anything; &lt;strong&gt;they continually seek more—not for the sake of impressing others or for any external reason, but out of a genuine intrinsic drive.&lt;/strong&gt; This is not because someone encouraged them to learn (&lt;em&gt;though this can be a valid reason, too&lt;/em&gt;), but rather because, even without guidance, they actively, consistently, and &lt;a href=&quot;/what-hades-the-game-had-taught-me/&quot;&gt;relentlessly pursue opportunities&lt;/a&gt; to get better at what they do.&lt;/p&gt;
&lt;p&gt;They also do it methodologically. &lt;strong&gt;They focus on getting the fundamentals right and strong, adjusting their learning techniques, and looking for ways to increase their overall productivity and speed of learning, concentrating on the holistic picture and specifics of what they do simultaneously.&lt;/strong&gt; They keep their attention on the outcome and try to get rid of small frictions that prevent them from reaching it.&lt;/p&gt;
&lt;p&gt;I once worked with an engineer who mastered every shortcut in their tools only to &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;eliminate distractions&lt;/a&gt; while working and focus on achieving outcomes. They were annoyed when they needed to stop and find out how to use their tool. They paused, took note of that, and the next time we worked together on something, I saw them already using a new shortcut. They didn’t brag to others about how many shortcuts they knew. They were focused on learning and adjusting everything in their work to become better and faster. They were humble.&lt;/p&gt;
&lt;h2&gt;Humility&lt;/h2&gt;
&lt;p&gt;Both the ownership and growth mindsets demand humility. &lt;strong&gt;People with a high bar accept setbacks and take full accountability for them.&lt;/strong&gt; They endure reality as it is, know that there are things to improve, and never show off what they have done while still celebrating their achievements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Humility keeps them grounded as they strive for a higher standard.&lt;/strong&gt; It allows them to admit and study their mistakes, &lt;a href=&quot;/maximizing-personal-growth-by-understanding/&quot;&gt;seek feedback even when nobody is giving it&lt;/a&gt;, learn from others, and &lt;a href=&quot;/krishnamurti-and-seneca-on-freeing-the-mind/&quot;&gt;stay open to new ideas&lt;/a&gt;. Humility prevents their ambition from turning into arrogance.&lt;/p&gt;
&lt;p&gt;This humility also &lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;shapes how they approach their work&lt;/a&gt;—not with burnout-causing hustle but with a sustainable focus.&lt;/p&gt;
&lt;h2&gt;Not a Hustle Culture; It’s a Long Term Game&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Hustle culture glorifies overwork, but people with a high bar know better—they play the long game and avoid working more than necessary.&lt;/strong&gt; The growth mindset, which involves adjusting every specific detail of work to prevent distractions, focuses on eliminating distractions and maximizing impact with &lt;em&gt;just enough&lt;/em&gt; effort.&lt;/p&gt;
&lt;p&gt;These people work intensely when they focus but take breaks to be ready for the next round. They aim to &lt;a href=&quot;/seek-goals-that-will-change-how-you-live/&quot;&gt;keep their pace and sustain it for a very long time&lt;/a&gt;, leaving the &lt;a href=&quot;https://www.mpfa.org.hk/en/mpf-investment/principles-of-fund-investment/compounding-effect&quot;&gt;&lt;em&gt;compounding effect&lt;/em&gt;&lt;/a&gt; to play its role.&lt;/p&gt;
&lt;p&gt;They know they must sustain their energy and momentum because the moment they touch the high bar, the bar rises—all the time—because they set the bar higher themselves. They show everyone that the high bar is an intrinsic motive, not an external one, as organizations claim.&lt;/p&gt;
&lt;p&gt;Yet, some people need guidance to unlock this approach and understand how the high bar works. That’s where managers or coaches come in.&lt;/p&gt;
&lt;h2&gt;The Role of The Manager&lt;/h2&gt;
&lt;p&gt;Sometimes, as a manager, I hear that I am constantly raising the bar, which may make people feel like they are always trying to do more, meet an impossible task, and fulfill unattainable expectations—making them feel like &lt;a href=&quot;https://www.wikiwand.com/en/articles/Sisyphus&quot;&gt;Sisyphus&lt;/a&gt;. However, &lt;strong&gt;my goal isn’t just to push people harder—it’s to help them realize their potential by gradually raising expectations based on their capabilities.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I begin working with someone new, I start by observing where they are—how they approach their craft and what they’re capable of. Once the evaluation is done, we put a high bar &lt;em&gt;together&lt;/em&gt;—high enough that it is not impossible to reach but definitely requires a good amount of effort.&lt;/p&gt;
&lt;p&gt;When I see them touching that bar, I raise it &lt;em&gt;only if&lt;/em&gt; &lt;em&gt;they don’t&lt;/em&gt;. Because my job is to show people what they are capable of. They might not know their potential, but my job is to show them what is possible when &lt;em&gt;they aim right&lt;/em&gt; and &lt;em&gt;try their best&lt;/em&gt;. &lt;strong&gt;Incrementally raising expectations helps them build confidence while unlocking their potential step by step.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Of course, there is a catch. Once I discover that their bar is lower than what I would have expected at their level (according to the &lt;a href=&quot;/the-good-the-bad-and-the-ugly-of-career-ladders-and-frameworks/&quot;&gt;organization’s career-level expectations&lt;/a&gt;), the improvement steps can become a big challenge. However, we set the bar low first. Once we reach that lower bar, we start increasing again.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Once a person develops this intrinsic desire and learns to work to a high bar, they unlock a new world—a journey to becoming a corps d’elite.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ultimately, people with a high bar redefine expectations—for themselves and &lt;a href=&quot;/passing-down-the-experience/&quot;&gt;everyone around them&lt;/a&gt;. They don’t just meet standards; they set new ones and inspire others to rise alongside them.&lt;/p&gt;
&lt;p&gt;And that’s how I define a high bar in performance.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/rethinking-performance-the-real-meaning-of-a-high-bar/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/rethinking-performance-the-real-meaning-of-a-high-bar/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>In ambiguity, use a compass, not a map</title><link>https://candost.blog/notes/29b/</link><guid isPermaLink="true">https://candost.blog/notes/29b/</guid><pubDate>Sat, 01 Mar 2025 11:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In uncertainty, don’t seek or move with a map but with a compass.
You need to be alert to your surroundings more than relying on external guidance. With a compass, you have a direction to go and must adjust yourself depending on what you find on the way. You have to discover the territory yourself. A map does not fully reflect the territory. Someone else’s path is written on the map, not yours.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;The compass of a team is &lt;a href=&quot;/notes/56m/&quot;&gt;their vision&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/29b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/29b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Form teams around visions</title><link>https://candost.blog/notes/56m/</link><guid isPermaLink="true">https://candost.blog/notes/56m/</guid><pubDate>Wed, 26 Feb 2025 07:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As an engineering director (or executive), &lt;a href=&quot;/notes/24a1/&quot;&gt;compartmentalize your teams around visions&lt;/a&gt;. What’s &lt;a href=&quot;/notes/34/&quot;&gt;your vision for the group&lt;/a&gt;? You’ll not have full context on anything about these teams. Don’t try gaining too deep context unless it’s absolutely needed. Once the teams are built around a vision, &lt;a href=&quot;/notes/20m/&quot;&gt;the group can create context and use it to achieve their mission&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;Strong teams are motivated by goals&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42e/&quot;&gt;Use second-order thinking to analyze the consequences of these visions and teams&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56m/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56m/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Contain a workaround in a scope</title><link>https://candost.blog/notes/39b/</link><guid isPermaLink="true">https://candost.blog/notes/39b/</guid><pubDate>Wed, 26 Feb 2025 06:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Managing workarounds in complex situations is tricky. If an engineer negotiates about building a workaround (to avoid it), you’ll always have to &lt;a href=&quot;/notes/49/&quot;&gt;pay the price sooner or later&lt;/a&gt;. As a manager (and also a software engineer), focus on how you can contain this workaround’s impact on the project and product. Try not to spread the workaround into the whole codebase and aim to contain it. Not only contain it, but make it &lt;a href=&quot;/notes/71a/&quot;&gt;obvious&lt;/a&gt; to the next developer (and your future self) that it’s a workaround that you shouldn’t overlook.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/adrs-rfcs-differences-when-which/&quot;&gt;ADRs are a good way to record the decision about a workaround&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;Open cultures&lt;/a&gt; help people surface the actual cost of workarounds.&lt;/li&gt;
&lt;li&gt;Workarounds create &lt;a href=&quot;/notes/49/&quot;&gt;accidental complexity&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Focus on &lt;a href=&quot;/notes/42/&quot;&gt;conceptual integrity&lt;/a&gt; to contain a workaround.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/39b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/39b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Tears fall for a reason</title><link>https://candost.blog/notes/62b/</link><guid isPermaLink="true">https://candost.blog/notes/62b/</guid><pubDate>Wed, 26 Feb 2025 06:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“Tears fall for a reason, and they are your strength, not weakness.” — The Boy, The Mole, The Fox and The Horse&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;/notes/7a/&quot;&gt;Make your weakness your strength&lt;/a&gt;. If you cry, that doesn’t show that you’re weak. It shows that you deeply care about something. When you cry, &lt;a href=&quot;/notes/3b6a/&quot;&gt;look for&lt;/a&gt; what exactly you are crying for. Once you find it, that’s your strength. &lt;a href=&quot;/notes/46h/&quot;&gt;Embrace it&lt;/a&gt; and turn it into a superpower for the rest of your life.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;In public speaking, &lt;a href=&quot;/notes/17e/&quot;&gt;excitement or nervousness comes from the same direction&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33b/&quot;&gt;Crying doesn’t shake your authority&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/62b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/62b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Withholding Judgment—The Forgotten Way</title><link>https://candost.blog/withholding-judgment-the-forgotten-way/</link><guid isPermaLink="true">https://candost.blog/withholding-judgment-the-forgotten-way/</guid><description>Discover the power of withholding judgment to make better decisions, foster understanding, and navigate the complexities of modern information overload. Learn how to pause, assess, and experiment for more informed choices.</description><pubDate>Thu, 20 Feb 2025 05:05:00 GMT</pubDate><content:encoded>&lt;p&gt;In recent years, I feel like we’ve been constantly forced to choose—agree or disagree, take a side, make a decision. &lt;a href=&quot;/dont-assume-consensus-in-the-absence-of-objection/&quot;&gt;Silence is often interpreted as agreement&lt;/a&gt;. But what about when we simply can’t decide? What about the time we deliberately step back and choose the third way, the forgotten one—&lt;em&gt;withholding judgment?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Withholding judgment is freedom. It’s the tasting of a bottle of wine in a restaurant. When you order a bottle, you can send the wine back after your first sip. But you hold your judgment until that moment. Even after one sip, you might need a second. You swirl the glass, breathe in the aroma, and wait for the aftertaste. This pause, this act of holding back, isn’t indecision—it’s a deliberate choice until you gather enough information to decide confidently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Withholding judgment offers us a chance to pause, assess, and experiment.&lt;/strong&gt; It’s about opening the door to &lt;a href=&quot;/chestertons-fence/&quot;&gt;discovering overlooked possibilities&lt;/a&gt; and making better decisions in the long run. We must collect data and information to understand before forming any conclusions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Any critical judgment demands a comprehensive understanding.&lt;/strong&gt; This is also what Mortimer Adler captured perfectly in 1940, in his excellent book &lt;a href=&quot;/books/how-to-read-a-book-review-summary-and-notes/&quot;&gt;How to Read A Book&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;You must be able to say, with reasonable certainty, “I understand,” before you can say any of the following things: “I agree,” or “I disagree,” or “I suspend judgment.” These three remarks exhaust all the critical positions you can take.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Adler’s insight is as relevant now as ever. We must pause and examine arguments holistically—not to agree or disagree but to understand them truly. This principle is especially crucial in today’s world, where the flow of information is rapid, overwhelming, and often misleading.&lt;/p&gt;
&lt;h2&gt;The Information Problem&lt;/h2&gt;
&lt;p&gt;How and where we gather information directly shapes the decisions we make. For decades, traditional media has been driving the direction of public belief, often mixing truths with half-truths and outright lies. Today, the Internet has taken its place as the medium, but it has inherited—and amplified—these same flaws. “&lt;em&gt;The Internet,&lt;/em&gt;” as George Packer warns in The Atlantic, “&lt;em&gt;which promised to give everyone information and a voice, has consolidated in just a few hands the power to destroy the very notion of objective truth.&lt;/em&gt;”&lt;/p&gt;
&lt;p&gt;If objective truth is eroded once again, &lt;strong&gt;how can we confidently assess the decision and take steps—however small—based on what we read, hear, or watch online?&lt;/strong&gt; The answer lies in strengthening our skepticism and remaining doubtful until the truth becomes undeniable.&lt;/p&gt;
&lt;p&gt;This is easier said than done. Pausing a decision and seeking the truth to make a correct assessment can be frustrating. It requires patience, effort, and, perhaps most challenging of all, the ability to question our own biases.&lt;/p&gt;
&lt;h2&gt;The Nature of Truth&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The objective truth, in its purest form, is rarely spoken aloud.&lt;/strong&gt; It simply &lt;em&gt;is&lt;/em&gt;. Truth does not require passionate advocacy—it exists independent of our belief in it. As Robert Pirsig explains in Zen and the Art of Motorcycle Maintenance:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“No one is fanatically shouting that the sun is going to rise tomorrow. They know it’s going to rise tomorrow.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;When someone loudly insists on “the truth,” it often signals doubt disguised as conviction.&lt;/strong&gt; By contrast, dogmatic enthusiasm is a sign of doubt dressed in certainty. Pirsig further says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“When people are fanatically dedicated to political or religious faiths or any other kinds of dogmas or goals, it’s always because these dogmas or goals are in doubt.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Most decisions we face are &lt;a href=&quot;/learnings-on-dealing-with-ambiguity/&quot;&gt;blurred by uncertainty&lt;/a&gt; and driven by competing narratives and opinions.&lt;/strong&gt; The only responsible way forward is to &lt;em&gt;withhold judgment through action&lt;/em&gt;—at least on the issues that truly matter—until we can find enough clarity to act wisely.&lt;/p&gt;
&lt;h2&gt;Finding Truth Through Action&lt;/h2&gt;
&lt;p&gt;Seeking the objective truth &lt;em&gt;is&lt;/em&gt; overwhelming. The complexity of ideas, the amount of information, and the conflicting narratives circulating in our digital world can intimidate us. &lt;strong&gt;Instead of aiming to understand the entirety of a big idea at once, we can take small, deliberate steps forward&lt;/strong&gt;—steps designed to test, learn, and uncover truths incrementally.&lt;/p&gt;
&lt;p&gt;For instance, consider social welfare programs. Opinions about their effectiveness are often deeply divided along ideological lines. Rather than diving headfirst into partisan arguments or overwhelming ourselves with conflicting statistics, we can start by asking smaller, focused questions, such as: Which specific welfare programs exist in my country? What measurable outcomes do these programs produce (poverty reduction, health improvements, employment rates)? Armed with these questions, we can break the research into steps.&lt;/p&gt;
&lt;p&gt;Even at work, small steps can help us uncover the unknown. Promotions are often big decisions that demand a lot of time and preparation. &lt;a href=&quot;/learn-the-rules-of-promotions/&quot;&gt;Imagine prematurely promoting someone only to find that they’re unfit for the role&lt;/a&gt;. Since we can’t reverse the promotion, a better approach would be to &lt;a href=&quot;/how-to-delegate-anything-successfully/&quot;&gt;delegate and assign interim responsibilities&lt;/a&gt;, allowing them to try these responsibilities and prove their capabilities without committing to a full promotion. This way, both parties can &quot;try before they buy.&quot;&lt;/p&gt;
&lt;p&gt;Another way to find a more minor decision at work, especially in product development, is actually a well-known one: experimenting. Instead of overthinking, planning endlessly, &lt;a href=&quot;/adrs-rfcs-differences-when-which/&quot;&gt;writing design documents&lt;/a&gt;, and &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;collecting feedback&lt;/a&gt; on theoretical ideas, I’m all in on quickly building &lt;em&gt;something small&lt;/em&gt; that agrees with the decision and &lt;em&gt;something else&lt;/em&gt; that disagrees with it (though I must admit that the latter is rarely built). Hence, we learn the best decision as soon as possible and can refine our path.&lt;/p&gt;
&lt;p&gt;By acting cautiously and experimenting with smaller decisions, we create opportunities to challenge assumptions, gather evidence, and refine our understanding. &lt;strong&gt;This approach transforms uncertainty into a tool for discovery—a way to progress while withholding judgment.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There is almost always a smaller decision hidden within the larger one, waiting to be uncovered. Once we find it, we can act on it—exploring it from every angle, testing it by moving right, left, forward, and back, gathering insights and gaining confidence. Then (&lt;em&gt;only then&lt;/em&gt;) are we equipped to agree or disagree.&lt;/p&gt;
&lt;p&gt;Larry Page, the former CEO of Google and Alphabet and who is known for his approach to &lt;a href=&quot;/bias-towards-action/&quot;&gt;bias for action&lt;/a&gt; and &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;speedy decisions&lt;/a&gt;, championed this approach by asking, &lt;em&gt;“&lt;a href=&quot;/why-cant-this-be-done-sooner/&quot;&gt;Why can&apos;t this be done sooner?&lt;/a&gt;”&lt;/em&gt; With that simple question, he urged people to search for decisions they can make today rather than trying to make a significant decision tomorrow. He encouraged people to avoid getting stuck in analysis and to move in a direction that approaches the truth—experimenting and learning along the way.&lt;/p&gt;
&lt;p&gt;We must acknowledge that sometimes, we lack the energy or bandwidth to pursue any direction. It’s easier to float with others’ decisions because we’re too tired or don’t care about the consequences. In these situations, I’m a big fan of consent-based decision-making. I hold my judgment—neither agreeing nor disagreeing—and let others drive. I trust their judgment will be “good enough,” and we’ll all bear the consequences.&lt;/p&gt;
&lt;p&gt;Still, it’s crucial to be transparent. Explicitly telling others, “&lt;em&gt;I’m withholding my judgment and trusting you to decide,&lt;/em&gt;” prevents misunderstandings later. It ensures that no one assumes my silence equates to an agreement if I later &lt;a href=&quot;/explicit-disagreement-is-better-than-implicit-misunderstanding&quot;&gt;express my disagreement&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The Freedom to Evolve&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Withholding judgment today doesn’t mean we avoid decisions forever—it shifts the timeline.&lt;/strong&gt; Critics, like many business gurus, argue that delaying &lt;em&gt;any decision&lt;/em&gt; makes you fall behind. They think that postponing decisions allows competitors to move ahead. While we stagnate, they act. However, with this approach, we lose nothing—neither money nor time. On the contrary, we gain a lot.&lt;/p&gt;
&lt;p&gt;By withholding judgment, we create space for learning, experimentation, and deeper understanding. &lt;strong&gt;It’s not about indecision but about finding the path to truth through exploration.&lt;/strong&gt; In a world obsessed with speed and quick resolutions, we must reclaim the freedom to think, to pause, and ultimately to evolve.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/withholding-judgment-the-forgotten-way/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/withholding-judgment-the-forgotten-way/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>You can&apos;t always have the best of the best talent</title><link>https://candost.blog/notes/53b1/</link><guid isPermaLink="true">https://candost.blog/notes/53b1/</guid><pubDate>Sun, 16 Feb 2025 06:00:00 GMT</pubDate><content:encoded>&lt;p&gt;️️️You can’t have an organization made up entirely of &lt;a href=&quot;/notes/53b/&quot;&gt;top-of-the-top performers&lt;/a&gt;. While this is feasible in a small startup, larger organizations must hire a mix of average individuals and will definitely end up with lower-performing individuals. It’s crucial to understand how to develop these employees and &lt;a href=&quot;/notes/33a/&quot;&gt;enhance their skills&lt;/a&gt;, as this is essential for the growth and success of the organization. ️It’s also crucial to cut the ties when things don’t work out.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;As low performer they are, they can still pursue a single goal of the organization&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/53b1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/53b1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Delegate Successfully</title><link>https://candost.blog/how-to-delegate-anything-successfully/</link><guid isPermaLink="true">https://candost.blog/how-to-delegate-anything-successfully/</guid><description>The key to successful delegation is that leaders should delegate their strongest skills to people who are both capable and interested in learning them.</description><pubDate>Tue, 04 Feb 2025 08:05:00 GMT</pubDate><content:encoded>&lt;p&gt;I had been struggling to find the right approach to delegation at work. I had made many small and big mistakes. Some have caused others frustration, and a few have cost time and financial loss. Now that I have gained experience, it’s time to share.&lt;/p&gt;
&lt;p&gt;My most significant learning in delegation is this: &lt;strong&gt;a leader must delegate the work they know best&lt;/strong&gt; or &lt;strong&gt;the skill they can perform well&lt;/strong&gt; to the person who &lt;strong&gt;can and wants to acquire it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It’s &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;​unintuitive​&lt;/a&gt;. The strongest skills are often the reason someone is brought to a leadership position. Perhaps these skills helped solve a painful problem by doing a particular type of work well. Then why must they hand over that work or transfer the skill to others?&lt;/p&gt;
&lt;p&gt;A new level was unlocked when I realized that &lt;strong&gt;mastering a skill and getting positive feedback constantly was a strong sign that it was&lt;/strong&gt; &lt;a href=&quot;/passing-down-the-experience/&quot;&gt;​&lt;strong&gt;time to transfer&lt;/strong&gt;​&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt; Strong skills also make it easier to teach others how to do certain things, recognize when they need a hand, and ask the right questions when they don’t even know which questions are out there to answer.&lt;/p&gt;
&lt;p&gt;For example, I’m a good meeting organizer when it comes to planning, standups, retrospectives, and even workshops; it is my strong suit. Moreover, I like doing these things. Organizing and facilitating these meetings well brings me joy and satisfaction as a group progresses through a successful process that results in alignment.&lt;/p&gt;
&lt;p&gt;However, once I establish these processes, I look for people who can take over the facilitation. The facilitator&apos;s role usually includes not only moderating the meetings but also doing pre-work, preparations and communication before and after the sessions. Moreover, the responsibilities also include following up on action items and other people’s work to ensure everyone follows the agreement. Last but not least, it also includes following the process itself and suggesting improvements and changes when the process doesn’t fit reality or starts to crack for various reasons.&lt;/p&gt;
&lt;p&gt;Since I know all these expectations and how to navigate people around them, I can mentor or coach the person I’m delegating this work to.&lt;/p&gt;
&lt;p&gt;Yet, many people (including myself) mistake delegation for a hands-off approach or delegate the wrong tasks to the wrong people. Let’s examine each one, starting with the last.&lt;/p&gt;
&lt;h2&gt;Finding the Right Person to Delegate&lt;/h2&gt;
&lt;p&gt;You shouldn’t delegate a task just because you want to do someone a favor. &lt;strong&gt;Understanding whom to delegate to demands skill mapping, career development, learning organizational constraints, careful staff planning, and proper decision-making.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you’re leading a team, you must know your team members’ career plans, backgrounds, wishes, strengths, and weaknesses. Once you know who wants to go to the next level (maybe even your position) and which skills they lack, you can work with them members and train them.&lt;/p&gt;
&lt;p&gt;Although all of these are necessary to choose, it doesn’t start with looking at people’s skills; it begins with—counterintuitively—you, the delegator.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You have to look at yourself first&lt;/strong&gt; and answer the questions below openly, honestly, and transparently (for yourself).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What things take up a lot of your time and are trivial to do?&lt;/li&gt;
&lt;li&gt;What are your strengths, and which initiatives use those strengths?&lt;/li&gt;
&lt;li&gt;How much time would you spend when you delegate? How much time do you have available for the person?&lt;/li&gt;
&lt;li&gt;What are the results do you expect?&lt;/li&gt;
&lt;li&gt;If someone makes a bad decision, how bad can these decisions be?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These questions address the fundamental constraints: time, goals and risks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;People rarely consider&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;their&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;time when delegating, but it’s the most crucial element.&lt;/strong&gt; Delegation is not about shifting a task and forgetting it (more on that below). As everyone is busy, you have to consider your time management and find the person with whom you can spend the right amount of time for the right thing.&lt;/p&gt;
&lt;p&gt;If one team member demands an extra hour every day when you delegate, while another might be okay with 30 minutes a week, the answer may lie in your time. However, choosing a 30-minute one is not straightforward because you’ll need to invest in people equally, and each person&apos;s constraints will be different.&lt;/p&gt;
&lt;p&gt;Once you answer the questions, you must turn your attention to the people who you want to delegate. If you have more than one person, think about each of them one by one. Evaluate them by answering the following questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How much time would this person require from you?&lt;/li&gt;
&lt;li&gt;What are the skills you have that helped you do the job so far and that the other person doesn’t have?&lt;/li&gt;
&lt;li&gt;What are the common skills you both have that can help with the task?&lt;/li&gt;
&lt;li&gt;How is this work aligned with the person&apos;s career development?&lt;/li&gt;
&lt;li&gt;Can this work be exciting for the person or draining their energy?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After answering these questions, you’ll know how much time you need to invest in the person and can plan your approach.&lt;/p&gt;
&lt;p&gt;Understanding your needs and other people’s needs within your boundaries and constraints will help you avoid the most common mistake: defaulting to a hands-off approach.&lt;/p&gt;
&lt;h2&gt;Delegation doesn’t mean shift and forget&lt;/h2&gt;
&lt;p&gt;One of my mistakes after I delegated was not thinking about the work anymore. Even though I asked the person to reach out for help when they struggled, &lt;em&gt;they rarely did&lt;/em&gt;. This is not because we didn’t trust each other or never communicated. Quite the contrary, &lt;strong&gt;I trusted them too much, and—I learned too late that—they tried to live up to that trust.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When people take on new work, they usually &lt;em&gt;guess&lt;/em&gt; how to approach it. Based on an assumption, they try &lt;em&gt;seemingly&lt;/em&gt; effective ways to make progress. Yet, they don’t notice that their methods are unsuitable. Because they have been trusted to do the work, they try whatever they can without asking for help. &lt;strong&gt;They think seeking help will make them look like they fail and can’t handle the delegated work.&lt;/strong&gt; They think it’s their fault. However, we, the delegator, made a mistake, not them.&lt;/p&gt;
&lt;p&gt;I see delegation as enhancing someone else’s tool belt. Everyone has skills (or rather tools in this metaphor) they know how to use. However, the world is full of tools they have no idea about. Delegation is like giving someone a tool as a gift and showing them how to use it well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The first step of delegation is giving them clear directions and letting them try and fail&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;within a safe zone&lt;/strong&gt;&lt;/em&gt;&lt;strong&gt;.&lt;/strong&gt; Once they fail and succeed a few times, they learn the basics. After some practice, they can do the job in the wild and develop their own style.&lt;/p&gt;
&lt;p&gt;But how do we evaluate how much direction, safe-zoning, and freedom the person needs?&lt;/p&gt;
&lt;p&gt;If someone is good at moderating the sprint planning, it doesn’t mean they will know how to moderate a retrospective meeting. Although both are team rituals, they are fundamentally different. So, handing over retrospective moderation will need some help to learn the basics. That requires understanding the task-relevant maturity of the person to whom you want to delegate the work.&lt;/p&gt;
&lt;h2&gt;Task-Maturity Scale&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&quot;How often you monitor should not be based on what you believe your subordinate can do in general, but on his experience with a specific task and his prior performance with it -&lt;/em&gt; &lt;em&gt;&lt;strong&gt;his task-relevant maturity&lt;/strong&gt;__...as the subordinate&apos;s work improves over time, you should respond with a corresponding reduction in the intensity of the monitoring.&quot;&lt;/em&gt; — Andrew Groove, Co-founder &amp;amp; CEO of Intel&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The main goal is to stretch the person’s skills by helping them, not burn them out.&lt;/strong&gt; If we consider the new work on someone’s task-relevant maturity scale, it should fall into the delegation zone.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/how-to-delegate-anything-successfully/task-relevant-maturity-scale.png&quot; alt=&quot;Task-relevant Maturity Scale&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If the job is outside their comfort zone and too easy for them, it will be cumbersome and bore them out. &lt;strong&gt;Delegation should aim to place the skill beyond their comfort zone and before “beyond capability” because we want to mentor them first but teach a skill that needs development from the fundamentals.&lt;/strong&gt; Beyond the delegation zone, the person is burdened instead of given help for growth.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Within the delegation zone, the person will still need different levels of help, ranging from strong mentoring to passive coaching.&lt;/strong&gt; The caveat of the delegation zone is that it’s different for everyone. Hence, finding the right job and person match and giving them the right amount of help demands a careful approach.&lt;/p&gt;
&lt;p&gt;Once you find the right person and have an idea about the amount of help they need, you can kick off strong.&lt;/p&gt;
&lt;h2&gt;Starting with the correct foot&lt;/h2&gt;
&lt;p&gt;At this stage, you have put in a lot of work, and it feels like you’re nearing the end. Many people rush this part, wasting all their effort.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You must set clear expectations and have a concrete conversation.&lt;/strong&gt; The conversation has to be open, transparent, clear and genuine.&lt;/p&gt;
&lt;p&gt;First, explain the context of the work. Provide all the background information, allow them to ask questions, and clearly answer all of them. &lt;a href=&quot;/transparency-over-context/&quot;&gt;​It is crucial to explain the context​&lt;/a&gt;, constraints, and current status.&lt;/p&gt;
&lt;p&gt;Once they know the &lt;a href=&quot;/love-the-constraints/&quot;&gt;​constraints​&lt;/a&gt; and context, discuss your expectations and whether you need to adjust them. &lt;strong&gt;Expectations are always mutual.&lt;/strong&gt; &lt;a href=&quot;/the-must-have-skill-for-every-leader-listening-with-empathy&quot;&gt;​Listen to their expectations as well​&lt;/a&gt;. Talk openly and &lt;em&gt;agree together&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Define how the success looks like.&lt;/strong&gt; If you’re delegating the leadership of a project, don’t say, “The project is completed on time and within budget.” Go beyond that and focus on &lt;em&gt;how&lt;/em&gt; they will make it happen. If the project is a success in the end, but everyone is burned out along the way, can we call the project a big success? Clearly define what success means and help them figure out how to achieve it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Write all of these down.&lt;/strong&gt; Verbal communication often has cultural misunderstandings. However, once agreements are written, people come to a shared understanding. A few months later, you can look at what you’ve written and evaluate the progress clearly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Set recurring check-ins.&lt;/strong&gt; If you already have one-on-ones, reserve the last five minutes for them. Taking from the previous example, don’t talk about the project itself during these five minutes but more about &lt;a href=&quot;/leading-a-big-project-step-by-step/&quot;&gt;​the experience of leading it​&lt;/a&gt;. Look back at what changed from the last check-in, how the person has improved, and whether there is anything they can do better, need extra support, or need changes in expectations.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;When leaders devote too much time to their strong skills, they don’t learn at work, which increases their dissatisfaction. They also limit their impact; instead of focusing on the bigger picture, they get stuck on smaller initiatives. They fear delegation will take their jobs away or make them dormant.&lt;/p&gt;
&lt;p&gt;Just because they don’t know how or what to delegate, they keep doing whatever they are good at. However, the other side of the road is a path to increasing impact and job satisfaction. Once learned, delegation unlocks many different opportunities.&lt;/p&gt;
&lt;p&gt;Although I discussed what I learned from my mistakes, you’ll still have to make yours. Without mistakes, there is no learning. And don’t forget: Everyone has a right to fail, including me, you, and the person you delegate the task to.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-to-delegate-anything-successfully/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-to-delegate-anything-successfully/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Bridging the Gap: Understanding the Illusion of Transparency in Communication</title><link>https://candost.blog/bridging-the-gap-understanding-the-illusion-of-transparency-in-communication/</link><guid isPermaLink="true">https://candost.blog/bridging-the-gap-understanding-the-illusion-of-transparency-in-communication/</guid><description>Discover how the illusion of transparency affects communication, influencing how our emotions and intentions are perceived by others and shaping our interactions.</description><pubDate>Tue, 28 Jan 2025 06:30:00 GMT</pubDate><content:encoded>&lt;p&gt;How many times has someone asked you, “What do you mean?” How many times did you think you described everything clearly, but it turned out that you couldn’t and had to take a different way to explain it?&lt;/p&gt;
&lt;p&gt;How many times have you supposed everyone feels how nervous you are when you’re speaking to a group but they actually had no clue in the end? How many times did you think everybody saw how stressful you were before that meeting?&lt;/p&gt;
&lt;p&gt;Those were the moments where you firsthand experienced &lt;em&gt;the illusion of transparency&lt;/em&gt;. Until someone loudly asked you to rephrase what you said, you thought your sentences all made sense. Yet, they didn’t. Until somebody told you that you nailed the presentation and looked very calm, you thought everyone heard your inner voice and understood your nervousness. Yet, nobody had a clue.&lt;/p&gt;
&lt;p&gt;When we talk, we think that everyone understands what we think, how we feel and what we intend. We feel all the spotlights on us, making our inner thoughts, feelings, and struggles clear as a day, and everyone grasps every word we say.&lt;/p&gt;
&lt;p&gt;The gap between our subjective experience and how others perceive our thoughts and interpret our emotions is called &lt;em&gt;the illusion of transparency&lt;/em&gt;. It’s the distance between our internal world and how people around us perceive it.&lt;/p&gt;
&lt;p&gt;Understanding the illusion of transparency and the size of that gap determines our ability to navigate otherwise challenging situations. It’s beneficial at work and in our relationships. Acknowledging others who don’t have a clue about what we think and feel forces us to create more transparent communication.&lt;/p&gt;
&lt;p&gt;It’s similar when we look at someone from the outside. Knowing that they struggle with the same things helps us build empathy. If we nudge others to narrow the gap caused by this illusion, we will understand them more clearly. Asking, “Are you okay?” when they feel down might not be enough. Our friend may not tell us while screaming inside to seek a hand. Besides personal relationships, empathy also helps at work, especially when dealing with difficult feedback.&lt;/p&gt;
&lt;h2&gt;Our Rules vs. The Rules&lt;/h2&gt;
&lt;p&gt;Two members of the Harvard Negotiation Project, Sheila Heen and Douglas Stone, focused on understanding and resolving the most complex negotiations around the world. They found out why people often can’t think straight when emotions are high. In their book Thanks for the Feedback, they explain how we fall into a trap when we confuse the rules.&lt;/p&gt;
&lt;p&gt;One of the negotiating moments is exchanging negative feedback. We approach feedback with rules in our heads—what we think is right and how wrong the other person is. While receiving feedback, we pass it through our internal filters using our rules. We confuse the rules because we think that our rules are not only &lt;strong&gt;&lt;em&gt;our&lt;/em&gt;&lt;/strong&gt; rules but &lt;strong&gt;&lt;em&gt;the&lt;/em&gt;&lt;/strong&gt; rules.&lt;/p&gt;
&lt;p&gt;We also think that our rules should be obvious. We act according to these rules; it was all our intention. So, why do people see them differently? Because there is a gap between our intentions and behaviors and how they impact others.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/bridging-the-gap-understanding-the-illusion-of-transparency-in-communication/the-intention-behavior-impact-gap-map.png&quot; alt=&quot;The Intention Behavior Impact Gap Map. Source: Thanks for The feedback&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Everyone has values. From these values, we form thoughts. From our values and formed thoughts, we build intentions. All three come together and create our rules. We behave with these rules in any environment.&lt;/p&gt;
&lt;p&gt;How we perceive our rules determines the differences in our subjective experiences and others’ perceptions. If we consider our rules the truth, we harm our relationships because nobody can follow them; everyone has their own. The only thing we can do is focus on what we can change—what’s in our heads.&lt;/p&gt;
&lt;h2&gt;Control, Influence, and Concern&lt;/h2&gt;
&lt;p&gt;In life, many things spontaneously and simultaneously happen around us. The sun shines or rain drops; a new pandemic starts; our relationships sometimes get worse, sometimes better; work becomes stressful or calm; we become sick or get healthier. As John Lennon says, “Life is what happens to you while you&apos;re busy making other plans.” The majority of events are outside of our control. However, there are some we can impact.&lt;/p&gt;
&lt;p&gt;Stephen Covey, the author of 7 Habits of Highly Effective People, conceptualized the Circles of Influence. The outer circle is the circle of concern: things we have no control over, like natural disasters happening, war breaking out, a football team winning a championship, or Lewis Hamilton joining the Ferrari team. This circle is the biggest circle of all. The majority of what’s going on belongs here.&lt;/p&gt;
&lt;p&gt;&amp;lt;img
src=&quot;/spinner.gif&quot;
data-src=&quot;/images/content/posts/bridging-the-gap-understanding-the-illusion-of-transparency-in-communication/circles-of-influence.png&quot;
style=&quot;display: block; margin-left: auto; margin-right: auto; width: 40%;&quot;
alt=&quot;The Circles of Influence: inner cicle is the circle of control, mid-circle is the circle of influence, outer circle is the circle of concern&quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;In the middle circle, the circle of influence, we have things we can influence for change, like our relationships, how we work, or winning the match in the team we’re playing in. Although we have no power over every piece of it, we can definitely influence the result.&lt;/p&gt;
&lt;p&gt;In the inner circle, the circle of control, we can control everything, like the kindness we display to a random stranger, how we interpret someone’s reaction, what we eat at breakfast, our thoughts, beliefs, the TV channel we watch, and the newspaper we buy. We have power over all of them and can change or stop at any time.&lt;/p&gt;
&lt;p&gt;The rules in our heads—the ones we confuse as everyone else&apos;s rules—live in the circle of control. Although we can’t change how people perceive our behaviors or actions, we can control how we behave and definitely control the narratives we create inside our heads.&lt;/p&gt;
&lt;h2&gt;Narratives and Self-Control&lt;/h2&gt;
&lt;p&gt;Considering the illusion of transparency—how people can’t perceive what we experience—we can focus on what we can control and not be victims of the narrative fallacy.&lt;/p&gt;
&lt;p&gt;The narrative fallacy is the human tendency to create stories or logical explanations for events even when these stories have no basis in fact. We tend to produce tales to make sense of the world.&lt;/p&gt;
&lt;p&gt;When we receive that negative feedback, our brains create chaos and build the worst narrative we can think of. Moreover, we consider it the truth. We may not control these thoughts on the spot. However, knowing the narrative fallacy and illusion of transparency already helps us notice our patterns. When we don’t immediately react to feedback and ask a few clarifying questions, we can prevent our inner narratives from shaping in the wrong direction.&lt;/p&gt;
&lt;p&gt;Even when giving negative feedback, we can be aware of people’s tendencies and clearly explain our intentions and thoughts so that others don’t become victims of the narrative fallacy.&lt;/p&gt;
&lt;p&gt;While giving a presentation, if we’re feeling stressed and nobody recognizes that due to the illusion of transparency, our stress would have no basis. In the end, the only thing we can control is our thoughts, not what people think. When we control ourselves, we act in alignment with our values and aim to eliminate illusions by explaining our thoughts and feelings clearly. Meanwhile, we can influence others by asking questions about their intentions, thoughts and feelings, helping them destroy their illusions and preventing ourselves from forming incorrect narratives.&lt;/p&gt;
&lt;p&gt;Noticing alone prevents narrative fallacy and the illusion of transparency. When we see the gap and actively work to close it, we improve relationships. Better relationships and clear communication lead to trust and build success. When we focus on what we can control, we can define our success through a transparent perspective, clear communication, and trustful relationships. In challenging situations, nothing can prevent us from creating a narrative that we share with everyone transparently. In the end, success is just another perception of reality. How that reality looks is in our hands.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/bridging-the-gap-understanding-the-illusion-of-transparency-in-communication/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/bridging-the-gap-understanding-the-illusion-of-transparency-in-communication/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Influence—Book Review, Summary and Notes</title><link>https://candost.blog/books/influence-book-review-summary-and-notes/</link><guid isPermaLink="true">https://candost.blog/books/influence-book-review-summary-and-notes/</guid><description>A comprehensive framework of six universal principles of influence that drive human behavior.</description><pubDate>Tue, 28 Jan 2025 06:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;The Review&lt;/h2&gt;
&lt;p&gt;It is one of the fundamental books everyone should read to understand how various marketers, salespeople, etc, have influenced them.&lt;/p&gt;
&lt;p&gt;I loved every chapter more than the one before. The majority of the book applies to everything we buy daily and to our relationships at work and home.&lt;/p&gt;
&lt;p&gt;Before reading the book, I had been thinking about some of the concepts for a while. I can recognize some automatic behaviors, try to be mindful, and improve my decision-making. However, I wasn&apos;t able to name what I was trying to do, and I didn&apos;t know the methods at all; it was all trial and error for me. Not anymore.&lt;/p&gt;
&lt;p&gt;Now, I know at least a few influence techniques used on me. I recognize them day-to-day more and try not to fall into them if I realize the action is fabricated to exploit my automatic behavior. Once I do, I make a better decision.&lt;/p&gt;
&lt;p&gt;Although it&apos;s a fantastic book, I started the book three times from scratch. First, I did inspectional reading (mainly systematic skimming), then analytical reading. I went back and forth, trying to understand what it told me, judge it, and reflect on my life.&lt;/p&gt;
&lt;p&gt;Hence, it took me six months to read this book. In spite of the stories being entertaining, the book is not a page-turner. It&apos;s not difficult to read from a language perspective but a challenge from an intellectual perspective. Learning a new thing every few pages was definitely rewarding, though.&lt;/p&gt;
&lt;p&gt;It&apos;s a phenomenal book, and I recommend that everyone have it, read it, digest it, and re-read it again and again.&lt;/p&gt;
&lt;h2&gt;Chapter 1: Levers of Influence&lt;/h2&gt;
&lt;h3&gt;Click and Run&lt;/h3&gt;
&lt;p&gt;To cope with the current world&apos;s complexity, humans have built shortcuts, stereotypes, and rules of thumb to save time and energy. These create automatic responses or triggers that we can&apos;t control.&lt;/p&gt;
&lt;p&gt;One of humans&apos; &quot;click and run” commands is triggered when a reason is given right after a request. Just adding the word “because” activates the mechanism in people&apos;s minds, and they obey the request. The reason doesn&apos;t really matter. We can say, “Can I pass you in the line because I&apos;m in a hurry?” or even, “Can I pass because I need to pass?” Both will result in the same.&lt;/p&gt;
&lt;h3&gt;Perceptual Contrast&lt;/h3&gt;
&lt;p&gt;Contrast principle: We compare things with our first reactions. Our first reaction to something decides our judgment on the next similar thing. For example, if we see an expensive car first, buying a cheap car will be less desirable. However, if we look at an affordable car first, buying an expensive one will be more desirable, and we&apos;ll value that expensive car less in terms of money; it won&apos;t look that expensive.&lt;/p&gt;
&lt;h2&gt;Chapter 2: Reciprocation&lt;/h2&gt;
&lt;h3&gt;The Rule of Reciprocation&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;“We should try to repay what another person provided us.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The rule is so strong that it overwhelms the influence factor (whether you like the person or not).&lt;/p&gt;
&lt;h3&gt;Customized Favor Works Better&lt;/h3&gt;
&lt;p&gt;The Rule of Reciprocation works better when the initial favor is customized to the person&apos;s needs, especially when the influencer takes extra steps to fix a broken situation. When compared to having that situation proactively fixed, this broken situation may play better if handled correctly. This is where customer satisfaction works well after people reach out to customer support for the broken products; if they get a replacement or something to cover their needs, they are more likely to return the favor by purchasing more (when compared to having the non-broken product in the first place).&lt;/p&gt;
&lt;p&gt;This customization power of the reciprocation rule makes it exploitable. The small first favor can force people to give even greater favors in return. By nature, we want to return the favor, and if the first favor was coming out of nowhere and fulfilled our needs, we take great distance to repay the debt and find ourselves paying 500% extra just to conform to the rule and not be seen as cheap or taker in the society. It is also making us part of the group/community.&lt;/p&gt;
&lt;h3&gt;Small Sacrifice to Reverse the Rule of Reciprocation&lt;/h3&gt;
&lt;p&gt;We don&apos;t have to give the first thing to get back something. We can also make a small sacrifice from our initial request, and then that forces the rule of reciprocation on the other side, so they also make a sacrifice. Even when they do something they don&apos;t want at all, they still obey and do that smaller favor. In this case, the person who makes the first request wins anyway. This can also be exploited or may not work in every case.&lt;/p&gt;
&lt;h3&gt;Exploiting reciprocation rule&lt;/h3&gt;
&lt;p&gt;The rule can be exploited or used by making the first request extra big or unacceptable. When the other person rejects the offer, they can accept the originally planned request. So, when asking about a favor that the other side might reject, exaggerate the initial request so your first request can be declined and you retreat to the original request. Then, the other side will retreat and likely accept your offer, which is what you wanted in the first place.&lt;/p&gt;
&lt;h3&gt;Reject and Retreat&lt;/h3&gt;
&lt;p&gt;The reject-and-retreat mechanism looks like manipulating others, and the other person might feel like a victim and not trust the person using the reject-and-retreat mechanism. However, all the parties in the research seem to be more satisfied with the approach. People feel they get fair treatment, and they also comply with future requests even more. A good example is blood donation: it&apos;s used to collect blood on school campuses. Students were asked to donate blood twice a year for three years and then retreated to once only. During the donation, they were asked to give phone numbers to be contacted next year. The majority complied compared to the control group.&lt;/p&gt;
&lt;h3&gt;Exploit the reciprocation exploiter&lt;/h3&gt;
&lt;p&gt;When we receive a favor or reciprocation, we can accept the first gift and reject the rest once we identify that the first favor was used as a trick. Once we understand that it&apos;s a trick, the rule of reciprocation doesn&apos;t apply, and we don&apos;t feel obligated to pay back the favor or debt we accumulated. In short, if people exploit the rule, we can also exploit the exploiters.&lt;/p&gt;
&lt;h2&gt;Chapter 3: Liking&lt;/h2&gt;
&lt;p&gt;Commercials exploit our friendships in any possible way. There is a simple rule. We like the things our friends recommend (or people we like, not necessarily friends). When we know that our purchase will benefit our friend in some way, we take the extra mile to help. Also, that&apos;s why many celebrities are in the ads and recommend the product; we are more likely to buy just because we like the famous person. Moreover, when people try to sell someone or a doctor doing something to someone, they become more successful if the other side likes them.&lt;/p&gt;
&lt;p&gt;A salesperson who is liked and can offer a fair price is the best. A doctor is never sued with the “I really like the doctor, but I want to sue them” phrase. Who destroys or goes against someone they like?&lt;/p&gt;
&lt;h3&gt;Physical Attractiveness&lt;/h3&gt;
&lt;p&gt;Good-looking people enjoy a significant amount of social advantage. They are always associated with better traits and receive more help when compared to others. Whether we like it or not, the result came out of as a result of many studies.&lt;/p&gt;
&lt;h3&gt;Similarity&lt;/h3&gt;
&lt;p&gt;We like people similar to us. When people know the similarities between each other, they get along well. When people make decisions, they tend to lean on the side they like, relate or find similarities. That&apos;s also why so many ads use popular faces to associate their brand image with their likeness. It&apos;s also why testimonials work too! People can relate if they see someone similar using the same product, and they are more likely to buy it.&lt;/p&gt;
&lt;h3&gt;Compliments&lt;/h3&gt;
&lt;p&gt;When we receive a compliment from someone, we tend to like them more, regardless of whether the compliment is genuine or an obvious suck-up. It&apos;s also visible in job interviews. When an interviewee compliments something on the interviewer, they are more likely to pass the interview.&lt;/p&gt;
&lt;p&gt;Compliments help to perfect someone&apos;s occasional good behavior. If they are doing something at an 80% level, complimenting them boosts their performance to 100%. They will try to do more of what others complimented. But make these compliments not on the behavior but on the trait. Be genuine and find compliments the person will live up to. (&lt;a href=&quot;/notes/4c/&quot;&gt;Hawthorne Effect?&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;More Contact Generate Likeness&lt;/h3&gt;
&lt;p&gt;We like people we have more contact with. Repeating the same lie again and again can result in people believing in it. In the same way, the more contact points we have with people who are unlike us, the more we begin liking them. This is also observed in groups. The real rival groups only start seeing each other as friends after they cooperate on things together. We see this in football fans who unite and work for charity. The cooperation resolves all rivalry. We can use the liking principle by bringing people together and giving them tasks to resolve together. However, the task should require contributions from both sides. Collaboration is key. Moreover, we like people who are willing to cooperate with us.&lt;/p&gt;
&lt;h3&gt;Association of Good and Bad Things&lt;/h3&gt;
&lt;p&gt;We associate unrelated things with people. Similar to Pavlov&apos;s association of bells and food, humans associate good and bad things with people even when they have no relationship to an event. For example, bad weather and natural disasters are caused by nature. Still, due to weather forecasts being presented on TV, people relate these events to the presenter, who now isn&apos;t liked anymore because of the bad weather. Moreover, we associate good things with ourselves while pushing bad results away. Good examples are football fans associating wins with themselves while losing is always the team&apos;s mistake. This association is everywhere. If you have good and liked friends, you&apos;ll be liked too. If you&apos;ve bad guys befriended, you&apos;ll be assumed bad, too.&lt;/p&gt;
&lt;h3&gt;Defense for Liking Influence&lt;/h3&gt;
&lt;p&gt;There is no easy way to find all techniques that are used to increase the likeness of a person and block these methods one by one. Instead, we can allow these methods to work, and right before making a decision, we should ask ourselves, “Do I like this salesperson more than I would have expected?” If the answer is yes, then we know there was something. Then, we can/should separate the decision from how much likeness the person has. Mentally separating the offer and the person does the trick. This should be the way we make any decision with money. In each decision, having more rationale than feelings is better.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Additional:&lt;/em&gt; Is it the same with leaders? Do we agree more with leaders we like?&lt;/p&gt;
&lt;h2&gt;Chapter 4: Social Proof&lt;/h2&gt;
&lt;p&gt;95% of the people are followers of others who are called initiators, and this number falls into the 5% category. Initiators start a trend, an idea, or an ideology, and if they convince enough people, they can become greater. The more people find the idea correct (or good), the more the idea is conceived to be correct. That is how social proof works. Initiators convince enough people to make any idea correct, and those, in turn, make it even easier for newcomers to believe the idea as they see many people think it&apos;s correct.&lt;/p&gt;
&lt;h3&gt;Peer-suasion&lt;/h3&gt;
&lt;p&gt;We tend to do things others who are similar to us do. The per-suasion is a strong driver. We want to be in the pack and conform to societal behaviors. But not with everyone. We follow people who are like us. For example, we buy similar stuff as a married couple if the other couple buys something. This is also true when we want to convince others to do a thing. I also observed this as a manager. When I mention someone in my team that their peer is also doing something I appreciate, they are more likely to follow it and replicate the behavior. When compared with something I do, they rarely follow me. Peers have more impact than me doing it.&lt;/p&gt;
&lt;h3&gt;Defense Against Social Proof&lt;/h3&gt;
&lt;p&gt;When exploiters use social proof, we can and should go to these exploiters&apos; websites and force them to reveal that they used techniques to fool the crowd to lure them to their products. Moreover, if we are in line to get something just because there is a crowd, we can look around and ask ourselves why we are there. Are we driven by social influence or by our authentic desire to get that thing? I use this in real life a lot. Many testimonials, product reviews, and queues in front of restaurants/cafés don&apos;t come real to me until I taste the food myself. It&apos;s social proof that plays a significant role. Since I also stopped using social media and following popular culture, I can safely say I employed many techniques already. Yet, it&apos;s good to be aware of many other cases where exploiters use social proof to drive people to products. The main thing is always stopping for a moment and asking ourselves, “Do I really want this? Is this true? Do these people really want to be here?”&lt;/p&gt;
&lt;h2&gt;Chapter 5: Authority&lt;/h2&gt;
&lt;p&gt;People, willingly or not, follow authority figures. Sometimes even in a blind fashion. A strong authority figure who is perceived as an expert can make others follow orders without any thinking. I also see this at work and social life. At work, I see that people follow my authority as an engineering manager of the team, even if I am not an expert on the technology of my team. Even sometimes, my decisions are questionable, but people follow them. I also see detriments of it. My team follows what I&apos;m saying sometimes without thinking by themselves (or sharing those thoughts with me). However, authority doesn&apos;t work when it is with command—ordering people to do things generates resentment. The authority should lead by being highly informed about the work and domain. Establishing authority also requires showing some vulnerability (otherwise, people don&apos;t believe), especially in the beginning, to build trust. Accepting failure and acknowledging mistakes help build trust and people follow the authority more.&lt;/p&gt;
&lt;h3&gt;Defending Against Authority&lt;/h3&gt;
&lt;p&gt;To defend ourselves from following the authority, we can ask two questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is this authority truly an expert on the topic?&lt;/li&gt;
&lt;li&gt;How truthful can we expect this authority to be?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These questions will help with purchasing products in the right way, getting the correct feedback from our leaders at work, and making better decisions.&lt;/p&gt;
&lt;h2&gt;Chapter 6: Scarcity&lt;/h2&gt;
&lt;p&gt;Especially under risk &amp;amp; uncertainty, people will try to avoid losing a thing compared to obtaining that thing in the first place. I can see this in the pandemic era when people hoarded a lot of stuff with the psychology that they won&apos;t be available anymore. Hoarding eventually led to unavailability and increased prices.&lt;/p&gt;
&lt;p&gt;Moreover, this also applies to anything becoming less available than before or our access becoming limited to it; we desire that thing more than before. I can see this in my reaction to the decision to return to the office at work, where I desired to work remotely even more, though I had been going to the office for more than three days already.&lt;/p&gt;
&lt;h3&gt;New Scarcity&lt;/h3&gt;
&lt;p&gt;Most of the riots in black history started after blacks were granted more rights and then lost them again. Although the comparison is unfair, I observe a similar reaction when companies withdraw privileges they granted before, such as returning to the office after years of remote work practices. That is the strong scarcity principle: once granted or accessed, it is lost, and emotions build up to get it again.&lt;/p&gt;
&lt;h3&gt;Rivalry Makes Scarcity Stronger&lt;/h3&gt;
&lt;p&gt;Scarcity works even stronger in the presence of rivalry. When someone else wants the same thing that we barely wish to have, we desire it more in the presence of rivalry. Now, a scarce item becomes even more scarce because someone else has acquired it. We race it to own it and value it even higher.&lt;/p&gt;
&lt;h3&gt;Defending Against Scarcity&lt;/h3&gt;
&lt;p&gt;Defending against scarcity (in combination with rivalry) becomes difficult due to the emotions involved. Moreover, we mix up the value of the thing with us having the thing. The value of us having, eating, drinking, or using the thing doesn&apos;t change. However, our arousal to that thing increases. We need to listen to our emotions and try to separate them from each other. Once we understand scarcity principles are at play, we can recognize the value we put and eliminate the desire to own that thing.&lt;/p&gt;
&lt;h2&gt;Chapter 7: Commitment and Consistency&lt;/h2&gt;
&lt;p&gt;We automatically have to stay consistent. Sometimes, it&apos;s to our detriment, like staying stubborn in situations where we need to change our thoughts/behaviors. Sometimes, it&apos;s used against us, like asking for a small commitment to do something (trivial donation to something) and then getting a more significant request that supports the previous trivial commitment and makes it much bigger. We, whether we want it or not, try to stay consistent with our previous behavior. I see this as not really-willing-to-change people at work. Also, leaders (including me) remain the same, doing the same things the same way over and over again.&lt;/p&gt;
&lt;p&gt;I think I can also use this at work to influence others when I need to drive decisions or projects. Not in an exploiting way to harm, but rather make things easier for everyone.&lt;/p&gt;
&lt;h3&gt;Defending Against Consistency Exploitation&lt;/h3&gt;
&lt;p&gt;When we find ourselves in a situation in which we made a small commitment earlier and are now trapped in a bigger one, we can listen in to our stomach, which gives signs about the trap. We feel it in our gut, and if we listen to it, we can leverage it to get out of the commitment. Another sign is listening to our heart of heart. Asking ourselves, “Knowing what I know now, if I go back in time, would I make the same choice again?” and if the answer is no, we can pull ourselves out.&lt;/p&gt;
&lt;p&gt;Commitment is often used on older people who tend to follow their commitments more. Also, in individualistic cultures like the US and Western Europe, people individually decide on consistency.&lt;/p&gt;
&lt;h2&gt;Chapter 8: Unity&lt;/h2&gt;
&lt;p&gt;Politics, sports and personal relationships are heavily influenced by one principle: unity (and loyalty). This has also been used in business. We buy from places where we feel that the salesperson is “one of us.” We favor political parties that signal as one of us rather than their success and concrete plans. In sports, fans follow their team and are more partisan if there is a stronger sense of loyalty to other fans involved. Moreover, all these unities also alter our behavior. We do similar things as part of the group. The stronger our friendship or relationship, the stronger we influence people&apos;s behavior on our own.&lt;/p&gt;
&lt;h3&gt;Belonging Together Creates A Unity&lt;/h3&gt;
&lt;p&gt;The unity feelings can come from two categories: belonging together and acting together. With kinship and closeness in location, we feel united with our kin, people with whom we share genetics. But genetics is one source of this feeling; similar looking people also feel united under different umbrellas (through shared genetics in a distance). Moreover, the place or proximity to others forms a unity. When we open our homes to a few people, they feel closer because our homes are reserved for family. Welcoming them tells us that they are one of us. Inviting people gradually helps to form this feeling of closeness. Moreover, we also feel close and united if we share a common geological region of birth.&lt;/p&gt;
&lt;h3&gt;Acting Together Unites People&lt;/h3&gt;
&lt;p&gt;When we act together in sync, we start to like each other more and feel united. Whether dancing together, singing to the same song or suffering together. Especially when we do those in synchronous or complementary to each other, we feel more united. That&apos;s why military marches have to be in perfect sync, or businesses organize team events that require members to act together in sync and help each other to reach the finish line. Moreover, we like people who ask us for advice. When a waiter gives advice on which food to choose today, we also consider them on our side as one of us.&lt;/p&gt;
&lt;h3&gt;Co-residence Unites People&lt;/h3&gt;
&lt;p&gt;Length of co-residence helps to feel united. The longer we stay in the same household, the more we unite. The same goes for kids and their friends. If we invite kids to our house, they shouldn&apos;t be different from our kids; everybody should have the same responsibility to enhance unity feeling. The guest kid should also do chores and feel no different. The same is valid for adults, too. If we invite them for dinner, when they help set the table, they feel more united and closer.&lt;/p&gt;
&lt;h3&gt;United Diversely&lt;/h3&gt;
&lt;p&gt;People living in diverse neighborhoods feel more united as humans and are less prejudiced toward others. Not only in neighborhoods but also having a friend or someone closer helps reduce this prejudice and increases empathy, making it easy to unite with others. This unity doesn&apos;t even need to have a friend around; only putting ourselves in someone else&apos;s shoes increases the feeling of unity—a small step toward changing the world around us.&lt;/p&gt;
&lt;h2&gt;Chapter 9: Instant Influence&lt;/h2&gt;
&lt;p&gt;Technology evolved faster than our automatic responses. Our age is called the “Information Age,” not the “Knowledge Age,” for a reason. For any information to turn into knowledge, it has to be processed, digested, comprehended and integrated.&lt;/p&gt;
&lt;p&gt;While we try to adapt to advancements, our brains and primitive automatic behaviors will try to use every shortcut possible. Due to the ever-growing information, these shortcuts will also increase proportionally with the cognitive overload in society.&lt;/p&gt;
&lt;p&gt;We&apos;ll make decisions based on these automatic behaviors, and we need to be aware of their influence. Compliance practitioners (such as marketing and salespeople) will continue to try to abuse these behaviors. These automatic behaviors are not always exploitative. They are only harmful when they are fabricated instead of occurring naturally. It&apos;s crucial to separate the composed ones and reverse the effect.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/influence-book-review-summary-and-notes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/influence-book-review-summary-and-notes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Seek diversity</title><link>https://candost.blog/notes/46i/</link><guid isPermaLink="true">https://candost.blog/notes/46i/</guid><pubDate>Sat, 25 Jan 2025 05:35:01 GMT</pubDate><content:encoded>&lt;p&gt;Tolerance and improving diverse living are not that difficult. They only require empathy. Putting ourselves in someone else’s shoes and trying to understand them already unites us as people. Moreover, if there are more diverse people in our neighborhood, we will unite with them more quickly and reduce or eliminate the prejudices we build in our heads because &lt;a href=&quot;/notes/20n/&quot;&gt;we belong to a neighborhood&lt;/a&gt;. Once we have things in common, it becomes easier to unite and feel comfortable.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/9d/&quot;&gt;Authority figures&lt;/a&gt; must live in diverse neighborhoods. Often, they don&apos;t, and we face discrimination.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20l/&quot;&gt;Forming a neighborhood community&lt;/a&gt; in which people share responsibilities helps build a diverse living.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46i/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46i/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Helping with chores improves relationships</title><link>https://candost.blog/notes/20n/</link><guid isPermaLink="true">https://candost.blog/notes/20n/</guid><pubDate>Fri, 24 Jan 2025 05:39:01 GMT</pubDate><content:encoded>&lt;p&gt;Homes are sacred places that belong to the closest family. When we feel closest to someone, it is the time we share residence. When we invite friends to our homes, they are already one step closer to uniting with us. When we want to get even closer, we can involve them in setting the table during dinners. It shows that (and makes them feel like) they are part of the family as they help. Sharing some chores belongs to co-residents and family. With a small gesture, we tell them we see the guests as part of the family. They also begin to be comfortable and share their feeling. That feeling remains for a long time.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Asking guests to help might sound disturbing, but most of the joy comes from &lt;a href=&quot;/notes/67/&quot;&gt;seeking inconvenience&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20n/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20n/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Acting together improves group cohesion</title><link>https://candost.blog/notes/20m/</link><guid isPermaLink="true">https://candost.blog/notes/20m/</guid><pubDate>Wed, 22 Jan 2025 05:39:01 GMT</pubDate><content:encoded>&lt;p&gt;While doing things with others is already helpful in forming better relationships, doing things in synchronized movements like dancing or singing unites people even further. Doing synchronized activities brings people closer as they share the moment. That’s why all national anthems are sung out loud together, and armies march in perfect synchronization. The same is true for teams. Team events that require synchronized acting or even acting only get people closer. They find a common ground and feel they belong.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;In cross-culture culture collaborations&lt;/a&gt;, organize team events to increase team cohesion.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;When you do reorg&lt;/a&gt;, find activities that people need to act together to succeed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20m/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20m/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Engineering Managers Leading a Big Project—Step by Step</title><link>https://candost.blog/leading-a-big-project-step-by-step/</link><guid isPermaLink="true">https://candost.blog/leading-a-big-project-step-by-step/</guid><description>How engineering managers lead cross-team projects: aligning problems, stakeholders, solutions and everyone in between.</description><pubDate>Tue, 21 Jan 2025 08:30:00 GMT</pubDate><content:encoded>&lt;p&gt;When I &lt;a href=&quot;/studying-and-learning-leadership/&quot;&gt;​peaked into​&lt;/a&gt; the engineering management role, one of my biggest challenges was learning how to lead projects involving multiple teams.&lt;/p&gt;
&lt;p&gt;Delivering a project from scratch to production is a big challenge, especially for big organizations. It takes months to move a needle due to the complexity. Clarifying the why and the what, identifying risks, setting expectations, and convincing people require a lot of time.&lt;/p&gt;
&lt;p&gt;Although it can be overwhelming, there are strategies to ease the burden and organize this complexity. Many organizations expect Engineering Managers (EM) to develop strategies so they can lead complex projects. EMs learn how to fulfill these expectations over time.&lt;/p&gt;
&lt;p&gt;When software engineers grow into senior roles, they are expected to deliver on their promises and divide the work into smaller pieces so that others can understand the scope and what needs to be done. They are expected to develop these skills further when they become EMs. Instead of splitting tasks into smaller pieces, they begin leading complicated projects and dividing the work into ambiguous chunks for which senior engineers can take responsibility.&lt;/p&gt;
&lt;p&gt;Then, when projects involve many departments, EM’s job becomes understanding complexity and creating a high-level solution. This leaves some ambiguity for the teams to pick up, investigate, organize, and start working on.&lt;/p&gt;
&lt;p&gt;I learned that once leading a complex project across a few teams becomes the responsibility, the work differs from leading a project with a single team. From then on, it focuses on setting and fulfilling expectations, clarifying open questions, driving other engineering leaders to shape up target software architecture, aligning timelines, &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers&quot;&gt;​prioritizing​&lt;/a&gt;, &lt;a href=&quot;/how-to-solve-and-prevent-conflicts&quot;&gt;​negotiating​&lt;/a&gt;, adapting to changes, and &lt;a href=&quot;/communicating-decisions-in-the-organizations&quot;&gt;​managing communication​&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;EMs are bridges between stakeholders, product managers, designers, and engineers. They guide engineers by helping them &lt;a href=&quot;/journal/missing-product-engineering-partnership/&quot;&gt;​design better solutions​&lt;/a&gt;, &lt;a href=&quot;/journal/too-much-collaboration-is-detrimental/&quot;&gt;​ensuring the right collaboration model is in place​&lt;/a&gt;, and ensuring the team implements them in the correct order. They support product managers by providing input about feasibility, challenging their approach, de-risking the identified risks, raising the later-discovered unknowns during implementation and adjusting the course accordingly. They help other stakeholders by coordinating the work and constantly communicating progress.&lt;/p&gt;
&lt;p&gt;How they do all of these things will depend on the organization. Some organizations rely on meetings to coordinate the work; some coordinate everything over spreadsheets, emails, or chat apps like Slack; some &lt;a href=&quot;/managing-partially-distributed-teams&quot;&gt;​choose a mix​&lt;/a&gt;; and some do everything via written and asynchronous communication. Regardless of the approach, EM’s job boils down to managing delivery, as their success is measured by what their team(s) deliver.&lt;/p&gt;
&lt;p&gt;Success starts with knowing the fundamentals of project management.&lt;/p&gt;
&lt;h2&gt;Project Management&lt;/h2&gt;
&lt;p&gt;If there were a few silver bullets in project management, they would be to ensure everyone has the same understanding of the current status, find risks early and manage dependencies well.&lt;/p&gt;
&lt;p&gt;Although all project management frameworks (Scrum, Kanban, Scrumban, Lean, etc.) aim to address those silver bullets in one way or another, what matters for an EM is when and how to choose one. As messing up on a project is a scary experience, I recommend learning different frameworks and discovering commonalities, having a conversation with an experienced peer in the same organization and asking for advice. Moreover, aligning with the leading product manager (PM) or product owner (PO) is the first and most fundamental step.&lt;/p&gt;
&lt;p&gt;My perspective changed most significantly when I first aligned with the product and design counterparts on &lt;strong&gt;how&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;we&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;distribute the work between ourselves&lt;/strong&gt;. As EMs can&apos;t lead projects without these partners, setting the expectations right in the first place makes a lot of things easier.&lt;/p&gt;
&lt;p&gt;Agreeing on how we’ll manage the project is crucial because we’ll focus on the product and the problem together with them.&lt;/p&gt;
&lt;h2&gt;Product and Problem&lt;/h2&gt;
&lt;p&gt;Solving a problem end to end is a team effort; it doesn’t belong solely to anyone. Product and design teams often handle documents like product requirements documents, press releases, user story mapping, wireframe designs, etc., that explain what a product or feature should do in detail. These artifacts are the guideposts for understanding how everything should work from the user’s side. &lt;strong&gt;EM’s job is to explain the problem from a delivery perspective—the how part of the problem.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;EMs focus on solving implementation problems, determining &lt;a href=&quot;/why-cant-this-be-done-sooner&quot;&gt;​whether more feasible solutions exist​&lt;/a&gt; and providing feedback to product and design teams so that they can adjust their solutions.&lt;/p&gt;
&lt;h3&gt;Pragmatic Approach to Problem Solution&lt;/h3&gt;
&lt;p&gt;The problem on the delivery side often starts with unraveling the details of technical solutions. While not all questions have to be addressed upfront, those considering how applications and systems will work together and how to avoid making any system or team a bottleneck should be answered.&lt;/p&gt;
&lt;p&gt;This initial feasibility discovery should include a high-level technical design that shows what needs to be changed and where the significant risks are. If the risks need to be eliminated, the EM organizes further discovery with engineers to find a solution. However, &lt;strong&gt;it’s okay to lack some of the details on&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;how&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;the feature will be implemented in individual applications and systems&lt;/strong&gt;. That part needs to be resolved within the specific team.&lt;/p&gt;
&lt;p&gt;Together with the EM, a staff+ engineer can lead the system design. EM brings a complete understanding of the product and organizational context, and the staff+ engineer brings complete technical expertise. Furthermore, the EM can challenge engineers to find the best possible approach. Together, they can distribute the work into teams and decide on the parallelization and sequentialization of the implementation.&lt;/p&gt;
&lt;p&gt;When each team starts implementing, engineers discover various challenges. As EMs can’t foresee every possible question before the implementation begins, they coordinate the product, design, and other counterparts and work with the engineers to answer each question.&lt;/p&gt;
&lt;p&gt;EMs are at the center of all collaboration, primarily coordinating people and challenging solutions from a product and engineering perspective. As this work requires a lot of them, delegation and strong communication are the keys to success.&lt;/p&gt;
&lt;h2&gt;Delegation&lt;/h2&gt;
&lt;p&gt;An EM needs to delegate system design to engineers, implementation to teams, and problem-solving to others. Their job is to coordinate and resolve risks by guiding people to a solution and managing communication. Without proper delegation, none of these will ever work.&lt;/p&gt;
&lt;p&gt;However, &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;​it’s common for EMs to manage everything themselves, try to be everywhere and have a say in every tiny decision, as their name is on the project’s success.​&lt;/a&gt; This approach is a recipe for disaster. If every decision needs to involve them, they become a bottleneck.&lt;/p&gt;
&lt;p&gt;I want to leave the topic of how and what to delegate for another post (edit: &lt;a href=&quot;/how-to-delegate-anything-successfully/&quot;&gt;the post is here&lt;/a&gt;), but I want to mention a few essential things. &lt;strong&gt;While delegating, EMs should ensure that the expectations are clear and that the other side understands what needs to be done and the timeframe.&lt;/strong&gt; &lt;a href=&quot;/transparency-over-context/&quot;&gt;​EMs must answer every question when they delegate.​&lt;/a&gt; Also, they must set enough guardrails; others must drive the work, but it’s okay to have a certain level of protection from possible mistakes.&lt;/p&gt;
&lt;p&gt;After delegating work to the teams and other individuals, the work evolves into full coordination and managing communication as the project progresses.&lt;/p&gt;
&lt;h2&gt;Managing Communication and Progress&lt;/h2&gt;
&lt;p&gt;Unstructured communication is the real chaos-maker. When there is no information and communication structure, information flows in free form—the worst of all possible scenarios. Everyone has a little piece of information that the others don’t. They share the information in various mediums, and it turns into a game where you say the word from ear to ear, and what you hear in the end is different.&lt;/p&gt;
&lt;p&gt;That’s why EMs must &lt;em&gt;manage communication&lt;/em&gt;. They don’t always have to be in the room or attend all meetings. Yet, they must follow up, hold people accountable, share outcomes, progress, and problems with everyone and guide and redirect all information so that it accumulates in one place.&lt;/p&gt;
&lt;p&gt;I use a living document to merge all information and links and make it a go-to document for all delivery-related topics until the project ends. Unlike the product requirements document describing the problem and what we are aiming for from the user’s perspective, the delivery document focuses on how we’ll approach the solution more concretely. It splits the project into milestones and clearly identifies what needs to be done and what is out of scope. Its purpose is to merge the information that has an impact on multiple work streams. It’s a go-to document when someone has a question about the &lt;em&gt;how&lt;/em&gt; part of the project (not the &lt;em&gt;what&lt;/em&gt; and definitely not the &lt;em&gt;why&lt;/em&gt; part).&lt;/p&gt;
&lt;p&gt;The delivery document is also a communication tool for stakeholders. When the project kicks off, it becomes the go-to document for all stakeholders to grasp the project’s current status, latest timeline, risks, open and answered questions, and all the necessary reference documents from a single place. However, delivery documents don’t keep track of the status of all the small tasks; that’s the job of a delivery board.&lt;/p&gt;
&lt;p&gt;The delivery board is simple and has four columns: Backlog, Blocked, In Progress, and Done. It includes all tasks that are in teams’ roadmaps. The board’s goal is to give an idea about the progress of each team’s tasks without asking them to share a status update. I create a custom dashboard on Jira and ask all teams to label their Jira tickets with a specific label to make it easy to follow the tasks on the board. I’m sure other project management software has a similar functionality.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This approach may look like a waterfall, not agile, to some people. However, if you’re working with six or seven teams to deliver a project, you must manage the organization and communication overhead and find risks early by doing discovery work. Some organizations have program managers or release managers to do this job. If you don’t have one, this often falls on the shoulders of engineering managers (ideally partnering with product managers).&lt;/p&gt;
&lt;p&gt;Although the responsibilities of an engineering manager differ from organization to organization, leading large projects is a core skill for any EM to develop.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/leading-a-big-project-step-by-step/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/leading-a-big-project-step-by-step/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>People unite behind a common goal</title><link>https://candost.blog/notes/24a1/</link><guid isPermaLink="true">https://candost.blog/notes/24a1/</guid><pubDate>Sun, 19 Jan 2025 06:42:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the main reasons for the importance of teams in organizations is the sense of unity behind a common goal. When the goal (or other reasons for uniting people) are not apparent, &lt;a href=&quot;/notes/44f/&quot;&gt;people start&lt;/a&gt; going &lt;a href=&quot;/notes/40b/&quot;&gt;after one another&lt;/a&gt;. However, once they &lt;a href=&quot;/notes/34/&quot;&gt;merge&lt;/a&gt; behind a common goal and feel “the whole team is one of them,” they do and achieve remarkable things. Moreover, people feel united and do more for the group. They go the extra mile and go out of their way to help others in the team.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;If you &lt;a href=&quot;/notes/3b/&quot;&gt;join a new team&lt;/a&gt;, &lt;a href=&quot;/notes/3b7/&quot;&gt;audit in three pillars&lt;/a&gt; to understand how they formed unity by doing things together. Find what keeps them together.&lt;/li&gt;
&lt;li&gt;When &lt;a href=&quot;/notes/56/&quot;&gt;structuring teams in an organization&lt;/a&gt;, try to find common elements between team members before putting them on the same team.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/24a1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/24a1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Too much collaboration is detrimental</title><link>https://candost.blog/journal/too-much-collaboration-is-detrimental/</link><guid isPermaLink="true">https://candost.blog/journal/too-much-collaboration-is-detrimental/</guid><pubDate>Fri, 17 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Too much collaboration is detrimental.&lt;/p&gt;
&lt;p&gt;Many leaders constantly recommend or guide their teams to collaborate closely with other teams. I know they have good intentions, but that’s harmful.&lt;/p&gt;
&lt;p&gt;Good collaboration has a scope and time limits. If we give two groups of people a common goal to achieve, they “become” one team and can achieve remarkable results. However, if we tell a team to collaborate with five others simultaneously, that’s nothing besides chaos.&lt;/p&gt;
&lt;p&gt;Great solutions require focus and dedicated effort. To achieve great results, you have to eliminate distractions.&lt;/p&gt;
&lt;p&gt;Many leaders use Team Topologies to promote collaboration and fall into the trap of having strong collaborations with many teams. However, Manuel Pais and Matthew Skelton say in their book that there shouldn’t be an active collaboration with five teams.&lt;/p&gt;
&lt;p&gt;If you want to streamline your team and resolve the puzzles, aim to minimize cross-team collaboration and reduce the scope of each collaboration, establish clear domain boundaries and reduce people&apos;s cognitive load.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/too-much-collaboration-is-detrimental/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/too-much-collaboration-is-detrimental/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Seek Goals That Will Change How You Live</title><link>https://candost.blog/seek-goals-that-will-change-how-you-live/</link><guid isPermaLink="true">https://candost.blog/seek-goals-that-will-change-how-you-live/</guid><description>Defining the right mindset and the strategies to set goals correctly</description><pubDate>Tue, 07 Jan 2025 09:30:00 GMT</pubDate><content:encoded>&lt;p&gt;While &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;I was writing about goals for the first time&lt;/a&gt;, I challenged myself to reconsider the concept of goal setting. I tried setting goals in different ways and failed in almost all of them. During these four years, all my failures taught me a lot. Now, I know what I did wrong.&lt;/p&gt;
&lt;p&gt;I’ll share with you how to negotiate with yourself to set the right goals. This post will also be a note for me to visit again and remind myself how the system works.&lt;/p&gt;
&lt;p&gt;Everything starts with setting the right mindset around goals.&lt;/p&gt;
&lt;h2&gt;The Right Mindset&lt;/h2&gt;
&lt;p&gt;I learned that suffering is the source of happiness. This is counterintuitive, but we value things more when we bear the ups and downs of them. Think about a challenging process you went through, such as getting a new job or learning a new skill as a hobby. During the process, things might feel frustrating, but when we make it, it feels great. &lt;strong&gt;Our commitment and the distress we endure is directly proportional to the intrinsic value we assign to it.&lt;/strong&gt; Hence, we feel happier when we spend our time with whatever we value more.&lt;/p&gt;
&lt;p&gt;Besides happiness, success and achieving goals are unrelated. &lt;strong&gt;I can fail all my goals and consider myself successful.&lt;/strong&gt; These two are entirely irrelevant even though society pushes us to attach them together more. A goal aims at the process &lt;em&gt;within a timeframe&lt;/em&gt;; success aims at the definition of identity and feelings. A goal is a short-term investment, while success is a long-term personality trait. Therefore, a goal that says, “improve A by X% in Y months,” is not a definition of success, but it’s a progression.&lt;/p&gt;
&lt;p&gt;Without tracking, we can’t judge the progress. Tracking goals is more important than achieving them. &lt;strong&gt;The primary purpose of having a goal is to track progress and adjust to changes&lt;/strong&gt;; that’s it. Achieving the goals is in the second or third plan compared to monitoring progress. Tracking progress constantly reminds our brains to do something about it because tracking goals helps us build our identity.&lt;/p&gt;
&lt;p&gt;In the two paragraphs above, I said that the definition of success should be separated from achieving goals. However, &lt;strong&gt;when goals are used correctly, they are powerful enough to form an identity&lt;/strong&gt;. If I define an objective for myself that says, “Become a writer,” I add a new identity to myself. Although it’s not a great goal itself (we’ll learn below why), I can define specific sub-goals aligned with this identity, such as “publish 40 blog articles in 2025.” The magic happens when I call myself a writer. My brain automatically thinks: “What do writers do? They write. If I’m a writer, then I should write, too,” and I find myself writing this newsletter. Ta-da!&lt;/p&gt;
&lt;p&gt;Now that we have established the mindset, let’s learn how to define goals.&lt;/p&gt;
&lt;h2&gt;Defining Goals&lt;/h2&gt;
&lt;p&gt;How we define goals changes the result and the success rate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Define goals that will form habits rather than ones you’ll complete and forget about.&lt;/strong&gt; Instead of saying, “I will read 20 books in 2025,” turn it into, “I will read &amp;gt;20 mins a day for 300 days.” If your reading speed is average, 20 minutes a day will quickly bring you ~20 books in a year. This way, the goal doesn’t seem too far, and carving out 20 minutes daily is easier than dealing with 20 books. In the end, you also form a habit that will stick with you for the rest of your life.&lt;/p&gt;
&lt;p&gt;If you recognize it, I didn’t say to read for 20 minutes &lt;em&gt;every day&lt;/em&gt;; I capped it at 300 days. While reading about economics and psychology, I learned about the margin of safety or margin of error. &lt;strong&gt;There should be a buffer on the goal for setbacks.&lt;/strong&gt; Instead of, “Write every day in 2025,” which will be unsuccessful on the first day you skip writing for any reason, say, “Write for more than 300 days in 2025.” The remaining 65 days will be the margin of safety. Skipping three days a month or a whole month will still bring achievement.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keep the goals as small as possible and as ambitious as necessary.&lt;/strong&gt; What matters is the habits you form and the constant output it brings. If you’re not reading books at all, start by setting a goal for 5 minutes or a page a day instead of 20 minutes. The Kaizen way suggests that it should be so small that you have no option but to do it. For example, I started flossing one tooth a day years ago; that was my goal. It was so tiny that I could not not-do it. Now, I’m flossing all my teeth every day.&lt;/p&gt;
&lt;p&gt;Much like flossing every day, small commitments bring consistency, as the author of the phenomenal book &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence and Psychologist Robert Cialdini says&lt;/a&gt;. &lt;strong&gt;In a tiny commitment, we create an identity, and without even thinking about it, we try to do more of what we committed.&lt;/strong&gt; If we make an insignificant donation to a charity (like signing a petition on the street), the charity organization uses that commitment and a month later asks for a much bigger one. In the first signature, we identify ourselves as the supporters of that cause, we feel obliged to follow up and increase our donation. Hence, while shaping goals, find what fits your identity or define a new one and start small (for example, I’m a writer now).&lt;/p&gt;
&lt;p&gt;While creating a new identity, you must also align your environment with the goals. In the book Atomic Habits, James Clear says &lt;strong&gt;setting up your environment is the primary enabler for changing habits&lt;/strong&gt;. If you want to read more and spend less time on your phone, don’t put phone chargers in every corner of your apartment. Replace them with books and magazines. If you want to write more, put pens and notepads everywhere in an arm&apos;s distance. If you want to exercise more, get your exercise materials (e.g., yoga mat) out of the closet and put them into places where you can always see them. The more you have them around, the more chances you have to do something with them.&lt;/p&gt;
&lt;p&gt;Another criterion is that &lt;strong&gt;the goals must be free of external influence and dependency&lt;/strong&gt;. You must have complete control. A goal that says, “I will be promoted to X role,” is not under your control. You can’t decide on your promotion alone. However, “I will study A for three months twice a week, which will help me get promoted to X” is better and under your control.&lt;/p&gt;
&lt;p&gt;The last thing I learned is to &lt;strong&gt;set goals publicly.&lt;/strong&gt; When others see our promises, we push ourselves to follow up on our commitments (remember the charity example above? They work because the commitments we make are not for ourselves). You don’t have to share your goals on social media; you can share them with friends, family, and whoever you want. The more people know, the better. Your brain thinks it’s a public promise and forces you to do more.&lt;/p&gt;
&lt;h2&gt;Seek goals that will change how you live&lt;/h2&gt;
&lt;p&gt;I still don’t remember whether I achieved or failed most of my past goals, which shows that they didn’t introduce a fundamental shift in my life. Also, these changes happen over time; it’s difficult to see the long-term changes.&lt;/p&gt;
&lt;p&gt;As humans, our brains can’t think in the very long term. We are stimulated with short-term gains for better survival, and our evolution speed can’t keep up with the advancements the human race has made over the last centuries. That’s why &lt;strong&gt;we underestimate the advantages of compounding (e.g., the exponential result of improving 1% every day) and long-term investment in anything&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/seek-goals-that-will-change-how-you-live/compounding-habits.png&quot; alt=&quot;1% Improvement compounds over time&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Seek goals that will change how you live, work, study, invest, etc., rather than something you’ll achieve and forget about.&lt;/strong&gt; If you improve by 1% every day, you’ll reach your goals much faster, and they will be permanent thanks to the compounding effect of a small thing you changed.&lt;/p&gt;
&lt;p&gt;With all the learnings I shared above, I am (and you are, too) better equipped to introduce long-lasting changes that will result in incredible achievements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;*P.S.&lt;/strong&gt; &lt;a href=&quot;https://sketchplanations.com/the-paradise-paradox&quot;&gt;​Paradise Paradox can help you plan the new year more realistic​.&lt;/a&gt;*&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/seek-goals-that-will-change-how-you-live/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/seek-goals-that-will-change-how-you-live/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Listen to your gut when you commit too much</title><link>https://candost.blog/notes/72a/</link><guid isPermaLink="true">https://candost.blog/notes/72a/</guid><pubDate>Mon, 06 Jan 2025 11:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we commit to something small and that tiny thing gets bigger, we need to stop and analyze what’s going on and whether we need to keep the same direction. Strong consistency drivers push us to follow the same promises and thoughts more and eventually be the victims of the sunk cost fallacy. This, in combination with consistent identity drivers, can put us into situations we don’t want or expect to happen. Getting out of this situation requires us to listen to our gut and ask ourselves, “Knowing what I know now, would I make the same decision again?” If not, then get out.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/15/&quot;&gt;If your manager increases delegation, stop and ask if you want to continue&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/16/&quot;&gt;While managing your time, think about previous commitments and analyze if they make sense&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;When trying to convince an organization about some improvement you want to make, start small and let it grow over time&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/72a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/72a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Learning How to Lead with Transparency</title><link>https://candost.blog/transparency-over-context/</link><guid isPermaLink="true">https://candost.blog/transparency-over-context/</guid><description>Learning what transparency means and how to find the right level of transparency.</description><pubDate>Sat, 04 Jan 2025 06:39:42 GMT</pubDate><content:encoded>&lt;p&gt;Think about a company where you can find all the information you are looking for. Everything is written and accessible—from detailed analysis of company financials to notes from the board meetings, from all details of projects to who is doing what at any moment. It looks like a utopia. Why can&apos;t many organizations even get close?&lt;/p&gt;
&lt;p&gt;People cannot figure out what level of transparency they should provide others. Leaders, in particular, keep certain information to themselves, sometimes with good intentions, like protecting someone else&apos;s privacy, but more often, they can&apos;t control their egos. When they receive feedback that says they need more transparency, they struggle to understand what that means.&lt;/p&gt;
&lt;p&gt;Many leaders think transparency is something unattainable. You will also hear many of them saying, “We&apos;re as transparent as we can be,” although they are far from it. Many claim that company financials are available to anyone, thinking that brings transparency. However, most of the day-to-day information cascades privately, relying on people&apos;s preferences to share the information with others. People, beaten by their egos, don&apos;t make every information publicly available because it might put someone (or themselves) in a difficult position.&lt;/p&gt;
&lt;p&gt;Sometimes, leaders want to &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;control the decision-making process&lt;/a&gt;. They manage access to information, form groups and invite others as they see fit. As they try to influence or balance a group of people, uninvited access to information might jeopardize the group dynamics and cause problems.&lt;/p&gt;
&lt;p&gt;Actually, many leaders get the idea of decision-making wrong. Leadership is about decisions, but not always making them. Leaders must work toward helping the whole organization make better decisions &lt;em&gt;&lt;a href=&quot;/why-cant-this-be-done-sooner/&quot;&gt;quickly&lt;/a&gt;&lt;/em&gt;. One way to do that is to lead the team by giving them full context.&lt;/p&gt;
&lt;p&gt;The team, which must make certain decisions to progress, must be able to access the context, content and all the information it needs without waiting for someone to make that information available to them. &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;Leaders must provide context to their teams and let the team of experts make a decision&lt;/a&gt;. Leaders should work toward creating—&lt;a href=&quot;https://koolaidfactory.com/structural-transparency-vs-content-level-transparency/&quot;&gt;what Brie calls&lt;/a&gt;—content-level transparency.&lt;/p&gt;
&lt;p&gt;Brie divides transparency into two categories: structural and content-level transparency. Structural transparency refers to information shared freely and openly across the organization, while content-level transparency refers to insights into the raw work as it happens.&lt;/p&gt;
&lt;p&gt;Many people think only of structural transparency, but what they need is content-level transparency. Anyone in the company can follow up on the work without asking anyone for any information. If someone else needs information about a project, they can search the open conversation and catch up with the information by themselves instead of someone sharing information personally.&lt;/p&gt;
&lt;p&gt;Although content-level transparency is a great approach, many organizations fail in this area. They manage information flow within hierarchical lines or social dynamics, which causes stress. People who cannot progress efficiently in their jobs also suffer from stress. Leaders (and managers) become bottlenecks of progress and cannot effectively delegate to their teams.&lt;/p&gt;
&lt;p&gt;However, delegation is the main enabler of growth in a leadership career. pThe more effectively a leader can delegate a job](/how-to-delegate-anything-successfully/), the easier their lives will be. Successful delegation demands full transparency, so leaders must share all relevant information.&lt;/p&gt;
&lt;p&gt;Contextual transparency is one of the main enablers of successful leadership. Any leader who wants to empower their teams and grow their impact must make context accessible so they can answer questions before they arise while allowing people to ask more.&lt;/p&gt;
&lt;p&gt;Content-level transparency has cumulative benefits: People spend less time building trust (which happens naturally in the process), politics are reduced, collaboration focuses on creative pursuits instead of knowledge sharing, everyone stays honest, and people can freely observe what/how others are working.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/strong-ownership-culture-in-a-team/&quot;&gt;It also helps leaders and prevents them from becoming bottlenecks of information.&lt;/a&gt; Instead of carrying information up and down and to the sides, they can focus on more critical problems.&lt;/p&gt;
&lt;p&gt;If your organization lacks content-level transparency, start implementing it by sharing the context of all the work with the people who need it and bringing them into where the discussions are happening. If you are leading a project, instead of creating a private chat group, default to a public one. Don&apos;t worry about spamming people with unnecessary conversations. If they feel spammed, they will leave the chat.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/transparency-over-context/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/transparency-over-context/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Psychology of Money—Book Review, Summary and Notes</title><link>https://candost.blog/books/psychology-of-money/</link><guid isPermaLink="true">https://candost.blog/books/psychology-of-money/</guid><description>A profound book shows the psychological behaviors&apos; impact on our investment and financial decisions.</description><pubDate>Mon, 30 Dec 2024 04:54:00 GMT</pubDate><content:encoded>&lt;h2&gt;The Summary&lt;/h2&gt;
&lt;p&gt;The book is about how human thinking affects financial (or life) decisions. Different behaviors affect how people approach investing and increasing wealth. The book defines the most important ones while giving a holistic picture of how greed prevents people from improving their lives and how people can create or destroy wealth along with their happiness.
Then, the book dives into eighteen different factors that affect human judgment on money, wealth and happiness.&lt;/p&gt;
&lt;h2&gt;Timeless Lessons on Wealth, Greed and Happiness&lt;/h2&gt;
&lt;p&gt;Your behavior with money is the most important compounding factor of your wealth or your loss. How you approach money, in good or bad times, can change the place you end up. It&apos;s crucial to get the priorities right, line up to them, and don&apos;t move the goalpost. What works for you will not work for anyone else. Everyone&apos;s motives are different. That&apos;s why you shouldn&apos;t listen to every piece of advice you hear. Make up your mind. How to make the best financial decision is, in the end, black and white: are you able to sleep well at night?&lt;/p&gt;
&lt;h2&gt;Chapter 1: No One&apos;s Crazy&lt;/h2&gt;
&lt;p&gt;Everyone&apos;s financial decisions or how they see money is different and doesn&apos;t always have logical explanations. It depends on the time they were born, the city/country they lived in their younger years, their and their families&apos; financial status, and their family&apos;s approach to money have an impact. That&apos;s why everyone is unique. Also, for some reason, everyone&apos;s understanding of the economy and how the financial system works is different. Anyone&apos;s understanding can cover 80% of their financial knowledge but represents a fraction of how the system actually works. That&apos;s why when people spend/invest their money, there is no craziness; everyone sees differently. Why they spend money in a certain way probably makes sense to them, even though it might be completely wrong. So, don&apos;t think everyone is crazy or you&apos;re doing the wrong thing. There is no right approach. Considering the very short history of economic enhancements we had (like retirement system, stocks, etc.) compared to how long we exist as a species or how long we have money in the world, we still don&apos;t know what&apos;s the best strategy that works. There is no best strategy. We know very little and don&apos;t have a chance to understand or learn every factor that contributes to how money works.&lt;/p&gt;
&lt;h2&gt;Chapter 2: Luck &amp;amp; Risk&lt;/h2&gt;
&lt;p&gt;When we&apos;re in front of a successful person, we attribute their success to the hard work they put in, but when they don&apos;t hear us, we tend to talk more about their luck. When it comes to saying to others, we go easily and say, “They were lucky.” But when we are successful, we diminish the effect of luck ourselves because we see all the hard work we put in. We don&apos;t think that luck plays a big role.&lt;/p&gt;
&lt;p&gt;The same applies to the risk. When we&apos;re successful, we see all the risks we have taken, but when someone else is successful, we diminish the risks involved. Similar things apply to failures.&lt;/p&gt;
&lt;p&gt;The best way to cope with luck and risk is when things are going really well; we shouldn&apos;t fool ourselves into thinking that luck played no role there. The same applies to risk the other way around. When things go bad, we shouldn&apos;t think that all decisions are terrible; we took a risk and were not lucky. What we can do is to reduce the impact of the risks we take. For example, while arranging our financial life, we can try to ensure that a single financial investment will not wipe us out if things go bad there.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Nothing as good or as bad as it seems.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Chapter 3: Never Enough&lt;/h2&gt;
&lt;p&gt;The thing many rich people don&apos;t have is “enough.” They always push for more even though they may live very comfortably for the rest of their lives with the accumulated money they have. We keep moving the goalpost and become miserable while chasing it. Happiness is the results minus expectations. When our expectations are higher than the results, we become unhappy. In the chase to move the goalpost, some people try illegal things because they just want more—becoming stupidly ambitious. In the end, they ruin whatever they have built or accumulated.&lt;/p&gt;
&lt;p&gt;The wisdom is to stop moving the goalpost. It&apos;s dangerous always to want more. Build a sense of enough, and it will make you happy and healthy.&lt;/p&gt;
&lt;p&gt;Don&apos;t compare yourself with others. As we talked about in the previous chapter, everyone has their own luck &amp;amp; risk situation. If someone is much wealthier than you, don&apos;t get into the comparison game because there is no limit in that game. People like Warren Buffet and Bezos have even vast differences in their wealth that are unimaginable to the majority of the population.&lt;/p&gt;
&lt;p&gt;Enough doesn&apos;t mean too little. You have to find what&apos;s enough for you, but it doesn&apos;t mean you shouldn&apos;t be ambitious. Learn your limit and which opportunities you should take because not all seeming opportunities are worth the risk. There are some that you should avoid, no matter the gain. Think about what&apos;s important to you in life: reputation, freedom, family, friends, happiness, love, etc.&lt;/p&gt;
&lt;h2&gt;Chapter 4: Confounding Compounding&lt;/h2&gt;
&lt;p&gt;Many don&apos;t realize the exponential impact of sticking to certain things for a very long time. Our brains can&apos;t grasp the exponential impact. Take Buffet; his wealth has accumulated over 75 years, and his $81 billion came after he was 65. But he started investing at age 10. He is skilled in investing, but his secret is time. Compounding works in many ways well. Any skill that is done well over a very long time brings success. It&apos;s just that humans have a hard time understanding (or thinking about) exponential gain in the long term.&lt;/p&gt;
&lt;p&gt;A good investment earns pretty good (not necessarily the highest) returns over a very long time. Compounding wins much more than one-off highest returns.&lt;/p&gt;
&lt;h2&gt;Chapter 5: Getting Wealthy vs. Staying Wealthy&lt;/h2&gt;
&lt;p&gt;Many people get rich overnight and also lose everything in a short time. Getting rich is one thing; staying rich is another. Keeping the wealth requires frugality and humility. You need to accept that how you got rich can be gone in a day and acknowledge the luck factor. You also need to try not to lose the money constantly. You have to build a survival mindset. With the survival mindset and keeping money, you enable compounding to do wonders for you. Even that means you don&apos;t get the most significant returns all the time; while everyone is getting a lot of returns, you have to keep your focus on the long-term win. For that one, you have to plan with thinking things will not go according to the plan. As the world keeps changing, no plan can survive without adjustment. Nobody can foresee the future. That&apos;s why you have to build a buffer—a margin of safety.&lt;/p&gt;
&lt;p&gt;You have to plan with room for error. For that, you have to have a frugal budget, think flexibly, and live happily with an extended range of outcomes. It&apos;s not about conservatism—avoiding risk. It&apos;s about increasing your chances of survival at a given risk. You have to be optimistic about the future but paranoid about what can prevent you from getting there. You need to have a short-term paranoia to keep you alive long enough.&lt;/p&gt;
&lt;h2&gt;Chapter 6: Tails, You Win&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;“Tails drive everything.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In business, finance, or most of the things involving uncertainty, it&apos;s the tail that brings huge success. When you look at Berkshire Hathaway, you see that their fortune comes from their top few investments, the rest of the hundreds are average or loss. That&apos;s also true for businesses. Take Google or Amazon. Amazon introduced the Fire Phone, which was a huge failure. But Bezos said, “We&apos;re working on the next failure.” They can offset these losses with a few tails they have—Prime and AWS. The same applies to finance. You can be wrong half the time and still be rich. A few of your investments succeed, and you become rich. The rest can be average or fail. In fact, they will. Don&apos;t hang up on them too much. Look at the next. Ensure that you don&apos;t bet everything on that failure.&lt;/p&gt;
&lt;h2&gt;Chapter 7: Freedom&lt;/h2&gt;
&lt;p&gt;The real richness is how much you have control over your time. All surveys and research about happiness tell nothing about money. It&apos;s the ability to choose what you want to do when you want to do it and whoever you want to do with—having control over your life and time in general.&lt;/p&gt;
&lt;p&gt;As our jobs evolved from laboring to office work, we are constantly working (even while not working, we think about work and problems). The freedom to not do that and have control over time is the real happiness. It&apos;s not the money you have, the size of your house. But money can provide you with that freedom. More money doesn&apos;t make you happy, but by using the money as a safeguard, you can free up the time to do whatever you want to do whenever you want to do with whoever you want to do with.&lt;/p&gt;
&lt;h2&gt;Chapter 8: Man In The Car Paradox&lt;/h2&gt;
&lt;p&gt;When you spend money to buy a fancy car thinking that people will recognize and respect you, look at you and think that you&apos;re an important person, you&apos;re putting yourself in the wrong place. When people see the car, they look and admire the car, not you. You&apos;re never the topic. They think that one day they will own a car like that and they will be respected. They never think that you must be a very respectful person. The car steals that from you.&lt;/p&gt;
&lt;h2&gt;Chapter 9: Wealth Is What You Don&apos;t See&lt;/h2&gt;
&lt;p&gt;Richness is what people always see. It&apos;s the visible part of money. If someone has a Ferrari, we can safely say that they are rich. It doesn&apos;t matter how they can afford it; they have the monthly payment anyway, either at the edge of insolvency or deep down in debt.&lt;/p&gt;
&lt;p&gt;The wealth is different. It&apos;s the part nobody sees. That&apos;s why it&apos;s challenging to learn from others. Wealth is the car that hasn&apos;t been bought, the big house that wasn&apos;t moved in. It&apos;s an option not yet taken. Its value lies in the freedom and flexibility of one day purchasing more stuff than you can buy now. Building it is difficult because most wealthy people are also invisible; we can&apos;t learn from them. They might also be rich, but the wealth of the rich is also invisible. Nobody knows Bezos&apos; portfolio or the opportunities he didn&apos;t take.&lt;/p&gt;
&lt;h2&gt;Chapter 10: Save Money&lt;/h2&gt;
&lt;p&gt;Investment returns are mostly out of your control, but your savings rate is. You can build wealth without high income after you cover your minimum life expenses. The value of wealth is relative to what you need. If you keep moving the goalpost, you can&apos;t save. However, if you keep the goalpost constant, you can save whatever is left after you cover expenses. You don&apos;t need to put hours of work into increasing your investment returns from 10% to 12% if you increase your savings from 1000€ to 1200€ (already 20%).&lt;/p&gt;
&lt;p&gt;After a certain level of income, the rest is just your ego. How much you tame your ego tells you how much you can save. You can save more and spend less if you desire less. That simple. You also don&apos;t need a specific reason to save. It&apos;s okay to save for retirement, a house, a car, etc. But you don&apos;t have to. You can save money for the sake of saving. In turn, cash gives you flexibility. There is one thing you can&apos;t buy with money is time. If you save money, you build your flexibility muscles. Then you can earn back your time. More savings can help you if you know you don&apos;t like your job; you can quit and take your time to find a new job. You can also just sit on the money to wait for a great option to invest, especially when others who don&apos;t have the flexibility bring the opportunities to you. A while ago, everything was local. If you were the best, you made good money. Now, skill is not enough. Having control over your time and being flexible is the most valuable currency in the world.&lt;/p&gt;
&lt;h2&gt;Chapter 11: Reasonable &amp;gt; Rational&lt;/h2&gt;
&lt;p&gt;You don&apos;t have to be perfectly rational in investing. We&apos;re human, not a spreadsheet. As the whole investment system is complex and depends on humans, it&apos;s okay to be just reasonable and realize you can&apos;t win only with numbers. When you do, you have higher chances to stick to your plan in the long run instead of day trading. Investing in a company you love for any reason helps you stick to it when the market is going down. In turn, it helps the company to have capital and stay wealthier in the long run. On paper, it might not make sense to own that company but just because you like it, you keep the share in the difficult times. Once the difficult times are over, it usually pays back if the company&apos;s financials are strong. Being reasonable helps you stay on track when everyone is trying to guess the market in day trade, you can stay strong knowing that it&apos;s impossible to do (as much as day trade benefits look attractive on paper).&lt;/p&gt;
&lt;h2&gt;Chapter 12: Surprise&lt;/h2&gt;
&lt;p&gt;Studying history to replicate what worked back then will never work today. As the world is different, industries have changed, how investment is used has changed, and capital allocation and technology have changed. Hence, looking at historical patterns will never work. There is also the impact of big events nobody could foreseen, like World War II, 9/11, the 2008 crisis, etc. Every time these events were happening for the first time. All of them started/happened with a tiny event—a tail event that changed the world, moved the needle, and was an outlier. The problem is that we often don&apos;t use these events to guide our thinking when designing future investments. We think that they won&apos;t happen again. True, they won&apos;t, but we&apos;ll always see brand-new ones. So, we have to learn from being surprised, and the world is always surprising. We can&apos;t use past surprises as a guide; we can only expect that we&apos;ll be surprised again, we have no idea what will happen next.&lt;/p&gt;
&lt;p&gt;Also, looking at the history to understand patterns is misleading too. We can&apos;t form future predictions using historical data. The structural changes happening all the time, making it impossible to compare today with the past. There was no venture capital money in the 1940s-1950s to do business. There were no tech companies, and there were recessions in varying cadences. Even Benjamin Graham, one of the best investors of all time, changed the formulas in his book in every new version. He admitted that what worked in the previous version wasn&apos;t working anymore. That&apos;s what made him great: not using the same methods but adjusting according to today. History can only help to get the bigger picture, such as psychological patterns and how people behave in certain events when they invest. That&apos;s what we can learn from historical data. But for the rest, we have to be ready to be surprised and plan our money to be ready for unknowns.&lt;/p&gt;
&lt;h2&gt;Chapter 13: Room for Error&lt;/h2&gt;
&lt;p&gt;In whatever you do, you have no certainty that everything will go as you wanted or expected. You can plan everything in detail but life will eventually bring you a surprise. To prevent being caught off-guard and being wiped out in a surprise, you must add/think about room for error. We can&apos;t predict the world as black/white; we have to consider gray areas where anything can happen. Any unexpected events can knock down the market 30% in a day/week. If you don&apos;t have any room for error in your investment plan, you might sell everything and lose a lot, which pushes you out of the game completely and you can&apos;t come back at all. You can&apos;t know how the stock prices will be on any day. Volatility is real and its impact is more psychological. If you have no room for error, you can sell everything in a 25% decline in the market.&lt;/p&gt;
&lt;p&gt;The same goes for retirement plans. You can&apos;t know what the market will be like. You may retire in the middle of a bear market, leaving you with less money than you anticipated. Your future returns might be lower. If you have no margin of safety, you can&apos;t even retire. OR you might have to use your retirement savings for a medical mishap while you&apos;re 35.
The golden rule is building room for error to prevent a single point of failure. If one event can knock you down so that you can&apos;t go back to the game, you have to build a backup of a backup. When you do, you&apos;ll have a chance to wait for the odds to turn in your favor. This can increase the chance of rare good events happening because you were able to stay in the game, or you win from compounding. If you rely on a pay-check every month to stay alive, build a gap between the money that arrives and what you use. The goal is to do what you want, when you want, as long as you want.&lt;/p&gt;
&lt;h2&gt;Chapter 14: You&apos;ll Change&lt;/h2&gt;
&lt;p&gt;We make financial (or life) decisions with the mindset that we&apos;ll be the same person in a decade or two. It&apos;s easy for us to see and accept how much we have changed in the past but challenging to realize how much we&apos;ll change in the future. The decisions made in the past define our lives today, and we either abandon them or stick to them without being happy. When we abandon, we interrupt compounding. Instead of choosing either approach, we can seek to find the balance between two ends. And we should strive to avoid the extreme ends of financial planning. Endurance is key here. Instead of living a very frugal life where we don&apos;t enjoy or earn a lot to live in luxury but at the cost of our time, we can find moderate living with moderate savings and moderate time for family and leisure. As we keep changing, that gives us the flexibility to adjust without interrupting compounding or starting from zero in our new decisions that change the direction.&lt;/p&gt;
&lt;p&gt;Also, we should aim to accept the reality of changes in our minds. Some people stick to one career just because they studied that. It&apos;s difficult to know what you&apos;ll want in 20 years while you&apos;re still in college. It&apos;s also true now that we do not know what we&apos;ll want in 10 years. Instead, we should accept that we&apos;ll change and not let our future selves become prisoners of our past selves. We need to get rid of sunk costs in our lives.&lt;/p&gt;
&lt;h2&gt;Chapter 15: Nothing is Free&lt;/h2&gt;
&lt;p&gt;Many people try to get more money and more returns without paying the fee. The volatility in the stock market is a fee that you cannot avoid. In every investment, every gain, there is a fee. Most often, the fee is invisible but it&apos;s always there. You cannot avoid it. You might try finding ways to postpone it, but eventually, it finds you in the form of a fine. Accept that you&apos;ll pay the fee like in any entertainment center. The cinema costs money, while you can rent the movie at home. You go to the cinema to have the experience and pay the fee. Accept the stock market&apos;s fee (volatility) and be okay with it. If you&apos;re not, you don&apos;t have to get into the stock market and can stay with cash or other forms but your returns will be smaller.&lt;/p&gt;
&lt;h2&gt;Chapter 16: You &amp;amp; Me&lt;/h2&gt;
&lt;p&gt;Although everyone is playing in the same field, everyone plays a different game. We call everyone an investor, but a granny investing the retirement money differs a lot from the day trader who optimizes for very short-term wins. Big failures more often come from social influence, people looking at others and imitating their investments, who are playing a different game. If you&apos;re investing in the longer term and read investment advice aimed at the short term, eventually, you&apos;ll fail, or the other side will fail. Both of you can&apos;t win.&lt;/p&gt;
&lt;h2&gt;Chapter 17: The Seduction of Pessimism&lt;/h2&gt;
&lt;p&gt;Nobody notices a big change if it happens over 20 years. They are invisible. But if the market goes down 40% in a day, everyone starts bursting out disaster scenarios. This is also what gets attention. People look at warnings and alerts about pessimistic/dramatic scenarios. But if the market grows 200% over 10 years, nobody realizes it. It&apos;s tempting to pay attention to disaster scenarios, but we have to keep an attitude and stay on course even when there is a huge noise outside screaming doomsday.&lt;/p&gt;
&lt;h2&gt;Chapter 18: When You Believe Anything&lt;/h2&gt;
&lt;p&gt;When you want to believe in something, you find even more related things to believe. We find exaggerations and stories to move the wish to a bigger extent. Moreover, everyone has an incomplete picture of the world and builds narratives to fill the gaps. The problem is that everyone has a different view and narrative. We focus on what we know and discard what we know. This makes us blind to even discovering them. Especially in economics and investing, the worldview can&apos;t even be complete as it depends on others a lot. We have no clue or possibility to predict what others can think, let alone one person.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/psychology-of-money/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/psychology-of-money/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Separating Authority from Expertise</title><link>https://candost.blog/notes/19h/</link><guid isPermaLink="true">https://candost.blog/notes/19h/</guid><pubDate>Sat, 28 Dec 2024 06:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We need to separate expertise and authority to defend against the influence of authority. Simply asking ourselves, “Is this authority an expert on the topic?” and “How truthful can we expect this expert to be?” will help with the separation. Once the authority&apos;s influence is &lt;a href=&quot;/notes/9/&quot;&gt;separated&lt;/a&gt;, it’s easy to destroy its influence and &lt;a href=&quot;/notes/80/&quot;&gt;make a better judgment and decision&lt;/a&gt;. This method will help with purchasing products (as many products use well-known people to establish authority wrongly) and with following leaders at work (not &lt;a href=&quot;/notes/19e/&quot;&gt;every comment of a leader&lt;/a&gt; signals their expertise; sometimes, people have an opinion without knowledge).&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10/&quot;&gt;Separation of career paths&lt;/a&gt; is a good way to separate expertise and authority.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;The software architect&lt;/a&gt; is a role that sits between authority and expertise.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;When guiding direct reports as a manager&lt;/a&gt;, find the correct information to guide experts. Don’t be vague. &lt;a href=&quot;/notes/40/&quot;&gt;When getting feedback&lt;/a&gt;, understand what information you’re missing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19h/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19h/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Prepare better for removing access to a particular thing as a leader</title><link>https://candost.blog/notes/30b2a/</link><guid isPermaLink="true">https://candost.blog/notes/30b2a/</guid><pubDate>Sat, 28 Dec 2024 06:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you’re changing rules (as a leader) and people lose access to certain things, create &lt;a href=&quot;/notes/3a/&quot;&gt;a proper decision-making strategy&lt;/a&gt; so they don’t rebel too much or become unsatisfied at work. Try to understand how you can control people’s emotions and develop strategies for situations that can go wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32b/&quot;&gt;If you’re removing access to a perk or benefit, communicate clearly&lt;/a&gt;, &lt;a href=&quot;/notes/20c/&quot;&gt;explain the reasons clearly&lt;/a&gt; and avoid leaving people uncertain, as this will strengthen their emotions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;Create an open culture&lt;/a&gt; to hear criticism.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30b2a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30b2a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Separate your desire from the actual value</title><link>https://candost.blog/notes/7b/</link><guid isPermaLink="true">https://candost.blog/notes/7b/</guid><pubDate>Sat, 28 Dec 2024 06:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How we handle something to which we lose access or have limited access changes everything. Our perspective can increase our arousal or call it enough that we &lt;a href=&quot;/notes/30d/&quot;&gt;don’t seek it&lt;/a&gt; anymore. Separating the value from our desire for it gives us a much-needed perspective.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;When &lt;a href=&quot;/notes/32/&quot;&gt;communicating decisions that remove access to something&lt;/a&gt;, explain the value of losing that access and the rationale behind the decision.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/68/&quot;&gt;Retrospective thinking makes the lessons apparent&lt;/a&gt; when we can’t separate the desire from the value.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/80/&quot;&gt;While purchasing/selling something&lt;/a&gt;, be aware of the scarcity driver.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes52a1/&quot;&gt;Desires make us submit and lose control&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/7b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/7b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Managers work anytime, anywhere</title><link>https://candost.blog/notes/16e/</link><guid isPermaLink="true">https://candost.blog/notes/16e/</guid><pubDate>Sat, 28 Dec 2024 05:35:01 GMT</pubDate><content:encoded>&lt;p&gt;The manager (the heart of the job—thinking) does the job by &lt;a href=&quot;/notes/68a/&quot;&gt;thinking&lt;/a&gt;, not when they get information about something. &lt;a href=&quot;/notes/74/&quot;&gt;Understanding the information&lt;/a&gt; requires reflecting and thinking, which can be done anywhere, anytime. Hence, managers work outside of working hours because the problems they try to solve need not focus but need to &lt;a href=&quot;/notes/62a/&quot;&gt;be unfocused to unravel and make sense&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;We can &lt;a href=&quot;/notes/46d/&quot;&gt;eliminate our doubts by thinking about the experience&lt;/a&gt; we gained.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/16e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/16e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Commitment brings consistency</title><link>https://candost.blog/notes/38a1/</link><guid isPermaLink="true">https://candost.blog/notes/38a1/</guid><pubDate>Sat, 28 Dec 2024 05:35:01 GMT</pubDate><content:encoded>&lt;p&gt;We are consistent with how we define ourselves. We &lt;a href=&quot;/notes/25a/&quot;&gt;stick&lt;/a&gt; to our commitments toward others (not really for ourselves). In other people’s eyes, we do whatever it takes to live up to our words. It sometimes causes us trouble (like people in the street asking for a donation signature and then using it to scam), and sometimes it works like magic (like when we publicly commit to our goals). We &lt;a href=&quot;/notes/25/&quot;&gt;work hard&lt;/a&gt; to &lt;a href=&quot;/notes/52c/&quot;&gt;live up to our commitments&lt;/a&gt; and ensure we’re perceived as consistent.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/38a1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/38a1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The power of negotiation during a scarce talent market</title><link>https://candost.blog/notes/90/</link><guid isPermaLink="true">https://candost.blog/notes/90/</guid><pubDate>Sat, 28 Dec 2024 05:35:01 GMT</pubDate><content:encoded>&lt;p&gt;When talent is scarce in the job market, people can negotiate by telling companies that they have other offers standing. This will help them get a better counteroffer. However, it will work much worse for the hiring manager, as their emotions will be high when getting the person hired, and they might go over budget quickly due to the invested effort (interviews).&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;The same applies to &lt;a href=&quot;/notes/5/&quot;&gt;promotions&lt;/a&gt;. If there is a race for a promotion, people will fight for it more.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/90/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/90/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Authority without vulnerability doesn&apos;t work</title><link>https://candost.blog/notes/33b/</link><guid isPermaLink="true">https://candost.blog/notes/33b/</guid><pubDate>Sat, 28 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Establishing &lt;a href=&quot;/notes/9d/&quot;&gt;authority&lt;/a&gt; with command doesn’t work; it generates resentment. Building authority demands &lt;a href=&quot;/notes/7/&quot;&gt;showing vulnerability&lt;/a&gt;, accepting failure, and building trust. Then, people will follow the authority even more. The same applies to authoritative products (full 5-star ratings are too good to be true).&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;Consistent writing&lt;/a&gt; establishes authority while showing your development.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;An open feedback culture&lt;/a&gt; ensures psychological safety when showing vulnerability.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/69/&quot;&gt;If you don’t see any downsides in someone’s arguments, how can you trust them&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;When we see products with a few negative reviews, we &lt;a href=&quot;/notes/72/&quot;&gt;trust the product&lt;/a&gt; more.&lt;/li&gt;
&lt;li&gt;Know your limitations: &lt;a href=&quot;/notes/7c/&quot;&gt;Information you have doesn’t make you wise&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/33b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/33b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>People follow authority figures</title><link>https://candost.blog/notes/9d/</link><guid isPermaLink="true">https://candost.blog/notes/9d/</guid><pubDate>Sat, 28 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;People follow authority &lt;a href=&quot;/notes/20d/&quot;&gt;without knowing&lt;/a&gt;. The authority doesn’t even have to be an expert in the field. They follow fake authorities, such as an actor with a lab coat playing a doctor role in advertisements, influencing people’s health decisions. People confuse expertise with authority signs. Titles also give clues about authority that make people follow them without considering expertise. I observe this at work, too. People sometimes follow what I’m saying even though I am not an expert in the area—just because I’m a manager.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;Don’t build up an ego&lt;/a&gt; when people follow you even though &lt;a href=&quot;/notes/9/&quot;&gt;you are not an expert&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;Accountability culture ensures&lt;/a&gt; that expertise is separated from authority.&lt;/li&gt;
&lt;li&gt;When someone writes a book about a topic, it doesn’t mean they are right. The book gives them authority; however, &lt;a href=&quot;/notes/69/&quot;&gt;it may not be the reality&lt;/a&gt;—the same &lt;a href=&quot;/notes/69a/&quot;&gt;applies to LLMs&lt;/a&gt;; they are not the authority.&lt;/li&gt;
&lt;li&gt;When listening to investment advice, &lt;a href=&quot;/notes/80/&quot;&gt;be mindful&lt;/a&gt; about who advises you.&lt;/li&gt;
&lt;li&gt;To establish authority, &lt;a href=&quot;/notes/33b/&quot;&gt;some vulnerability has to be visible first&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/9d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/9d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>More followers make the idea correct</title><link>https://candost.blog/notes/20k/</link><guid isPermaLink="true">https://candost.blog/notes/20k/</guid><pubDate>Thu, 26 Dec 2024 15:35:01 GMT</pubDate><content:encoded>&lt;p&gt;Initiators use the social proof principle to make their ideas work, even when the idea is incorrect. Leaders in companies or political parties convince a group of people first about an idea. &lt;a href=&quot;/notes/19f/&quot;&gt;Using that group, they show others that they have support, believers, or what have you&lt;/a&gt;. More people start believing in the idea because they think it’s confirmed by just looking at the amount of supporters. The same principle applies to audience management, like adding laughs to sitcom shows. It convinces us that the show is funny. The same is true in social media: the more followers a person has, the more followers they attract.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;Doing public speaking&lt;/a&gt; works for social proof as it shows that people accept you as a speaker and authority on the topic.&lt;/li&gt;
&lt;li&gt;Especially &lt;a href=&quot;/notes/19f/&quot;&gt;tribal thinking&lt;/a&gt; has a significant impact on this type of influence.&lt;/li&gt;
&lt;li&gt;This influence method can help &lt;a href=&quot;/notes/19c/&quot;&gt;organizations move faster&lt;/a&gt; as the social proof will make people believe an idea (or decision) is correct. However, we need to be careful.&lt;/li&gt;
&lt;li&gt;While &lt;a href=&quot;/notes/77/&quot;&gt;facilitating meetings&lt;/a&gt;, try to find initiators and get their buy-in on the topic you’re facilitating.&lt;/li&gt;
&lt;li&gt;As a leader, try to find the initial supporters of your idea and use them &lt;a href=&quot;/notes/87/&quot;&gt;to create the image&lt;/a&gt; of the right decision when you want to convince people.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20k/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20k/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>We conform to peers&apos; behavior more than others</title><link>https://candost.blog/notes/44g1/</link><guid isPermaLink="true">https://candost.blog/notes/44g1/</guid><pubDate>Thu, 26 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Peer-suasion is &lt;a href=&quot;/notes/20d/&quot;&gt;a strong behavior&lt;/a&gt;. We follow others who are like us. The similarity bonds even further, and people do even more similar things. This is also visible in teenagers; they rebel against their parents but strongly follow the rules in teenage groups. I also observe this as a manager and in my daily life. &lt;a href=&quot;/notes/53/&quot;&gt;When I mention something I’m doing to my direct reports at work&lt;/a&gt;, they are less likely to replicate. However, if &lt;a href=&quot;/notes/23/&quot;&gt;I praise their peers&lt;/a&gt;, they replicate the praised behavior more. I also do the same with my friends. I observe that we &lt;a href=&quot;/notes/20h/&quot;&gt;start using similar phrases or doing similar behaviors&lt;/a&gt; when we’re in the group and bond more if we share the same language. However, knowing the peer-suasion influence, I sometimes deflect using the exact phrases.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Peer-suasion can be an effective strategy to &lt;a href=&quot;/notes/21/&quot;&gt;improve the code review process&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;We can use peer-suasion techniques to &lt;a href=&quot;/notes/33a/&quot;&gt;invest in growing the team at work&lt;/a&gt; (forming groups with similar interests?)&lt;/li&gt;
&lt;li&gt;Finding similarities between people &lt;a href=&quot;/notes/77/&quot;&gt;as a facilitator is the first step&lt;/a&gt; so they establish peer-relations. This can result in higher chances of success for action items taken during the meeting.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44g1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44g1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Defending against social proof and peer-suasion</title><link>https://candost.blog/notes/44g2/</link><guid isPermaLink="true">https://candost.blog/notes/44g2/</guid><pubDate>Thu, 26 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Suppose there is a long queue in front of a restaurant or café, too many product reviews for a product, or many people rushing to buy something, and &lt;a href=&quot;/notes/20d/&quot;&gt;we follow them&lt;/a&gt;. In that case, we need to stop and ask ourselves: “Do I really want that thing, or do I follow these people without thinking? Do I really need that thing, or does the social pressure influence me?” Only when we stop for a moment, look around, and &lt;a href=&quot;/notes/46/&quot;&gt;ask ourselves these questions&lt;/a&gt; can we truly grasp the impact of social proof. When we realize that exploitation exists, we should make it apparent to everyone that their behavior is “engineered.” Likes, shares, reposts, and other social media interactions are the prominent supporters of this phenomenon. Once something goes viral, everyone rushes to buy it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;When &lt;a href=&quot;/notes/8/&quot;&gt;growing in a career&lt;/a&gt;, don’t be fooled by the popularity of the roles (e.g., the popularity of a staff engineer). Evaluate them well.&lt;/li&gt;
&lt;li&gt;Asking these questions will &lt;a href=&quot;/notes/67/&quot;&gt;break the convenience&lt;/a&gt; of following others. However, it’s a must-have to survive without going broke.&lt;/li&gt;
&lt;li&gt;In the stock market, when the price of a stock goes up, everyone rushes to buy it. The more people buy, the more it proves that the price goes up. Until it doesn’t. &lt;a href=&quot;/notes/80/&quot;&gt;Don’t be affected by it&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44g2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44g2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Defending against a person&apos;s likeliness</title><link>https://candost.blog/notes/19g/</link><guid isPermaLink="true">https://candost.blog/notes/19g/</guid><pubDate>Wed, 25 Dec 2024 06:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We need to separate two things to make better decisions: the person who offers us something and the offer itself. Before agreeing with the person (be it a sales manager, &lt;a href=&quot;/notes/20f/&quot;&gt;leader&lt;/a&gt; or friend), we can ask ourselves, “Do I like this person &lt;a href=&quot;/notes/20h/&quot;&gt;more than&lt;/a&gt; I expected?” If yes, we can separate the offer and the person. This separation in mind &lt;a href=&quot;/notes/20d/&quot;&gt;helps uncover the impact&lt;/a&gt; of the likeliness of the person on our decisions. This way, we &lt;a href=&quot;/notes/80/&quot;&gt;protect ourselves from people’s influence&lt;/a&gt; on us.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;When &lt;a href=&quot;/notes/32/&quot;&gt;leaders communicate decisions with you&lt;/a&gt;, think about &lt;a href=&quot;/notes/87/&quot;&gt;how much you like&lt;/a&gt; them to evaluate their decisions fairly.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40/&quot;&gt;The feedback you receive is about you and the other person&lt;/a&gt;. That means how much you like each other (or you like the other person) will weigh the acceptance rate of the received feedback.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19g/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19g/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>You&apos;re weakest when you&apos;re the strongest</title><link>https://candost.blog/notes/7a/</link><guid isPermaLink="true">https://candost.blog/notes/7a/</guid><pubDate>Wed, 25 Dec 2024 06:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Whenever you win a victory or succeed, &lt;a href=&quot;/notes/62a/&quot;&gt;that’s the moment&lt;/a&gt; you’re the most vulnerable. Your feelings of success blind you, and you underestimate luck’s role in your success. &lt;a href=&quot;/notes/5a/&quot;&gt;That’s the moment&lt;/a&gt; you make the biggest mistake. When you win, get yourself together, &lt;a href=&quot;/notes/68/&quot;&gt;reflect on your success&lt;/a&gt;, and draw your strategy. &lt;a href=&quot;/notes/46c/&quot;&gt;What brought you here might not bring you there&lt;/a&gt;. You have to evaluate your rhythm and your emotions. Don’t let your emotions rule you. They make you vulnerable. Be aware of them and control the situation while recognizing your feelings. Your next step should come from your head, not from your heart.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/7a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/7a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Let all emotions out inside you to show vulnerability</title><link>https://candost.blog/notes/3b6a/</link><guid isPermaLink="true">https://candost.blog/notes/3b6a/</guid><pubDate>Sun, 22 Dec 2024 11:21:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/notes/7/&quot;&gt;Vulnerability&lt;/a&gt; is not what you think. You don’t need to communicate every emotion inside. But, inside, you have to &lt;a href=&quot;/notes/52b/&quot;&gt;let all of them out&lt;/a&gt;. &lt;a href=&quot;/notes/46/&quot;&gt;You have to face all of them by yourself&lt;/a&gt;, &lt;a href=&quot;/notes/68a/&quot;&gt;find all your feelings&lt;/a&gt;, &lt;a href=&quot;/notes/46d1/&quot;&gt;acknowledge them&lt;/a&gt;, and name them. You shouldn’t do this outside as it might disturb or annoy others. However, you have to do this one way or another by yourself. Only then you can understand yourself and &lt;a href=&quot;/notes/80/&quot;&gt;make a better decision&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3b6a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3b6a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Metacognition: Thinking about thinking</title><link>https://candost.blog/notes/68a/</link><guid isPermaLink="true">https://candost.blog/notes/68a/</guid><pubDate>Sun, 22 Dec 2024 10:15:00 GMT</pubDate><content:encoded>&lt;p&gt;The craft of leadership and &lt;a href=&quot;/notes/3/&quot;&gt;management&lt;/a&gt; lies in metacognition. Not only leadership but &lt;a href=&quot;/notes/19/&quot;&gt;decision-making&lt;/a&gt; in general. The right decisions will always be tricky, but real progress will come from &lt;a href=&quot;/notes/31d/&quot;&gt;reflecting on how we thought before&lt;/a&gt; and looking for ways to improve. Metacognition, as a concept, means thinking about thinking or above thinking. The &lt;a href=&quot;/notes/7c/&quot;&gt;wisdom&lt;/a&gt;, or knowledge, comes from one’s progress on metacognition. It’s also required in relationships, &lt;a href=&quot;/notes/11/&quot;&gt;higher-level jobs&lt;/a&gt; (as decisions impact much more things), and a person’s self-perception. The best way to advance in metacognition is journaling.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Lead Dev Berlin 2024 Engineering Director AMA&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/68a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/68a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Strong dedication has many doubts behind</title><link>https://candost.blog/notes/46d2/</link><guid isPermaLink="true">https://candost.blog/notes/46d2/</guid><pubDate>Sun, 22 Dec 2024 09:32:00 GMT</pubDate><content:encoded>&lt;p&gt;Whatever we talk about, whatever we preach comes from doubt. We never try to convince others about &lt;a href=&quot;/notes/29a/&quot;&gt;things that will indeed happen&lt;/a&gt;. It’s the things that we have doubts about. We don’t admit that we have doubts when we follow a strong idea almost blindly. We are sure inside ourselves but simultaneously full of doubts. We choose to believe in it. And we follow that doubt till the end.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19f/&quot;&gt;Ethical reasoning and tribal reasoning have strong connections to hiding doubts.&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt;
&lt;blockquote&gt;
&lt;p&gt;“You are never dedicated to something you have complete confidence in. No one is fanatically shouting that the sun is going to rise tomorrow. They know it’s going to rise tomorrow. When people are fanatically dedicated to political or religious faiths or any other kinds of dogmas or goals, it’s always because these dogmas or goals are in doubt.” from “Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values” by Robert M. Pirsig&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46d2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46d2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What is cash flow</title><link>https://candost.blog/notes/88/</link><guid isPermaLink="true">https://candost.blog/notes/88/</guid><pubDate>Sun, 22 Dec 2024 05:35:01 GMT</pubDate><content:encoded>&lt;p&gt;The main difference between a company (or business owner) and employees in terms of cash flow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Employees pay taxes from their income first; then, they pay their expenses.&lt;/li&gt;
&lt;li&gt;Business owners pay expenses first from their income; then, they pay taxes.&lt;/li&gt;
&lt;li&gt;Employees pay the government and everyone else first, while business owners pay themselves first, then the rest.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While learning accounting, finance and &lt;a href=&quot;/notes/80/&quot;&gt;investment&lt;/a&gt;, the biggest eye-opener for me was the above truth. I didn&apos;t notice the difference. Now, I&apos;m looking for ways to pay taxes before I earn money. Real estate, bonds, and stocks are a few ways to do that. I learned that you can deduct the interest rate of your loan from the taxes you pay. If, in Germany, one buys an apartment to rent it to others, the interest rate, the yearly expenses, and deferred value are tax deductible. The exact calculation is a little complicated. There is still a social contribution you pay from your salary.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/88/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/88/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Keep track of your expenses</title><link>https://candost.blog/notes/89/</link><guid isPermaLink="true">https://candost.blog/notes/89/</guid><pubDate>Sun, 22 Dec 2024 05:35:01 GMT</pubDate><content:encoded>&lt;p&gt;The other lesson I &lt;a href=&quot;/notes/80&quot;&gt;learned about financing&lt;/a&gt; is to keep track of your expenses. Once you do, you can see how much you spend, prepare for future payments, and spend the money where you want rather than randomly.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/89/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/89/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Compartmentalize your teams around visions</title><link>https://candost.blog/notes/24b2/</link><guid isPermaLink="true">https://candost.blog/notes/24b2/</guid><pubDate>Sat, 21 Dec 2024 11:35:01 GMT</pubDate><content:encoded>&lt;p&gt;As an engineering director (or manager of managers at any level), you need to &lt;a href=&quot;/notes/56j/&quot;&gt;compartmentalize your teams&lt;/a&gt; around visions. &lt;a href=&quot;/notes/34/&quot;&gt;Ask yourself what your vision for the group is.&lt;/a&gt; As a director, &lt;a href=&quot;/notes/61/&quot;&gt;you don’t have full context&lt;/a&gt; on anything, so &lt;a href=&quot;/notes/9/&quot;&gt;don’t try to gain too deep context&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c/&quot;&gt;Without the vision, nobody will be able to feel ownership.&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/24b2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/24b2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Increase your strategic thinking as an engineering director</title><link>https://candost.blog/notes/16d/</link><guid isPermaLink="true">https://candost.blog/notes/16d/</guid><pubDate>Sat, 21 Dec 2024 05:35:01 GMT</pubDate><content:encoded>&lt;p&gt;As an engineering director, you should reduce your time on operational topics and increase your strategic thinking. Create space on your calendar to see how much time you spend on operational topics, and then reduce it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; Lead Dev Berlin 2024 - Engineering Director AMA&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/16d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/16d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Turning rivalries into teams</title><link>https://candost.blog/notes/20j/</link><guid isPermaLink="true">https://candost.blog/notes/20j/</guid><pubDate>Mon, 16 Dec 2024 15:35:01 GMT</pubDate><content:encoded>&lt;p&gt;When you want people who don’t know or like each other to work well together, &lt;a href=&quot;/notes/24/&quot;&gt;assign them tasks that require cooperation&lt;/a&gt;. These tasks should not be achievable by only one side; they must utilize the skills and knowledge of both parties. Once you identify the perfect task, you’ll notice how both sides begin to appreciate each other—transforming rivalry into teamwork. A successful team or relationship hinges on accomplishing goals together. Likewise, &lt;a href=&quot;/notes/3b/&quot;&gt;when you join a new team&lt;/a&gt;, &lt;a href=&quot;/notes/3b1/&quot;&gt;ask questions&lt;/a&gt;, actively participate and collaborate with the group to foster camaraderie and achieve successful integration.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;When assigning tasks, &lt;a href=&quot;/notes/24b/&quot;&gt;specify goals rather than methods&lt;/a&gt;. &lt;a href=&quot;/notes/34/&quot;&gt;Create clarity&lt;/a&gt;, &lt;a href=&quot;/notes/53/&quot;&gt;guide them&lt;/a&gt; and allow them to determine methods.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20j/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20j/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Creating your image as a leader</title><link>https://candost.blog/notes/87/</link><guid isPermaLink="true">https://candost.blog/notes/87/</guid><pubDate>Mon, 16 Dec 2024 05:35:01 GMT</pubDate><content:encoded>&lt;p&gt;As a leader, your name should be attached to good things so that people will like you and follow you more. Not only good things but good people, too. When presenting or talking with others, be careful with what you are attaching yourself to. If you’re known as the person of bad news or challenging or annoying questions, you won’t go &lt;a href=&quot;/notes/76/&quot;&gt;too far&lt;/a&gt;. Try to find the balance between looking good and staying authentic. &lt;a href=&quot;/notes/6/&quot;&gt;You shouldn’t lose authenticity&lt;/a&gt; or avoid &lt;a href=&quot;/notes/31/&quot;&gt;accountability&lt;/a&gt;. Yet, you also shouldn’t form images in people’s minds about you that are related to negative things or people who don’t have a good reputation.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s)&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b/&quot;&gt;When joining a new team&lt;/a&gt;, be careful with the image you create.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/87/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/87/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Be comfortable with yourself</title><link>https://candost.blog/notes/46h/</link><guid isPermaLink="true">https://candost.blog/notes/46h/</guid><pubDate>Sun, 15 Dec 2024 12:13:00 GMT</pubDate><content:encoded>&lt;p&gt;The more comfortable you are with yourself, the less you need the approval of others.&lt;/p&gt;
&lt;p&gt;If you know yourself and your strengths, weaknesses, and shortcomings, you’ll need less confirmation from outside. It’s a matter of awareness. If you &lt;a href=&quot;/notes/44/&quot;&gt;seek&lt;/a&gt; external confirmation, you have doubts about something in yourself. Find and try to understand them. What makes you doubtful? Is it the imposter syndrome (and a false positive) or lack of knowledge or lack of experience? Once you find the root, you &lt;a href=&quot;/notes/7/&quot;&gt;stop seeking&lt;/a&gt; the approval of others.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://fs.blog/brain-food/may-5-2024/&quot;&gt;Farnam Street Brain Food Newsletter Nr. 575&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46h/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46h/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Transparency ≠ Saying everything</title><link>https://candost.blog/journal/transparency-is-not-sharing-everything/</link><guid isPermaLink="true">https://candost.blog/journal/transparency-is-not-sharing-everything/</guid><pubDate>Sun, 01 Dec 2024 05:56:00 GMT</pubDate><content:encoded>&lt;p&gt;Transparency ≠ Saying everything&lt;/p&gt;
&lt;p&gt;Transparency = Sharing the full context&lt;/p&gt;
&lt;p&gt;Why do many leaders struggle with being transparent?&lt;/p&gt;
&lt;p&gt;They fall short of their egos. They want to make decisions. That&apos;s why they became leaders, right?&lt;/p&gt;
&lt;p&gt;Wrong.&lt;/p&gt;
&lt;p&gt;The leaders&apos; job is to enable the organization to make the best decision fast. How?&lt;/p&gt;
&lt;p&gt;They have to make the context of the work accessible to the people who will need to make a decision. If engineers are designing a solution, they have to have access to all relevant information about the problem they are solving, even the financial and business information.&lt;/p&gt;
&lt;p&gt;Leaders&apos; job is to make ALL the information accessible to their teams even when the organization is not transparent.&lt;/p&gt;
&lt;p&gt;Where do we draw the line and not share information? When it hurts someone&apos;s confidentiality or when the information is irrelevant.&lt;/p&gt;
&lt;p&gt;Information such as organizational restructuring, personal improvement plans, compensation details, etc., can be sensitive. Also, there is no need to overload the team with irrelevant information as it will distract them from what&apos;s important.&lt;/p&gt;
&lt;p&gt;Besides, nobody can get wrong by sharing the full context of the work with their teams.&lt;/p&gt;
&lt;p&gt;Next time you think about transparency, ask yourself, &quot;Does the information I am carrying bring context to the person, or does it create a noise?&quot; If it&apos;s a noise, keep it. If not, share!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/transparency-is-not-sharing-everything/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/transparency-is-not-sharing-everything/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Organizational Communication Index</title><link>https://candost.blog/notes/86/</link><guid isPermaLink="true">https://candost.blog/notes/86/</guid><pubDate>Tue, 26 Nov 2024 05:35:01 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Entries:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Communicating Decisions: &lt;a href=&quot;/notes/32/&quot;&gt;32&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open feedback culture creates resilient organizations: &lt;a href=&quot;/notes/36/&quot;&gt;36&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Coupling system design with organizational communication lines: &lt;a href=&quot;/notes/56b/&quot;&gt;56b&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Collaboration can be harmful if not intended: &lt;a href=&quot;/notes/56g1/&quot;&gt;56g1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Organizations need an RFC process to manage communication around changes: &lt;a href=&quot;/notes/66/&quot;&gt;66&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How to choose RFC audience: &lt;a href=&quot;/notes/66e/&quot;&gt;66e&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/86/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/86/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Organizational (Executive) Leadership Index</title><link>https://candost.blog/notes/84/</link><guid isPermaLink="true">https://candost.blog/notes/84/</guid><pubDate>Sun, 24 Nov 2024 05:35:01 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Entries:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Organizational leaders’ job is to bring clarity to everyone’s work &lt;a href=&quot;/notes/34/&quot;&gt;34&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Continuous improvement means changing the system, not the goal: &lt;a href=&quot;/notes/1h/&quot;&gt;1h&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Open culture requires listening to people and addressing their concerns &lt;a href=&quot;/notes/54/&quot;&gt;54&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;If leaders don’t care about the culture, they will get a culture they don’t want: &lt;a href=&quot;/notes/54b/&quot;&gt;54b&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;On how to create your image on others as a leader: &lt;a href=&quot;/notes/87/&quot;&gt;87&lt;/a&gt;; &lt;a href=&quot;/notes/20g/&quot;&gt;20g&lt;/a&gt;; &lt;a href=&quot;/notes/87a&quot;&gt;87a&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;On the time management of director-level managers: &lt;a href=&quot;/notes/16d/&quot;&gt;16d&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Why do startups fail? &lt;a href=&quot;/notes/84a/&quot;&gt;84a&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;How to create a tech strategy? &lt;a href=&quot;/notes/84b/&quot;&gt;84b&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Tools for managing managers: &lt;a href=&quot;/notes/76a/&quot;&gt;76a&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Learning from incidents: &lt;a href=&quot;/notes/99/&quot;&gt;99&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Related Indexes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Organization Design Index: &lt;a href=&quot;/notes/85/&quot;&gt;85&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Organizational Communication Index: &lt;a href=&quot;/notes/86/&quot;&gt;86&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;System Design Index: &lt;a href=&quot;/notes/48/&quot;&gt;48&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Continuation sub-sections:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_collaboration-methods/&quot;&gt;#collaboration-methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_engineering-metrics/&quot;&gt;#engineering-metrics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_how-to-create-a-strategy/&quot;&gt;#how-to-create-a-strategy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_how-to-evaluate-team-performance/&quot;&gt;#how-to-evaluate-team-performance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_how-to-grow/&quot;&gt;#how-to-grow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_how-to-manage-organizational-changes/&quot;&gt;#how-to-manage-organizational-changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_increasing-productivity/&quot;&gt;#increasing-productivity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_organizational-transparency/&quot;&gt;#organizational-transparency&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_organizational-values/&quot;&gt;#organizational-values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_team-structures/&quot;&gt;#team-structures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/tags/organizational-leadership_team-topologies/&quot;&gt;#team-topologies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/84/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/84/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Organizational Design Index</title><link>https://candost.blog/notes/85/</link><guid isPermaLink="true">https://candost.blog/notes/85/</guid><pubDate>Sun, 24 Nov 2024 05:35:01 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Entries:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Goals to set a direction and systems to find clues that distract from the goal. &lt;a href=&quot;/notes/37/&quot;&gt;37&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Structuring teams: &lt;a href=&quot;/notes/56/&quot;&gt;56&lt;/a&gt;; &lt;a href=&quot;/notes/56c/&quot;&gt;56c&lt;/a&gt;; &lt;a href=&quot;/notes/56l/&quot;&gt;56l&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Communicating organizational changes: &lt;a href=&quot;/notes/32b/&quot;&gt;32b&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/85/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/85/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Understand what you can change</title><link>https://candost.blog/notes/46g/</link><guid isPermaLink="true">https://candost.blog/notes/46g/</guid><pubDate>Fri, 22 Nov 2024 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/images/content/notes/circles_of_influence.png&quot; alt=&quot;Circles of Influence&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the circle of concern, there are many things over which you have no influence or control, such as economic changes, industry shifts, etc. This is the biggest group.&lt;/p&gt;
&lt;p&gt;In the circle of influence, you can work with others like your peers and influence direction. You still don’t get the result by doing things in the way you need or want, but you can influence them.&lt;/p&gt;
&lt;p&gt;In the circle of control, you have things like how you communicate your thoughts, &lt;a href=&quot;/notes/44/&quot;&gt;think about things and perceive them&lt;/a&gt;. They are all within your control.&lt;/p&gt;
&lt;p&gt;Many people think they can influence their circle of concern. Almost everyone worries about any changes in the outer circle. However, there is not much they can do!&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;In career growth, focus on what you can do with your control. Titles are part of outer circles&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/11/&quot;&gt;If you seek promotion, you&apos;re in other people&apos;s influence circle&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;When you focus on influencing others, choose a good strategy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/63/&quot;&gt;If you want to learn how others move their focus to their circle of control, look at Wangari Maathai&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; LeadDev Berlin Conference 2024&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46g/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46g/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to build a coaching mindset</title><link>https://candost.blog/notes/83/</link><guid isPermaLink="true">https://candost.blog/notes/83/</guid><pubDate>Fri, 22 Nov 2024 05:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;You’re the torch as a coach that’s been used by a person in a cave. You’re not taking the journey by yourself; you’re there to light up the way for the other person.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Coaching is not about giving advice directly. It’s about &lt;a href=&quot;/notes/3/&quot;&gt;taking the person through a journey&lt;/a&gt; and &lt;a href=&quot;/notes/6/&quot;&gt;showing them the way&lt;/a&gt;. You’re not there to teach them a topic. You’re there to notice what the person does, &lt;a href=&quot;/notes/68/&quot;&gt;ask questions&lt;/a&gt;, and &lt;a href=&quot;/notes/33a/&quot;&gt;give them a space&lt;/a&gt; to figure things out on their own.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/76/&quot;&gt;Especially when becoming a CTO&lt;/a&gt;, your job evolves to coaching more than direct commanding.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/83/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/83/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Techniques for coaching</title><link>https://candost.blog/notes/83a/</link><guid isPermaLink="true">https://candost.blog/notes/83a/</guid><pubDate>Fri, 22 Nov 2024 05:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;Give three Mississippi pauses before talking or asking another question.&lt;/li&gt;
&lt;li&gt;Use “I noticed…” and be a mirror to the person.&lt;/li&gt;
&lt;li&gt;In the end, ask, “What’s your key takeaway here?” and ask what they will do when they will do it and how to ensure they have done it.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/9/&quot;&gt;9: Growing does not always mean being an expert&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44g/&quot;&gt;44g: Persuading others requires accepting their arguments and building empathy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53d/&quot;&gt;53d: Listen with attention and ask questions with curiosity to encourage others to be open&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/68/&quot;&gt;68: Thinking Retrospectively Helps to Correct The Course&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/83a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/83a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Giving feedback with a coaching mindset</title><link>https://candost.blog/notes/23i/</link><guid isPermaLink="true">https://candost.blog/notes/23i/</guid><pubDate>Fri, 22 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Take the first step to share feedback. &lt;a href=&quot;/notes/30d1/&quot;&gt;The rule of reciprocation&lt;/a&gt; can play a big role when you want to get feedback, too. Especially for the positive feedback, take the extra time to provide it in the most visible way. This favor will get its return when you need feedback, too. While the other person thanks for the feedback, don’t just discard it by saying, “You’re welcome” or “No problem at all,” use the opportunity to enforce the rule of reciprocation by saying, “If our positions are reversed, I’m sure you’d do the same.”
When &lt;a href=&quot;/notes/21/&quot;&gt;giving feedback&lt;/a&gt; to direct reports or mentees, &lt;a href=&quot;/notes/6/&quot;&gt;ask&lt;/a&gt; what they could have done differently in a given situation. Ask them about &lt;a href=&quot;/notes/33a/&quot;&gt;what they learned&lt;/a&gt; instead of starting with giving feedback.&lt;/p&gt;
&lt;p&gt;This will allow them to think independently before receiving any suggestions and will help them learn more than they would when hearing someone else’s feedback.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23i/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23i/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Improving Team Performance</title><link>https://candost.blog/notes/81/</link><guid isPermaLink="true">https://candost.blog/notes/81/</guid><pubDate>Fri, 22 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/notes/78/&quot;&gt;According to&lt;/a&gt; the DORA 2024 Report:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Organizations that prioritize the end-user experience produce higher quality products, with developers who are more productive, satisfied, and less likely to experience burnout.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;/notes/42/&quot;&gt;User centricity&lt;/a&gt; increases productivity, job satisfaction, team performance, and product performance while reducing burnout.
Teams that understand users&apos; needs gain fulfillment and job satisfaction when they solve user problems. In the survey, respondents explained what keeps them motivated and satisfied at their jobs. Answers show that helping users or others and knowing the solution they produce will solve someone&apos;s problem improves motivation and satisfaction, resulting in higher team performance.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;Management craft&lt;/a&gt; requires understanding where to invest time/energy.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;Defining quality goals&lt;/a&gt; with a user-centric mindset can help improve performance even further.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;While structuring teams&lt;/a&gt;, it&apos;s crucial to adopt a user-first mindset in all types of teams, including &lt;a href=&quot;/notes/56d4/&quot;&gt;platform&lt;/a&gt; and &lt;a href=&quot;/notes/56d1/&quot;&gt;stream-aligned teams&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4/&quot;&gt;While monitoring the work of the team&lt;/a&gt; on various levels, don&apos;t forget to include the user-centric mindset.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; 2024 Final DORA Report&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/81/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/81/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Measuring Engineering Productivity</title><link>https://candost.blog/notes/82/</link><guid isPermaLink="true">https://candost.blog/notes/82/</guid><pubDate>Fri, 22 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As an engineering leader, your job is to convince the business to invest in increasing developer productivity. This investment often needs time to bring returns, and you have to make it clear to the business. Start by aligning the business before talking about productivity. Bring problems to business according to business plans. Find out what’s essential for you and what your expectations are from metrics (e.g., DORA). Having productivity metrics doesn’t work on their own. You have to set expectations with the teams right and align with the business on these expectations, too. In the end, engineering leadership is not about shipping code; it’s helping the company win by shipping code. Focus on how you can help the company win.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;Management craft&lt;/a&gt; requires understanding where to invest time/energy.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;Defining quality goals&lt;/a&gt; with a user-centric mindset can help improve performance even further.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;While structuring teams&lt;/a&gt;, it&apos;s crucial to adopt a user-first mindset in all types of teams, including &lt;a href=&quot;/notes/56d4/&quot;&gt;platform&lt;/a&gt; and &lt;a href=&quot;/notes/56d1/&quot;&gt;stream-aligned teams&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4/&quot;&gt;While monitoring the work of the team&lt;/a&gt; on various levels, don&apos;t forget to include the user-centric mindset.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; 2024 Final DORA Report&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/82/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/82/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>LLMs = Ignorance</title><link>https://candost.blog/notes/69a/</link><guid isPermaLink="true">https://candost.blog/notes/69a/</guid><pubDate>Wed, 20 Nov 2024 16:23:33 GMT</pubDate><content:encoded>&lt;p&gt;The TV and search engines &lt;a href=&quot;/notes/68/&quot;&gt;made&lt;/a&gt; people think less. They killed &lt;a href=&quot;/notes/30/&quot;&gt;intellectual curiosity&lt;/a&gt;. Constant access to information that nobody needs pushes people away from &lt;a href=&quot;/notes/65/&quot;&gt;fulfilling their curiosity by research&lt;/a&gt;. LLM took this to another level. People trusting AI, the closed and opaque box, is &lt;a href=&quot;/notes/63/&quot;&gt;breaking society apart&lt;/a&gt; by &lt;a href=&quot;/notes/38/&quot;&gt;making people ignorant&lt;/a&gt;. People don&apos;t &lt;a href=&quot;/notes/64/&quot;&gt;validate the information&lt;/a&gt; and follow it. They &lt;a href=&quot;/notes/73/&quot;&gt;form opinions without correct information&lt;/a&gt;. LLM is revolutionary, and there is nothing that will stop it until it&apos;s too late. We should adopt LLM into our lives for sure. But should we trust? &lt;a href=&quot;/notes/67/&quot;&gt;Hell, no&lt;/a&gt;!&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thoughts after the Keynote talk in CTO Craft Con: Berlin 2024: Keynote — The Role of AI in Shaping Future Workplaces&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/69a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/69a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>LLM shouldn&apos;t be used for learning</title><link>https://candost.blog/notes/73a/</link><guid isPermaLink="true">https://candost.blog/notes/73a/</guid><pubDate>Wed, 20 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TV changed the world in a way we can’t imagine. In the long term, we can see how much people trust what they see on TV. It became a single source of information for many as it changed &lt;a href=&quot;/notes/27/&quot;&gt;people&apos;s habits&lt;/a&gt;. The Internet did the same. It took decades, but it steadily got its place to provide information. LLM is the next but the most problematic one. With each invention, people lost intellectuality. They trust whatever they see. The difference between LLM and the other two is that LLM is not able &lt;a href=&quot;/notes/30/&quot;&gt;to know the source of truth&lt;/a&gt;. There is no way to validate the truth of output. That’s why it can’t be used in &lt;a href=&quot;/notes/65/&quot;&gt;learning&lt;/a&gt;. You have to &lt;a href=&quot;/notes/69/&quot;&gt;stay skeptical and research to validate&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thoughts after the Keynote talk in CTO Craft Con: Berlin 2024: Keynote – The Role of AI in Shaping Future Workplaces&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/73a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/73a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On Job Promotions—Learn The Rules</title><link>https://candost.blog/learn-the-rules-of-promotions/</link><guid isPermaLink="true">https://candost.blog/learn-the-rules-of-promotions/</guid><description>Learn the promotion cases holistically. Once you know the rules of the game, you know how to play and win.</description><pubDate>Tue, 19 Nov 2024 06:10:00 GMT</pubDate><content:encoded>&lt;p&gt;Once in a while, I see someone struggling to get a promotion at work. They are frustrated and can’t figure out why they haven’t got the promotion. Questions like, “Why does it take too long? Why are they not promoting me even though I’m doing the job already?” fly in their heads. I was in that same situation before. Then, I moved to the side of “helping people get promotions” and learned a few things that helped me guide others and focus on the right things for my promotion.&lt;/p&gt;
&lt;p&gt;I looked at the promotion cases holistically and brainstormed with a lot of managers. I learned a lot about how promotions work and how they are structured inside managers’ heads. Although some practicalities are different from organization to organization, the underlying motives are often the same.&lt;/p&gt;
&lt;p&gt;Promotions are a lot of work, even just to get the process started. Showing the right skills, convincing people, presenting a case, or simply being in the right place at the right time takes a lot of energy.&lt;/p&gt;
&lt;p&gt;Many people get sucked into the “I want promotion” mindset too much. If they can’t get it quickly, they start looking for another job and leave when their chances for promotion are the highest.&lt;/p&gt;
&lt;p&gt;Some fall into the sunk cost fallacy and believe that if they stay a bit longer, they will be promoted, while their chances are very slim due to a lack of skills.&lt;/p&gt;
&lt;p&gt;How we find the right track without falling into either edge is what matters. We&apos;ll learn the contributing factors for the promotions and find a way around them. But before we dive in, we need to talk about the most important thing first.&lt;/p&gt;
&lt;h3&gt;Money &amp;amp; Privileges&lt;/h3&gt;
&lt;p&gt;Promotion usually brings money. I say &lt;em&gt;usually&lt;/em&gt; because it’s not always the case. I’ve seen people who were happy to be promoted without any compensation change.&lt;/p&gt;
&lt;p&gt;If you need money and it’s the only reason you want the promotion or the title, it is wonderful. &lt;strong&gt;You know&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;why&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;you want it, unlike many people.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Also, whatever I wrote below will assume that you’re in a privileged position—money is not your main motivation driver. Even if that&apos;s the case, you can still get a holistic picture of promotions.&lt;/p&gt;
&lt;p&gt;It’s good to get extra money in the pocket, but we must understand the trade-off. You get extra money, but what for?&lt;/p&gt;
&lt;h3&gt;Why The Title Matters&lt;/h3&gt;
&lt;p&gt;A title is proof that you &lt;em&gt;earned&lt;/em&gt; it and have specific responsibilities. It doesn’t give details of those responsibilities when someone looks at your CV, but it gives an idea.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A title helps you pass the first stages of the interviewing process when you are looking for a new job.&lt;/strong&gt; If you&apos;re looking for an engineering manager role and have never had the title, your chances are lower compared to someone who has had it for a while. Yet, it doesn’t solely prove that you have all the needed skills; interviewing stages are there to examine your proficiency in the role.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A title helps establish your position in the company.&lt;/strong&gt; You may have already been doing the job, but the title &lt;em&gt;acknowledges&lt;/em&gt; it. It gives you a degree of power.&lt;/p&gt;
&lt;p&gt;Yet, businesses don’t give money or title if they have no return on investment. Understanding that return is crucial to set expectations right.&lt;/p&gt;
&lt;h3&gt;The Value for The Organization—Why should the org promote you?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;There must be a business need for any promotion to happen&lt;/strong&gt;, whether we like it or not. Reasons can range from keeping a valuable employee happy with a promotion to assigning an interim CTO to prevent an engineering organization from falling apart.&lt;/p&gt;
&lt;p&gt;A lot of promotions come from someone leaving a job and the organization refilling the position internally. It’s the case when your boss leaves the organization, and you step up. It’s a common promotion method because &lt;a href=&quot;https://knowledge.wharton.upenn.edu/article/why-external-hires-get-paid-more-and-perform-worse-than-internal-staff/&quot;&gt;internal promotions are cheaper and more effective compared to external hires&lt;/a&gt;, and employee satisfaction increases due to investment in in-house talent.&lt;/p&gt;
&lt;p&gt;Internal promotions don&apos;t always succeed. &lt;strong&gt;When the promotion goes to the person who doesn’t want it and doesn’t have enough skills, promotions become detrimental.&lt;/strong&gt; A lot of managers were pushed to the role because somebody had to do the work. Organizations, often without realizing it, end up with the worst-case scenario: an unskilled person doing a job they don’t want. However, if there is already someone willing to become a manager and is already working on improving skills, the opportunity becomes a gold match.&lt;/p&gt;
&lt;p&gt;Another promotion type comes from organizational restructuring. Restructuring is costly to the organization and often has frustrating moments for many people affected. However, it’s also good for some people to change their focus and learn something new. A good example is doing the reverse of what we said above. Moving an unhappy manager to an individual contributor role in which they can be happier and more successful. The organization gains a lot of value by putting the talent into a good place—improving individual’s &lt;em&gt;and&lt;/em&gt; the organization’s performance. Restructuring can bring a lot of opportunities for change, forcing people to move out of their comfort zones.&lt;/p&gt;
&lt;p&gt;Also, many organizations have people they cannot afford (or don&apos;t want) to lose. That person can leverage the situation &lt;em&gt;rightfully&lt;/em&gt; (this might not look ethical, but it’s the reality). As the employee-employer relationship is based on a contract, they have negotiation power and &lt;em&gt;the right to negotiate&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;If an organization has one person they can’t afford to lose, the failure is on the leadership, and they have to pay the price. Why didn’t the organization work toward spreading the knowledge or responsibilities in time? It’s a difficult question for many organizations. If you see someone getting a promotion because of this case instead of you, don’t dwell on it too much. Try pushing your organization to change the situation. And if you’re in the leveraged position, use it wisely!&lt;/p&gt;
&lt;p&gt;There are many other cases in which organizations promote people, but the main idea is that there has to be a good return on investment for the business. Either keeping a valuable employee, reducing the organizational complexity, or improving individuals’ performance.&lt;/p&gt;
&lt;p&gt;If you’re looking for a promotion, &lt;strong&gt;look for how you can increase your value to the organization: impact is key here&lt;/strong&gt;. &lt;em&gt;The more impactful you are, the more value you bring.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;After you understand the organizational value, you can assess if it’s something you’d like to provide.&lt;/p&gt;
&lt;h3&gt;The Value for You—Your Return on Investment&lt;/h3&gt;
&lt;p&gt;When an organization requires you to take on more responsibilities, ask yourself, &lt;strong&gt;do&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;you&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;want to take on them?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Many people want the money but not the responsibility. Some people want the responsibility and don’t need the money. Everyone’s motivation is different. Look at yourself to figure out why you want a promotion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don’t hang up on the title too much. Look at the package underneath.&lt;/strong&gt; Know what you’ll get with the title. A lot of people act quickly and accept promotions without thinking enough.&lt;/p&gt;
&lt;p&gt;A good example is the old CEO of General Electric, John Flannery, who lasted only fourteen months in the CEO role after working at GE for 30 years. He probably couldn’t evaluate what he was getting himself into when he stepped into the CEO role.&lt;/p&gt;
&lt;p&gt;Many first-time engineering managers try to go back to being individual contributors because they don’t know that it is a different role. &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;They think that they can continue what they have done so far.&lt;/a&gt; There is nothing wrong with becoming an individual contributor again, but it’s a sign that the consideration wasn’t thorough, or there was no chance to practice without the title.&lt;/p&gt;
&lt;p&gt;Promotions almost always mean extra responsibility or higher expectations. Know what will be expected from you. &lt;strong&gt;Ask about the responsibilities, challenges, and disaster scenarios explicitly.&lt;/strong&gt; Learn as much as you can. If it’s not something for you, then you don’t need to stress over chasing it.&lt;/p&gt;
&lt;p&gt;Let’s say you knew why you wanted it and what you would get with the promotion, but your promotion was rejected. Now what?&lt;/p&gt;
&lt;h3&gt;Promotion Rejected? Good!&lt;/h3&gt;
&lt;p&gt;It’s natural to be disappointed when you want something and don’t get it. However, you can change your perceptions about promotions. &lt;strong&gt;If your promotion is rejected, try to understand why.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Is it because the organization doesn’t need someone in that role? Or is the budget tight? Maybe it is because you don’t have enough experience?&lt;/p&gt;
&lt;p&gt;If the case is rejected because you don’t have the skills or experience, it’s an excellent opportunity to &lt;a href=&quot;/maximizing-personal-growth-by-understanding/&quot;&gt;keep the learnings while discarding the responsibility&lt;/a&gt;. Ask your manager to learn what exactly is missing. Then, you can work toward closing that gap.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If the case is rejected because of other reasons you can’t change, don’t get sucked into sunk cost.&lt;/strong&gt; Yes, you invested a lot of time and energy, but life is short. If you don’t feel valued and you see that the situation won&apos;t change, &lt;a href=&quot;/learnings-on-dealing-with-ambiguity/&quot;&gt;make up your mind&lt;/a&gt; and say, “Thank you and goodbye.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Even if you leave, keep the growth mindset. Learn, learn, and learn again.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you look for career opportunities, don’t only focus on titles or promotions. &lt;strong&gt;Look for what you can learn and what problems you can solve, even if that means you jump on something you have no idea about.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/journal/your-job-title-depends-on-the-organization/&quot;&gt;Get used to being a junior and senior again and again.&lt;/a&gt; &lt;strong&gt;Being a junior is excellent.&lt;/strong&gt; Constantly seek out being the least knowledgeable person in the group. You will learn something you didn’t know every day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When you start applying what you have learned to solve the problems organizations face, promotion will come eventually.&lt;/strong&gt; Of course, always ask for it, but &lt;a href=&quot;/goals-and-existence/&quot;&gt;don’t get too attached to it&lt;/a&gt; when you can’t get it.&lt;/p&gt;
&lt;p&gt;Actual career growth happens when you solve problems, gain experiences, and build stories, not when a few words are written under your name.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/learn-the-rules-of-promotions/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/learn-the-rules-of-promotions/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why do you micromanage?</title><link>https://candost.blog/notes/3b1a/</link><guid isPermaLink="true">https://candost.blog/notes/3b1a/</guid><pubDate>Sun, 17 Nov 2024 06:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A manager may micromanage a subordinate because they most probably don’t trust the person or they have &lt;a href=&quot;/notes/4/&quot;&gt;control&lt;/a&gt; issues (which also relate to trust).&lt;/p&gt;
&lt;p&gt;The manager doesn’t believe that the task will be done right or in the way that they would do it to high standards. Many managers feel that they are responsible for the work their subordinates do; they often confuse responsibility and accountability. They are accountable for the job. However, they are not responsible. With high trust, the manager can leave the job to the subordinate without micromanaging them.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3b1a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3b1a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Audit your team in three pillars</title><link>https://candost.blog/notes/3b7/</link><guid isPermaLink="true">https://candost.blog/notes/3b7/</guid><pubDate>Mon, 11 Nov 2024 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you join a new team, focus on three aspects to understand its state. Audit to learn what’s right and what’s wrong.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Process&lt;/li&gt;
&lt;li&gt;Technology&lt;/li&gt;
&lt;li&gt;People&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For each, try to analyze what you can change or influence and understand what you can’t change but are concerned about.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4/&quot;&gt;Don&apos;t fall into monitoring people when you audit&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;The result should be aimed at bringing clarity&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;Once you audit, set goals and revise processes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;Guiding is not always giving directions. Choose a good strategy to influence people&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;If you decide to do a re-org, don&apos;t focus on the org-chart. Instead, focus on the work streams and communication lines&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3b7/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3b7/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Compliments increase likeness</title><link>https://candost.blog/notes/20i/</link><guid isPermaLink="true">https://candost.blog/notes/20i/</guid><pubDate>Sun, 10 Nov 2024 15:35:01 GMT</pubDate><content:encoded>&lt;p&gt;If you would like to improve your relationship with someone, compliment them on their good traits. Your compliment will open the doors for someone to like you. The compliment doesn’t even have to be true.
But be careful when you give compliment to your boss. Try to do it via third person, like sharing your compliment with their assistant if they have one. On the other hand, when you receive a compliment, be aware of your bias toward liking the person and favouring them.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4e/&quot;&gt;4e: Compliment to improve occasional good behavior&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/13/&quot;&gt;13: Be Kind at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/72/&quot;&gt;72: Increasing Sales Through Human Psychology&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20i/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20i/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How being liked helps you to get your job done</title><link>https://candost.blog/notes/20f/</link><guid isPermaLink="true">https://candost.blog/notes/20f/</guid><pubDate>Sun, 10 Nov 2024 15:25:01 GMT</pubDate><content:encoded>&lt;p&gt;While working as a leader, you have better chances to get compliance when people genuinely like you. Work toward offering your team and stakeholders fair judgment and being liked. Your stakeholders will especially try to go the extra mile to help you if they like you. Establishing this likeness early on will help you influence their decisions. I used to see this as bad politics in organizations; however, it’s human instinct. You need to learn how to play this diplomacy. You need to convert your target audience to supporters of your approach and ideas. For that, you start with creating a profile of being liked.
The same is true of your team as a leader. The more liked you are, the more they will go the extra mile to comply with your direction.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/13/&quot;&gt;13: Be Kind at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19f/&quot;&gt;19f: Approaches to Decision-Making Styles&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44g/&quot;&gt;44g: Persuading others requires accepting their arguments and building empathy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44h/&quot;&gt;44h: Present humility and ask questions to persuade others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/72/&quot;&gt;72: Increasing Sales Through Human Psychology&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Increase your physical attractiveness</title><link>https://candost.blog/notes/20g/</link><guid isPermaLink="true">https://candost.blog/notes/20g/</guid><pubDate>Sun, 10 Nov 2024 15:25:01 GMT</pubDate><content:encoded>&lt;p&gt;Increase your physical attractiveness when you work. People give more social advantages to the physically attractive. You should not only dress nicely but also take care of yourself. Exercise to stay in shape and take care of yourself. In your organization, you may not be required to dress nicely; people may go to work in their pajamas, but just being more chic brings you social advantage.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/11/&quot;&gt;11: How to move to the next level&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;17: Public Speaking and Improving Skills&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20g/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20g/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Find similarities to increase likeness</title><link>https://candost.blog/notes/20h/</link><guid isPermaLink="true">https://candost.blog/notes/20h/</guid><pubDate>Sun, 10 Nov 2024 15:25:01 GMT</pubDate><content:encoded>&lt;p&gt;Similarities create comfort; we like people who are similar to us. When someone we admire and consider, as they know everything, says, “I don’t know,” it creates a familiarity, showing that they are like us; they don’t know.&lt;/p&gt;
&lt;p&gt;Creating familiarity and similarity brings people closer to you. Regardless of where and how you use this, you can turn this into an advantage. For example, when you present a topic in public, you can interact with someone known to the audience to increase their attentiveness.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17i/&quot;&gt;17i: How to Understand The Public Talk Feedback You Get&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;56: Structuring Teams in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/72/&quot;&gt;72: Increasing Sales Through Human Psychology&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/75/&quot;&gt;75: Understanding Ex-pat life and discrimination&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20h/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20h/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Compliment to improve occasional good behavior</title><link>https://candost.blog/notes/4e/</link><guid isPermaLink="true">https://candost.blog/notes/4e/</guid><pubDate>Sun, 10 Nov 2024 15:25:01 GMT</pubDate><content:encoded>&lt;p&gt;When someone gets compliment on something they are doing good, they try to perfect it. For example, if an engineer writing a good Pull Request description 80% of the time, compliment on how they care about doing these things that bring clarity and thank them. You’ll see that they will start doing it 100% of the time. Compliments help perfect someone’s occasionally good behavior. A small tip: don’t compliment on the behavior, but on the trait. Be genuine and find compliments the person will live up to. Don’t exploit it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4/&quot;&gt;4: Monitoring Work of Direct Reports&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20d/&quot;&gt;20d: Click and Run&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20h/&quot;&gt;20h: Find similarities to increase likeness&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21a/&quot;&gt;21a: Why should we do a code review?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21b/&quot;&gt;21b: Four stages of the best code review process&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23b1/&quot;&gt;23b1: Be careful with obnoxious aggression&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23c/&quot;&gt;23c: How to give positive feedback?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;/notes/23h/&quot;&gt;23h: Feedback is mutual&lt;/a&gt;​&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44g/&quot;&gt;44g: Persuading others requires accepting their arguments and building empathy&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/4e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/4e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What affects your investment decision</title><link>https://candost.blog/notes/80/</link><guid isPermaLink="true">https://candost.blog/notes/80/</guid><pubDate>Sun, 10 Nov 2024 15:25:01 GMT</pubDate><content:encoded>&lt;p&gt;When making an investment decision, &lt;a href=&quot;/notes/68a/&quot;&gt;try&lt;/a&gt; to understand why. Do you like someone working there? Do you like the leadership or the culture of the company? Maybe someone famous you like recommended the business? Do you know someone working there? If your friend is working there, you have a higher chance of liking a business. If your friend invested in a business, you are more likely to invest as well. It’s okay to invest in a company you like; you only need to know so you can make a better call.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/72/&quot;&gt;72: Increasing Sales Through Human Psychology&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/80/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/80/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Build a product mindset in engineers</title><link>https://candost.blog/journal/missing-product-engineering-partnership/</link><guid isPermaLink="true">https://candost.blog/journal/missing-product-engineering-partnership/</guid><pubDate>Fri, 01 Nov 2024 09:18:47 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“It’s the product manager’s job to write Jira tickets.”&lt;/p&gt;
&lt;p&gt;“I need to get full requirements before starting the implementation.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What’s missing here?&lt;/p&gt;
&lt;p&gt;It’s the partnership between engineering and product—a lack of product mindset and learning culture.&lt;/p&gt;
&lt;p&gt;Engineers often don’t feel responsible for the product they are building. They focus on making the codebase healthy, using the new technology, or bringing a well-defined Jira ticket from “To Do” to “Done.”&lt;/p&gt;
&lt;p&gt;They can’t see the forest for the trees, not because they are stupid, but because there is no incentive for them to look at the forest. They think it’s the product manager’s job to see the forest for them.&lt;/p&gt;
&lt;p&gt;How do we change this situation?&lt;/p&gt;
&lt;p&gt;The organization needs to set expectations and incentives correctly, take time to train engineers on product mindset and increase the level of transparency at every level.&lt;/p&gt;
&lt;p&gt;Instead of putting all responsibility on one person to “manage” the product, the organization must invest in building a product mindset and learning muscles in engineers. Expecting engineers to learn by themselves can’t go beyond wishful thinking. As Kevin Scott once said, “Engineers’ job is not to ship code. It’s to help the company win.”&lt;/p&gt;
&lt;p&gt;The organization has to increase transparency to help engineers understand the why, the context, and the background of what they are building. If the information is unavailable, they have no place to learn from. How can they help the company win without knowing why the company needs to win?&lt;/p&gt;
&lt;p&gt;Then, the organization needs to “force” engineers to get to know the users they are building the product for. Having workshops, taking the time in each project to walkthrough user journeys, and showing the complete picture (forest) guides engineers in their learning journey.&lt;/p&gt;
&lt;p&gt;After that, engineers can (and should) refine the ambiguous tasks themselves and even create new tasks with ideas.&lt;/p&gt;
&lt;p&gt;You might say, “Who will do all of these?” and that person, in my opinion, is the Product Manager. They have to understand the users, create a vision for the product, and elevate everyone to know the product and its users.&lt;/p&gt;
&lt;p&gt;Give an engineer a fully defined Jira ticket; you get your job done in a day. Teach an engineer how to understand the user, extract requirements, and write a Jira ticket; they get the job done without you for a lifetime.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/missing-product-engineering-partnership/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/missing-product-engineering-partnership/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Understanding Ex-pat life and discrimination</title><link>https://candost.blog/notes/75/</link><guid isPermaLink="true">https://candost.blog/notes/75/</guid><pubDate>Sun, 27 Oct 2024 15:57:08 GMT</pubDate><content:encoded>&lt;h2&gt;Going backwards in discrimination&lt;/h2&gt;
&lt;p&gt;Discrimination is hidden in seemingly small, invisible daily interactions. A short police control in an international airport, a small chat in a government office, a brief look of a local in the public transport. I know that it’s natural to have these uncontrolled moments. We tend to identify foreigners or outsiders. This mechanism was built over thousands of years; it helped the human race to survive. And the modern world is going against all our habitual patterns and tells us not to identify others as foreigners. That’s the root of our struggles as a community and species. We have to change much quicker than the evolutionary speed—thousands of times quicker.&lt;/p&gt;
&lt;p&gt;Yet, it looks like we’re not only changing towards a better or bright future but going backward and getting beaten up by primal instincts. Everywhere, the right extremists are gaining power these days.&lt;/p&gt;
&lt;p&gt;This is not the first time this has happened in history. We only see when we look holistically. Every few hundred years, history repeats a bit differently each time (that’s what makes it interesting, too). However, the underlying approach or events are the same.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/75/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/75/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Becoming a CTO</title><link>https://candost.blog/notes/76/</link><guid isPermaLink="true">https://candost.blog/notes/76/</guid><pubDate>Sun, 27 Oct 2024 15:57:08 GMT</pubDate><content:encoded>&lt;p&gt;In recent years (2021-2024), the CTO role expanded from mostly operations to a business-driven approach.&lt;/p&gt;
&lt;p&gt;CTOs are now expected to know how to run a business, including &lt;a href=&quot;/notes/88/&quot;&gt;finance&lt;/a&gt;, product management and strategy, and people transformation.&lt;/p&gt;
&lt;p&gt;The most significant impact of this change requires CTOs to do more on people transformation, structure and roles, managing and skilling up talent, hiring, and transforming processes.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;As a CTO, you need to be &lt;a href=&quot;/notes/29a1/&quot;&gt;an enabler of growth and innovation&lt;/a&gt;, especially if your organization operates in a highly competitive market.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; CTO Craft Con 2024 Berlin, &lt;a href=&quot;https://conference.ctocraft.com/berlin-2024/speaker/fusun-wehrmann/&quot;&gt;Füsun Wehrmann - CTO InPost&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/76/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/76/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Meeting Facilitation Techniques</title><link>https://candost.blog/notes/77/</link><guid isPermaLink="true">https://candost.blog/notes/77/</guid><pubDate>Sun, 27 Oct 2024 15:57:08 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Connection before content!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As a meeting facilitator, your first job is connecting people before presenting any content. Focus on ice breakers at first. Connect people to each other as deep as possible.&lt;/p&gt;
&lt;p&gt;Connection works best when people are face-to-face. If you’re hosting a workshop, use card games like &lt;a href=&quot;https://www.jankeck.com/product/adq-single/&quot;&gt;Ask Deep Questions&lt;/a&gt; or &lt;a href=&quot;https://weand.me/product/we-connect-cards/&quot;&gt;We! Connect Cards&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;17: Public Speaking and Improving Skills&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/77/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/77/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What I Need From You Matrix</title><link>https://candost.blog/notes/77a/</link><guid isPermaLink="true">https://candost.blog/notes/77a/</guid><pubDate>Sun, 27 Oct 2024 15:57:08 GMT</pubDate><content:encoded>&lt;p&gt;When you’re hosting a workshop to resolve collaboration problems between teams, project kick off, or something similar that require teams (or even people) to collaborate, you can use “What I Need From You Matrix.”&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What I need from you&lt;/th&gt;
&lt;th&gt;Team A&lt;/th&gt;
&lt;th&gt;Team B&lt;/th&gt;
&lt;th&gt;Team C&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Team A&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;A needs from B&lt;/td&gt;
&lt;td&gt;A needs from C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team B&lt;/td&gt;
&lt;td&gt;B needs from A&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;B needs from C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team C&lt;/td&gt;
&lt;td&gt;C needs from A&lt;/td&gt;
&lt;td&gt;C needs from B&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The matrix allow each team (or person) to voice their needs from others. The goal is bringing clarity to expectations and aligning everyone.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40/&quot;&gt;40: Understanding the Feedback You Receive&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44c/&quot;&gt;44c: Confrontation brings honesty&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44g/&quot;&gt;44g: Persuading others requires accepting their arguments and building empathy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; CTO Craft Con 2024 Berlin, Claus Höfele - Director of Engineering at On, Facilitation: A Superpower for Engineering Leaders.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/77a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/77a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Lightning Decision Jam</title><link>https://candost.blog/notes/77b/</link><guid isPermaLink="true">https://candost.blog/notes/77b/</guid><pubDate>Sun, 27 Oct 2024 15:57:08 GMT</pubDate><content:encoded>&lt;p&gt;When you need to make a fast decision as a group, you can host lightning decision jam sessions. Phrase the problems you’re facing in “How Might We (HMW)” format, and ask everyone to write their answers silently into post-its. Then everyone puts their post-its to the wall and we prioritize the solutions and talk about them one by one.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;17: Public Speaking and Improving Skills&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19/&quot;&gt;19: Decision-Making Strategies&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/66/&quot;&gt;66: RFC Process in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; CTO Craft Con 2024 Berlin, Claus Höfele - Director of Engineering at On, Facilitation: A Superpower for Engineering Leaders.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/77b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/77b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Using Engineering Metrics</title><link>https://candost.blog/notes/78/</link><guid isPermaLink="true">https://candost.blog/notes/78/</guid><pubDate>Sun, 27 Oct 2024 15:57:08 GMT</pubDate><content:encoded>&lt;p&gt;Engineering metrics should live with business metrics in the same system, not in another system. Engineering metrics are part of business metrics and they have to live together. These metrics shouldn’t stay in a system where only engineering leaders can access.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4/&quot;&gt;4: Monitoring Work of Direct Reports&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4b/&quot;&gt;4b: Monitoring &amp;amp; Inspection to Learn&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b/&quot;&gt;24b: Specify goals instead of methods or processes&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; CTO Craft Con Berlin 2024, Grygoriy Gonchar - CTO Eurowings Digital, Elevate Engineering Goals to your Company’s Genuine Priorities&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/78/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/78/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Tracking Capacity Allocation</title><link>https://candost.blog/notes/78a/</link><guid isPermaLink="true">https://candost.blog/notes/78a/</guid><pubDate>Sun, 27 Oct 2024 15:57:08 GMT</pubDate><content:encoded>&lt;p&gt;Track capacity allocation in retrospective rather than for future. This way you know what the team spent time on the last month(s). Categorize the work in three categories: tech debt, product improvements, and new features. Once you accumulate some data around how much time the team(s) spend on each category, you can bring clarity to the business around what the team is dealing with and the data can help you identify problematic areas where engineers spent a lot of time on tech debt.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4/&quot;&gt;4: Monitoring Work of Direct Reports&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/68/&quot;&gt;68: Thinking Retrospectively Helps to Correct The Course&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/76/&quot;&gt;76: Becoming a CTO&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; CTO Craft Con Berlin 2024, Grygoriy Gonchar - CTO Eurowings Digital, Elevate Engineering Goals to your Company’s Genuine Priorities&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/78a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/78a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Managing Tech Debt</title><link>https://candost.blog/notes/79/</link><guid isPermaLink="true">https://candost.blog/notes/79/</guid><pubDate>Sun, 27 Oct 2024 15:57:08 GMT</pubDate><content:encoded>&lt;p&gt;In all engineering problems like tech debt, focus on business case first. Telling executives (like CEO) or product management that tech debt has to be worked on will not work. You have to understand the business first and then find the impact of tech debt to the business. If people are complaining that the team speed is slow, find out why. Is it because of the tech debt or because of the lacking capabilities around continuous delivery. Once you found it, explain the problem’s impact to the business with clear impact evaluation and how you’ll make it better and how people will track that it gets better. Don’t start from the tech debt and explaining that you need time; it won’t work.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/26/&quot;&gt;26: The Cost of Software Deployment and Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/49/&quot;&gt;49: Accidental Complexity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/59/&quot;&gt;59: Functional Decomposition in Software Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/78/&quot;&gt;78: Using Engineering Metrics&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; CTO Craft Con Berlin 2024, Grygoriy Gonchar - CTO Eurowings Digital, Elevate Engineering Goals to your Company’s Genuine Priorities&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/79/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/79/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Your job title depends on the organization you&apos;re in.</title><link>https://candost.blog/journal/your-job-title-depends-on-the-organization/</link><guid isPermaLink="true">https://candost.blog/journal/your-job-title-depends-on-the-organization/</guid><pubDate>Fri, 18 Oct 2024 11:06:40 GMT</pubDate><content:encoded>&lt;p&gt;Your job title depends on the organization you’re in.&lt;/p&gt;
&lt;p&gt;Get used to being a senior or junior again in different organizations. Don’t take the given seniority for granted—it&apos;s not like the PhD that gives you a Dr. title for your life.&lt;/p&gt;
&lt;p&gt;Agencies often promote people to senior roles way earlier than other organizations because they can charge their customers more per hour. In banks, all titles are inflated. I saw many VPs doing team lead roles.&lt;/p&gt;
&lt;p&gt;In software engineering, the differences between titles are not so sharp, and &lt;a href=&quot;https://candost.substack.com/p/9-engineering-career-path&quot;&gt;there is no unification across the industry&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Don’t believe in what you read on social media about senior engineers doing this or that.&lt;/p&gt;
&lt;p&gt;Also, don&apos;t take yourself too seriously about titles. Look at the opportunities you have to learn how much money you make.&lt;/p&gt;
&lt;p&gt;If you want to get more money, some organizations pay their mid-level engineers more than some other organizations pay for senior (or even staff) engineers. When you move to these organizations, your CV doesn&apos;t look bad, and you&apos;re not stepping down in your career. As long as you have a reason you can explain, there is no problem.&lt;/p&gt;
&lt;p&gt;If you&apos;re good with the money you earn, then look at the learning opportunities. Don&apos;t think career opportunities mean only promotions or titles. Focus on what problem you solve and what you learn from it. That&apos;s the career opportunity because that&apos;s called experience. In the end, what brings title AND makes money is your experience.&lt;/p&gt;
&lt;p&gt;That&apos;s why:&lt;/p&gt;
&lt;p&gt;Career Opportunities = Experiences&lt;/p&gt;
&lt;p&gt;Career Opportunities ≠ Title&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/your-job-title-depends-on-the-organization/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/your-job-title-depends-on-the-organization/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On Good Software Engineers</title><link>https://candost.blog/on-good-software-engineers/</link><guid isPermaLink="true">https://candost.blog/on-good-software-engineers/</guid><description>I set out to find a simple definition that would help managers frame the fundamental things they expect from software engineers.</description><pubDate>Tue, 15 Oct 2024 09:45:00 GMT</pubDate><content:encoded>&lt;p&gt;Setting expectations for software engineers is tricky for all managers. Every company has different needs and a different structure, tech stack, and culture. Whenever someone joins a team, one of the manager’s challenges is aligning the organization’s expectations with those of the new joiner. As there’s no universal guidance on this subject, I set out to find a simple definition that would help managers frame the fundamental things they expect from software engineers.&lt;/p&gt;
&lt;p&gt;I first found definitions of 10x engineers, superstars, or rockstar developers, which aren’t definitions of good engineers in any way. Someone may produce a lot of work but it’s often at the cost of team spirit and results in low-quality code. Ultimately, the team is demoralized and the organization bears the cost of substandard code.&lt;/p&gt;
&lt;p&gt;I also looked at different career progression frameworks or career matrices (which aim to give engineers perspective on how to map their professional development to roles) to see how tech- or product-driven organizations define good engineers. I found that all were incomplete (I wrote about the good, the bad and the ugly of these frameworks &lt;a href=&quot;/the-good-the-bad-and-the-ugly-of-career-ladders-and-frameworks/&quot;&gt;here&lt;/a&gt;. In general, career frameworks are helpful in defining roles, but they don’t define a good engineer. After sharing my thoughts and findings with peers, well-respected engineers and &lt;a href=&quot;https://www.linkedin.com/feed/update/urn:li:activity:7243636598557347840/&quot;&gt;on LinkedIn&lt;/a&gt;, I arrived at one definition of a good software engineer.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A good engineer is one whom I, as a manager or peer, can trust to progress a project, knowing that they will deliver a solution by working with the team and producing good quality, again and again.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This definition applies to software engineers at all levels (from junior to staff+). We can’t expect a junior engineer to drive a big project; their scope will be limited. Yet, we can expect them to deliver small, unambiguous tasks with high quality again and again. We can expect good senior+ engineers to drive and deliver a feature or project. When it comes to staff+ engineers, this expectation will span over big and long-term projects with many unknowns.&lt;/p&gt;
&lt;p&gt;It’s a super simple definition but has a lot of subtleties around how a good engineer, at any level, will approach and deliver a project by using many hard and soft skills. Let’s delve into them one by one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good engineers know how to influence others and the organization to deliver a solution as a team.&lt;/strong&gt; At any seniority level, a good engineer must know how to communicate well both in written and spoken form. An engineer’s work always depends on collaboration (code reviews, pair programming, &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;RFCs&lt;/a&gt;, &lt;a href=&quot;/adrs-rfcs-differences-when-which/&quot;&gt;ADRs&lt;/a&gt;, feedback, etc.). Good collaboration demands clear communication, &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;giving and receiving feedback&lt;/a&gt;, and &lt;a href=&quot;/the-must-have-skill-for-every-leader-listening-with-empathy/&quot;&gt;listening with empathy&lt;/a&gt;. However, these soft skills are not enough.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good engineers understand the processes they are operating in while taking a project from an idea to a solution.&lt;/strong&gt; There are different approaches when it comes to doing code reviews or writing &lt;a href=&quot;/adrs-rfcs-differences-when-which/&quot;&gt;RFCs or ADRs&lt;/a&gt;. Each organization uses different methodologies like Kanban, Scrum, or Scrumban. Some organizations use Tech Radar to help teams make technology choices. Good engineers know the processes and guidelines so thoroughly that they know where they can bend the rules. They don’t stop there; they take their time to understand the organization as a whole.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good engineers spend extra time learning the environment they’re in, going beyond the processes so they can independently drive the work.&lt;/strong&gt; They learn how the organization works, about its culture, norms, and people. As they need to adapt to the organizational requirements to deliver a job of good quality, they have to develop not only hard skills but people and organizational skills. If the organization is hierarchical, they&apos;ll have a difficult time driving a solution &lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;when they face rejection from a more senior person&lt;/a&gt;. If the organization works with short-lived task forces instead of long-living teams, their work style will be focused on speed and getting things done quickly. In any situation, they’ll need to find how to implement quality sustainably.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good engineers take a proactive approach and embed quality elements into their deliverables to increase consistency and velocity.&lt;/strong&gt; There is no need to ask for extra permission to write tests when you do test-driven development; no discussion will be needed if you consider refactoring as part of the new feature implementation. A good engineer chooses their approach wisely. If they inherit a legacy codebase, they look for ways to make it better, step by step. If they work with giving estimations, they include all these to keep a good level of quality. But above all, a good engineer needs to understand what quality means in their current circumstance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good engineers understand the stakeholders’ needs and fine-tune their approach so they don’t unnecessarily delay the delivery.&lt;/strong&gt; They might need to do a proof of concept first or a full solution design upfront. Even when working in the same place, the organization evolves and changes; good engineers &lt;a href=&quot;/learnings-on-dealing-with-ambiguity/&quot;&gt;adapt to these changes&lt;/a&gt; and adjust the project’s codebase accordingly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good engineers constantly work on reducing complexity in the codebase to consistently provide high quality.&lt;/strong&gt; They seek a modular design, separate concerns at every level while keeping the right amount of cohesion, and have a good testing setup and strategy. These are quality levers, and they know how to adjust them according to the organization, the situation, and the people around them. Keeping the same implementation and delivery strategies rarely works; good engineers constantly adapt and have a learning mindset.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good engineers are reliable in constantly changing organizations.&lt;/strong&gt; They seek to learn at every chance, even if it puts them in uncomfortable situations, such as publicly admitting mistakes, holding themselves accountable, and looking for ways to prevent the same mistakes from happening again. If a good engineer doesn’t know how to tackle a problem, they don’t avoid tackling it. They have a growth mindset and eagerness to learn. But they don’t stop there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good engineers are team players regardless of personality type.&lt;/strong&gt; They recognize a problem and offer a solution. They don’t throw the problem over the fence and ask others to fix it.&lt;/p&gt;
&lt;p&gt;I’ve covered good engineers in detail. But what makes a great engineer? &lt;strong&gt;Great engineers do all of the above but &lt;em&gt;proactively&lt;/em&gt;.&lt;/strong&gt; If they see a broken process, &lt;a href=&quot;/strong-ownership-culture-in-a-team/&quot;&gt;they don’t walk past the problem&lt;/a&gt; or wait for someone else’s permission. &lt;a href=&quot;/bias-towards-action/&quot;&gt;They take action to fix it&lt;/a&gt;. If they can’t change the process themselves, they don’t complain without bringing solutions to the people who can change it.&lt;/p&gt;
&lt;p&gt;These expectations will not be easy for inexperienced engineers, but their scope will be limited at first. They will gain experience in time. If they keep learning, stay reliable, and improve quality day-to-day, it’s safe to call them good engineers.&lt;/p&gt;
&lt;p&gt;I already hear some of you saying, “Well, Candost, you expect a lot of things from a good engineer.” No, I don’t. I strongly believe all that I’ve mentioned is a basic expectation from any engineer. More generally, these expectations apply to, in fact, any good employee.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/on-good-software-engineers/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/on-good-software-engineers/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Read a A Book—Book Review, Summary and Notes</title><link>https://candost.blog/books/how-to-read-a-book-review-summary-and-notes/</link><guid isPermaLink="true">https://candost.blog/books/how-to-read-a-book-review-summary-and-notes/</guid><description>A profound book teaches how to extract more information from any book through disciplined reading to transform reading approach by helping to read faster and more effectively.</description><pubDate>Sun, 13 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How Strongly I Recommend It:&lt;/strong&gt; 10/10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How Likely I Will Gift It:&lt;/strong&gt; 5/10&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The Review&lt;/h2&gt;
&lt;p&gt;This is one of the most fundamental books, not to learn how to read but to increase the information you can extract from any book. The methods, ideas, and thoughts are profound and well-established. After reading the book two times, taking notes, and applying my learnings, the book changed how I approach books.&lt;/p&gt;
&lt;p&gt;I always felt bad when I half-read any book before reading this one. However, I learned that I can read a book much more quickly without reading every sentence in it. It’s a matter of disciplined method combined with active reading.&lt;/p&gt;
&lt;p&gt;I admit that I don’t follow everything in the book to the word. That’s okay. I sometimes do syntopical reading from the books I’ve read before in combination with the book I’m reading for the first time. Yet, I feel much more wealthy with the tools I have in my reading. It’s a matter of using the tool at the right time for the right thing.&lt;/p&gt;
&lt;p&gt;I recommend this book to everyone.&lt;/p&gt;
&lt;p&gt;However, I am not sure if I will gift this book to many people. You have to arrive at this book by yourself because if someone gifts you, you will likely not read it. The craving must come out from within, not nudged from outside.&lt;/p&gt;
&lt;h3&gt;Who Should Read It?&lt;/h3&gt;
&lt;p&gt;Anyone who has never thought about how to read books in a better way. I think the majority of the population doesn’t have the tools mentioned in this book. Hence, everyone should read it.&lt;/p&gt;
&lt;h3&gt;Why should you read it?&lt;/h3&gt;
&lt;p&gt;The book is more about getting the most out of any book in the shortest amount of time than reading a book. If you struggle to stick to a book or buy so many books but your reading speed falls behind, or you have difficulties reading non-fiction, you should read this to extend your reading toolkit.&lt;/p&gt;
&lt;p&gt;Reading is rarely reading word by word, unlike what’s been taught at school. It’s a dynamic activity in which you have to change your reading style, speed, and mindset depending on the book and your knowledge about the topic. If you don’t know how to do these, you should read this book.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Activity and Art of Reading&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&quot;...knowledge is not much a prerequisite to understanding as is commonly supposed. We do not have to know everything about something in order to understand it; too many facts are often as much of an obstacle to understanding as too few. There is a sense in which we moderns are inundated with facts to the detriment of understanding.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Reading for information vs. reading for understanding&lt;/h3&gt;
&lt;p&gt;Reading for understanding is more active reading that changes the knowledge level of a reader from less to more. It funda­mentally challenges, not just gives information. Reading for un­derstanding requires being ignorant or having a little bit of in­formation about a topic. Reading for information is about reading newspapers, magazines or others that are intelligently through to us. These things may increase our information level but don&apos;t change our under­standing of anything.&lt;/p&gt;
&lt;h3&gt;Writer vs. Reader&lt;/h3&gt;
&lt;p&gt;The writer must be superior to the reader, and that superiority should create an inconsistency. For a reader to understand while reading, this instability should be partially or fully resolved, and the reader should become superior in the end.&lt;/p&gt;
&lt;h3&gt;Reading as Learning&lt;/h3&gt;
&lt;p&gt;To be informed is to learn as much understanding as what you didn&apos;t understand before. We can learn the existence of information by reading it, but it doesn&apos;t necessarily mean we understand what it says and learn it. We just learn the information. We&apos;re informed, not enlightened. To be enlightened, we have to be informed first. But if we stop there, we&apos;ll never truly understand what we read. To understand, we may think about the information or ask questions. But both will demand us we answer those questions. If we have a teacher who answers these questions, it doesn&apos;t show that we have learned. Also, when reading books, we don&apos;t have a present teacher; we have to answer these questions by ourselves. That&apos;s what Mortimer calls learning by discovery. If we learn by instruction, we&apos;re only informed. We need to seek the next step and discover to learn. I also think that&apos;s the beauty of Feynman&apos;s technique: explain what you&apos;ve learned to a kid.&lt;/p&gt;
&lt;h2&gt;Four Levels of Reading&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Elementary&lt;/li&gt;
&lt;li&gt;Inspectional&lt;/li&gt;
&lt;li&gt;Analytical&lt;/li&gt;
&lt;li&gt;Syntopical&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Elementary reading is what&apos;s taught us in elementary school.; it&apos;s the simplest form of reading. Our goal is to understand what a sentence says.&lt;/p&gt;
&lt;p&gt;In inspectional reading, we ask, &quot;What is the book about?&quot; Our goal is to understand the book in a limited time, be it 15 mins or 30 minutes. We have to learn as much as we can from the book in this limited time. Therefore, only skimming is not enough.&lt;/p&gt;
&lt;p&gt;In analytical reading, we have unlimited time. It&apos;s the level we understand the book. We ask questions, converse with the author, extract its arguments, and learn; then, it&apos;s an insanely active level of reading that results in the book becoming a part of a reader.&lt;/p&gt;
&lt;p&gt;The last level of reading is syntopical reading. The reader indeed reads many books together to understand a subject, not just one book. And the reader may create their own perspective that&apos;s not in any of these books. It&apos;s the most complex and rewarding part of reading.&lt;/p&gt;
&lt;h2&gt;Inspectional Reading&lt;/h2&gt;
&lt;p&gt;It&apos;s the reading we do to understand what the author says, its message and pivotal arguments, and whether it is worth our time or not. Inspectional reading consists of two parts. Beginner readers can do these parts fully detached from each other, but experienced readers can do it together. In the first part of inspectional reading, we call systematic skimming, and the second part is superficial reading.&lt;/p&gt;
&lt;p&gt;You need to be able to answer the following questions after the inspectional reading:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What kind of book is it?&lt;/li&gt;
&lt;li&gt;What is it about as a whole?&lt;/li&gt;
&lt;li&gt;What is the structural order of the work whereby the author develops their conception or understanding of that general subject matter?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Inspectional reading is the reading we do before giving the book a full read. Our goal is to understand what the book is about, what&apos;s its argument and does it worth reading or not. Inspectional reading consists of two parts.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Systematic Skimming&lt;/li&gt;
&lt;li&gt;Superficial Reading&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Systematic Skimming&lt;/h3&gt;
&lt;p&gt;Systematic skimming is the part where we look closer at the book. The goal is to understand the theme of the book, whether it matters to you or not, if it requires more time to read, its pivotal arguments, etc. (for me: it&apos;s the decision point for buying the book).&lt;/p&gt;
&lt;p&gt;It consists of multiple steps. Many people skip this and dive into the book that they regret quickly and, as a result, waste a lot of time.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Read the title page, preface, and foreword.&lt;/li&gt;
&lt;li&gt;Study the table of contents.&lt;/li&gt;
&lt;li&gt;Check the index. (and some passages that are cited—most crucial ones in the index)&lt;/li&gt;
&lt;li&gt;Read the publisher&apos;s blurb.&lt;/li&gt;
&lt;li&gt;Look at the chapters that seem pivotal to its argument.&lt;/li&gt;
&lt;li&gt;Turn the pages and read here and there, a paragraph or two, a page or two, not more than that. Look for signs of the main contention.&lt;/li&gt;
&lt;li&gt;Read the last 2-3 pages. Authors usually cannot resist not summarizing the book. That&apos;s the conclusion.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After completing these seven steps, you should have a broad understanding of the book and can decide if you want to read the book. Many books won&apos;t pass this stage, and that&apos;s okay. There are millions of books, and we cannot read them all. We have to choose what we read carefully.&lt;/p&gt;
&lt;h3&gt;Superficial Reading&lt;/h3&gt;
&lt;p&gt;In inspectional reading, the second step is superficial reading, which is reading a book without stopping and pondering its arguments. It&apos;s okay not to understand everything the book says. It&apos;s important to keep going, understand as much as possible, and be fine with what you can grasp. When reading a difficult book, you&apos;ll come back to it later. You&apos;ll try to understand all arguments in the second reading, and that reading requires you to read the book once.&lt;/p&gt;
&lt;p&gt;While reading for the first time, it&apos;s crucial to read at different speeds. You need to be able to speed up and down. Many people read with sub-voice, and it slows them down and causes them to spend unnecessary time on parts that are not that valuable. Many books are worth not even skimming. That&apos;s why practice and learn how to read at different speed levels. In inspectional reading, you both read faster. Not only do you speed read, but you also read less of the book because you read with a different mind: understand the book holistically.&lt;/p&gt;
&lt;p&gt;To speed up your reading, put your finger on the line and move it at a speed a little faster than your eyes can follow. That will help speed up because your eyes will have fewer chances to fixate themselves and only pause once or twice in a line while grasping multiple words at once. This method will also increase your concentration. But contrary to what speed reading courses claim, it doesn&apos;t improve your comprehension. Comprehension will come when we read analytically. It&apos;s not the purpose here.&lt;/p&gt;
&lt;h3&gt;The Essence of Active Reading&lt;/h3&gt;
&lt;p&gt;The active and demanding reader asks questions, takes notes, makes the book their own, and becomes better when they keep reading consistently.&lt;/p&gt;
&lt;p&gt;An active reader asks four questions and writes down answers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is the book about as a whole? (What&apos;s the theme?)&lt;/li&gt;
&lt;li&gt;What is being said in detail, and how? (main ideas, assertions, arguments)&lt;/li&gt;
&lt;li&gt;Is the book true, in whole or part? (make up your own mind)&lt;/li&gt;
&lt;li&gt;What of it? (why does the author think knowing these things is important? Is it necessary for you to know them?)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Analytical Reading&lt;/h2&gt;
&lt;p&gt;Rarely does any book need to be read analytically, and 99% of the books don&apos;t need this kind of reading. Only great books need to be read analytically, and these books are rare.&lt;/p&gt;
&lt;p&gt;Analytically reading a book requires the previous steps that are described in the elementary and inspectional reading.&lt;/p&gt;
&lt;p&gt;In analytical reading, we start with finding what a book is about and learning what a book says. Only after we can say that we understand can we criticize a book as a communication of knowledge. First, we need to read and understand without prejudice or holding any judgment. Only then can we criticize.&lt;/p&gt;
&lt;h3&gt;First Stage: Finding What A Book is About&lt;/h3&gt;
&lt;h4&gt;Pigeonholing a book&lt;/h4&gt;
&lt;p&gt;Before reading the whole book, you must know what kind of book you&apos;re reading. Is it a scientific, historical, or philosophical book? Is it theoretical or practical if it&apos;s a scientific book? Identifying the book is crucial to approaching how to read it. You can learn this by looking into its title and front matter, but it&apos;s not always enough. You have to examine the table of contents (if it has one) and index it, and read a few pages, the intro, and the summary. Once you understand if it&apos;s theoretical or practical, you&apos;re already better. But how? I mean, what defines theoretical as theoretical or practical as practical? In short, practical books often talk with &quot;you should do this&quot; or use words such as &quot;should&quot; and &quot;ought,&quot; &quot;good&quot; and &quot;bad,&quot; &quot;ends,&quot; and &quot;means.&quot; In contrast, theoretical books keep saying &quot;is,&quot; not &quot;should.&quot; They try to show what it is instead of how to make something better or ways to change things.&lt;/p&gt;
&lt;p&gt;Also, understanding what kind of theoretical book is not always easy. Some books say they talk about physics but are more philosophical, and vice versa.&lt;/p&gt;
&lt;p&gt;Understanding historical books is easy, but separating them from novels is not, as history has to include good storytelling.&lt;/p&gt;
&lt;p&gt;Scientific books talk about anything that can happen at any time and often outside of the daily routine life of ordinary humans. In contrast, philosophical books often talk about things that happen in ordinary human life that don&apos;t require extra knowledge than just an armchair to sit and think.&lt;/p&gt;
&lt;h4&gt;X-Raying A Book&lt;/h4&gt;
&lt;p&gt;State the unity of the book in a sentence; if not possible, in a few sentences, a paragraph. Unity is the theme or main point of a book. It&apos;s not what kind of book it is but what the book is about as a whole. To do that, you must understand the skeleton of the book, see beyond its clothes and flesh, and X-ray the book. And write that down. Just thinking about it doesn&apos;t suffice. If you can&apos;t express it, you&apos;re just fooling yourself.&lt;/p&gt;
&lt;p&gt;As much as we need to state the book&apos;s unity (what it is about as a whole), we also must identify its sections and how the author identified what they wanted to say in each section. These sections don&apos;t need to be defined by the author. It&apos;s how the reader sees them. These sections would be identical if the author and the reader did their jobs well. Also, the reader should outline each section separately and each part of the section. This outlining goes on and on, but this doesn&apos;t have to be done for every book; the reader also should do it together with identifying the whole. The crucial part is knowing the structure of the book&apos;s sections, their relations, and their connections to each other. The reader can outline everything in detail and how everything ties together, but this should be limited to the book, not outline the subject matter the book is about. When getting into the subject matter, the outline will be unlimited.&lt;/p&gt;
&lt;p&gt;Lastly, the reader must look at the author&apos;s intentions. What problem did the author try to solve? To see the book&apos;s unity, the reader must ask questions to learn what the book serves. Authors often don&apos;t make it explicit enough; the reader should ask questions to figure out the author&apos;s intention and the reason for the existence of the book.&lt;/p&gt;
&lt;h3&gt;Second Stage: Finding What A Book Says&lt;/h3&gt;
&lt;h4&gt;Coming to terms with the author&lt;/h4&gt;
&lt;p&gt;The author uses words and phrases, sometimes interchangeable meanings. They use the same words for different purposes or different words for the same meaning. As a reader, our responsibility is to understand which words say what and what the author intended to use with what words. That means coming to terms with the author. We don&apos;t need to do this for every word consciously, but we can find the essential words and phrases the author used and come to terms with these. These will help readers to understand the arguments and the author&apos;s mind better. It will help us to understand the book better.&lt;/p&gt;
&lt;h4&gt;Determining the message of the author&lt;/h4&gt;
&lt;p&gt;The author&apos;s message can be embedded into words, sentences, and paragraphs. It&apos;s usually not hidden in fiction books but also can be unobvious; the author might reveal it as a whole. To understand a book as a whole, we, readers, must look for arguments in words, sentences, paragraphs, propositions, and problems the author solved. Our goal is to answer, &quot;What is being said in detail, and how?&quot; Here, we interpret the content. We must find the most important sentences that lead to the author&apos;s propositions. With these important sentences, we may clearly build the author&apos;s arguments. But sometimes, we need to construct arguments on our own as the authors might fail to reveal them or expect us to find them. The author&apos;s arguments and solutions they give (or failing to give a solution) should be out of the book in the end, so we can say we understand the book. Merely thinking about them is not enough. We have to ask questions, put effort into finding answers to what the author says, and form these propositions, arguments, problems, and if the author succeeded or failed to solve these problems. All that requires an active reader who adjusts reading speed and marks words, sentences, arguments, and propositions to extract them from the book.&lt;/p&gt;
&lt;h3&gt;Third Stage: Criticizing A Book as a Communication of Knowledge&lt;/h3&gt;
&lt;h4&gt;Criticizing A Book Fairly&lt;/h4&gt;
&lt;p&gt;The next step after understanding the author&apos;s arguments, dissecting their propositions, and building up how they approach problems and solutions, we can judge and criticize what they are saying. However, to criticize, we must understand first; we must listen to their arguments as a whole, do our part of the work, and not cut their words before they finish. To be able to say, &quot;I understand,&quot; we must be active and work through the book without judgment. Once we understand, we can judge, and it&apos;s our duty, as a reader, to judge and criticize (agree, disagree, or suspend judgment) the book. We must take a position, and while doing so, we should avoid contentious and disputatious behavior. We should be open to agreeing as much as disagreeing. To stress again, we must suspend judgment until we are considerably sure that we understand the author&apos;s points, and then, only then, we must criticize the book to learn, to agree, to disagree, or to judge what they are saying.&lt;/p&gt;
&lt;p&gt;When we disagree with each other, we often don&apos;t understand the difference between personal opinion and knowledge. The same applies to books we read. We have to separate personal opinions and judge the authors&apos; arguments by thinking about our missing knowledge or the authors&apos; missing knowledge. When disagreeing, the ground should be open to learning. As we can also (hypothetically) teach the author, it&apos;s crucial to think of our arguments as either personal opinions or knowledge based on facts or can be explained by concrete reasons, not just mere opinions or prejudices we have.&lt;/p&gt;
&lt;h4&gt;Agreeing or Disagreeing with An Author&lt;/h4&gt;
&lt;p&gt;To agree or disagree with an author, we must first say that we understand. Without understanding, we cannot express any judgment or even suspend judgment. And understanding doesn&apos;t mean agreement with an author. Disagreement doesn&apos;t mean misunderstanding or not caused by it. We can only disagree if we understand. To say that we disagree, we must first identify our emotions and feelings. Do we disagree because we don&apos;t like the arguments? Second, if we disagree, we must explicitly state our own assumptions. Lastly, we must try taking the author&apos;s point of view. Without sympathy, we cannot disagree; it would be incomplete if we approach with impartiality. As a result, we can only disagree by saying one of these:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The author is uninformed.&lt;/li&gt;
&lt;li&gt;The author is misinformed.&lt;/li&gt;
&lt;li&gt;The author is illogical.&lt;/li&gt;
&lt;li&gt;The author&apos;s analysis is incomplete.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Whole saying any of these, we, as readers, have to be precise and definite about why and where the author failed in information or logic.&lt;/p&gt;
&lt;p&gt;When an author is uninformed, they lack sufficient knowledge about the problems they present or trying to solve. As a reader, we must show explicitly when an author is uninformed and present knowledge they lack that is relevant to the problem. When an author is misinformed, the real problem might be still missing knowledge, but here the author makes erroneous arguments by going beyond missing knowledge. The author presents as true or a fact that is contrary to a fact. The author claims the knowledge they don&apos;t possess. When an author is illogical, they use wrong reasoning with the information they have. They committed a fallacy in reasoning. They conclude something which doesn&apos;t follow the reasons they explained earlier. As a reader, if we fail to support any of these three, we must agree with the author; we don&apos;t have a choice. We might not &quot;like&quot; the author&apos;s arguments, but we have no free will to choose to disagree. The last point of disagreement we can make is about the author&apos;s completeness. When an author&apos;s book is incomplete, we can say that the author didn&apos;t solve all the problems they presented, didn&apos;t consider all ramifications or implications, or didn&apos;t use the material they presented well. The last point is about the whole book, while the first three can be about certain parts of the book. When we make the last remark, we are also obligated to present the missing points.&lt;/p&gt;
&lt;h4&gt;Using Analytical Reading&lt;/h4&gt;
&lt;p&gt;The analytical reading has three stages. First, learn the book and find out what it is about. The second, interpret the book and its content. The last stage is criticizing the book.&lt;/p&gt;
&lt;p&gt;We went through the details of each stage. They represent the ideal of analytical reading. The ideal means it&apos;s something to aim for, but most people can&apos;t, and books don&apos;t need this. The goal is to approach the ideal as close as possible.&lt;/p&gt;
&lt;p&gt;Keep in mind that if we do analytical reading, we can read a lot fewer books as it takes good effort and time. But only well-read books matter more, and not all books need to be read in this way. The majority of books only should be inspected. We should know (and learn) which style we want to use when reading.&lt;/p&gt;
&lt;h4&gt;Aids to Analytical Reading&lt;/h4&gt;
&lt;p&gt;So far, we talked about (and learned) reading a book alone, without going to other resources, singling it out, or intrinsically reading it without getting external help. That was intentional because without intrinsic reading, we cannot (and shouldn&apos;t) look at supporting material, reference books, or commentaries because they can alter our judgment, opinion, and criticism of the book. Focusing on understanding the book alone is the first thing we need to do. Then, only then, we can look for external aids to understand better or criticize the book fairly.&lt;/p&gt;
&lt;p&gt;The first external aid is relevant experience. We talked about them before in the book: common and special experiences. Common experience can be brought to the table when we&apos;re reading a philosophical book. There is no laboratory needed, only a chair and time to think. The common daily experience can aid learning and understanding. In special experience, there is an additional great effort required. A historian might have spent years reading historical documents that not an ordinary person can access, or a scientist may work in labs and find results that an ordinary person cannot do. These special experiences can come into play when reading scientific books; as readers, we must follow (and be able to) the arguments and basis of what we&apos;re reading. If we can&apos;t, we need to go back to the basics and learn there to continue reading the book.&lt;/p&gt;
&lt;p&gt;We can use other books as external aid (extrinsic) to our reading. Some books already require us to know earlier books as they base arguments on the previous work of others or the author&apos;s previous books. These cases can only be covered (and the author&apos;s point/arguments can only be learned) when we read these books in a certain order. We come across these cases more in history and philosophy than in science and fiction. Philosophers read each other&apos;s works more than others and build arguments based on them.&lt;/p&gt;
&lt;p&gt;There is another category to use as extrinsic help: commentaries and abstracts. It&apos;s crucial to understand when and how these works should be used. Using commentary without reading a book and understanding by ourselves is dangerous. We are prone to errors in our judgment and limit ourselves to the point of commentators. If we use them to enhance our understanding and criticism, they are useful. Abstracts are also only useful when we use them to understand what the book is about when deciding to read it or not. They are unhelpful in reading and understanding the book as a whole. We have to form our judgments by reading the book ourselves, not by learning from others. Others (including the author&apos;s abstract or introduction to the book in the first pages) can only explain from their perspective and leave out many details about the book.&lt;/p&gt;
&lt;p&gt;As the last category of extrinsic reading aid, we can look at dictionaries and encyclopaedias (reference books). Before using any reference book, you must have four kinds of knowledge. 1) You must have some idea about what you want to know. You cannot wander around. Even if it&apos;s vague, you must know what you&apos;re searching for. 2) You must know where to find what you are looking for. 3) You must know how the knowledge is organized in the reference you&apos;ll use. How the reference tried to arrange the information (alphabetical, chronological, subject-based, etc.). 4) The information you seek must be considered knowable by authors (You cannot find answers to &quot;What do men live by?&quot; as it cannot be stated as facts, but only unsupported opinions).&lt;/p&gt;
&lt;p&gt;Dictionaries tell you more than you expect. You must learn abbreviations in dictionaries. They tell you the etymological and historical background of words and phrases. Every word represents a culture and historical knowledge. Understand them.&lt;/p&gt;
&lt;h2&gt;How to Read Practical Books&lt;/h2&gt;
&lt;p&gt;Reading practical books changes a few rules that we talked about before. Not just the rules but also how a reader approaches the reading. There are two kinds of practical books; one is like a guide (how to do a thing or a cookbook) that tells you how to do things to get a result. The other ones are concerned with the principles that generate rules that must be followed. Most books in politics and economics fall into this category. It talks about the theory of a practical thing, but we can say that it is practical.&lt;/p&gt;
&lt;p&gt;There is a distinction in reading practical books. Whatever the book is about, the reader has to take action for the book to reach its purpose. If there is no action, the reader doesn&apos;t accept the book&apos;s methods or doesn&apos;t understand the book. The author also tries to persuade the reader by adding narrative to the book, but, in the end, it&apos;s on the reader to accept and act in the suggested way. If the book is about how to read a book, the reader will never learn if they never try the methods.&lt;/p&gt;
&lt;p&gt;Agreeing with the author requires finding out what the author wants the reader to do and how the author wants the reader to do that thing, and the reader belongs to the audience the author intended to write for.&lt;/p&gt;
&lt;h2&gt;How to Read Imaginative Literature&lt;/h2&gt;
&lt;p&gt;Imaginative literature demands understanding behind its surface. If we ask someone why they liked a novel or what they liked in it, many become speechless. They know what they feel, but it&apos;s much harder to describe it. When they can&apos;t describe, they probably didn&apos;t read the book to its fullest.&lt;/p&gt;
&lt;p&gt;There are some &quot;don&apos;ts&quot; when it comes to imaginative literature reading. Don&apos;t resist the impact it has on you. Imaginative literature is about communicating experience, and their language is not as precise as the expository. The language often makes you feel something instead of removing ambiguity. The second &quot;don&apos;t&quot; is that you don&apos;t look for terms, propositions, and arguments. Imaginative literature teaches you only if you do your own thinking (learn from the story and experience), but you have to extract yourself, while expository literature demands that we must first try to understand the thinking the author had done.&lt;/p&gt;
&lt;p&gt;The last &quot;don&apos;t&quot; is don&apos;t criticize the book for its truthiness, correctness, or consistency in communication. The author doesn&apos;t try to give you the truth. Or what happens in real life. The story might not reflect even anyone in the real world even though all the places they talk about in the book are real.&lt;/p&gt;
&lt;p&gt;General rules for reading imaginative literature:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Structural (understand the structure)
&lt;ol&gt;
&lt;li&gt;classify the book in its category&lt;/li&gt;
&lt;li&gt;Grasp the unity of the whole book. You should be able to explain the book&apos;s plot (even for poems) in one or two sentences.&lt;/li&gt;
&lt;li&gt;Discover how the whole is constructed by parts. Find the individuals, characterization, incident, etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Interpret the book
&lt;ol&gt;
&lt;li&gt;Know characters, live through the events, and understand their episodes, incidents, thoughts, and speeches.&lt;/li&gt;
&lt;li&gt;Be part of the story, put yourself in, and understand how the background is connected to the story. Live in it, befriend characters, and understand the connections between characters, events, and the background they stay.&lt;/li&gt;
&lt;li&gt;Follow characters through their story and adventure.
These rules help you understand the writer but don&apos;t press too hard. Experience and enjoy the story. These rules help you figure out what you like in a story and why you like it.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Don&apos;t criticize the book until you fully appreciate what the author has tried to make you experience. Don&apos;t criticize the world the author created. Criticize what the author made with that world, what they make of it. We cannot agree or disagree with an imaginative author; we can only like it or not.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In summary, you make an honest appreciation of the book (live through the experience the author created), then you&apos;re competent to judge (explain what you like/dislike and why).&lt;/p&gt;
&lt;h2&gt;Suggestions for Reading Stories, Plays, and Poems&lt;/h2&gt;
&lt;p&gt;Reading imaginative literature has its own rules, and here, the four questions also apply to stories, poems, epics, and plays that we must answer, albeit a bit differently.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What is the book about, as a whole?&lt;/li&gt;
&lt;li&gt;What&apos;s been said in detail, and how?&lt;/li&gt;
&lt;li&gt;Is it true or false, in whole or part?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These three questions are straightforward to answer, or at least similar to other literature we talked about before. The 4th is &quot;What of it?&quot; is trickier and often doesn&apos;t apply to poems and stories. There is no action to take (most of the time) after reading it. If any imaginative literature piece urges us or makes us react to a thing, we should do it with caution.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;How to read stories:&lt;/em&gt; Read quickly with total immersion. Let the characters get into your mind and heart. Live with them, be part of their lives to understand them. Don&apos;t judge them by their decisions until you&apos;re sure that you lived with them. Don&apos;t criticize a character until you&apos;re sure why that character does a certain thing, and if then, stay unjudged as long as possible. Sometimes, you won&apos;t get to know every character in a long novel, but it&apos;s okay. Imagine you moved to a new town, and you&apos;re learning things and the people around you. It&apos;s the same. And if a book says something to your heart and you can&apos;t put a name to why you liked the story, look for your deep feelings, like what satisfied you? Justice? Love? Sadism? Masochism?&lt;/p&gt;
&lt;p&gt;Epics are the most honored but least-read literature because it&apos;s very difficult for authors to end the story. Hence, it&apos;s challenging for readers to read as well. However, they are as great as other fiction pieces and need to be read as the same, and gains will be much better, if not amazing.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Reading plays:&lt;/em&gt; Plays are a special kind. As most of the time, they don&apos;t include how to direct it (lift it to the director). It&apos;s up to the reader to direct the play. And have to. While reading, imagine you have a bunch of actors waiting for you, and you give them directions on how they should play. When possible, read out loud if the play is old (e.g., Shakespeare&apos;s) so you understand better, even if the words are old.&lt;/p&gt;
&lt;p&gt;Most plays are not worth reading. They are written for acting and should be acted. Especially tragedies (Greek tragedies) play a special role. As we know almost nothing about how Greeks directed the plays, we cannot fully judge. However, there are two things to keep in mind. 1) The time is limited in these tragedies, and it&apos;s reflected in the characters&apos; decisions and how they approach the situations. If they had enough time, they could have decided better, etc. 2) Greek tragedy actors wore buskins and masks, while the chorus didn&apos;t. Buskins elevated them and made them look like giants (elevating tragedy).&lt;/p&gt;
&lt;p&gt;When &lt;em&gt;reading poems&lt;/em&gt;, we think that we won&apos;t understand them and that it&apos;s difficult to understand. Therefore, we often don&apos;t put effort into even finishing it. Most poetry doesn&apos;t demand that much.&lt;/p&gt;
&lt;p&gt;The first rule is, like in other fiction, to read it through without stopping, even if you don&apos;t understand at all. Without seeing the whole, you cannot understand anything because a lyric poem is a whole, and parts alone don&apos;t give the picture, although they help build the message.&lt;/p&gt;
&lt;p&gt;The second step: read again but read out loud. Your ear catches the nuances and rhythm your mind cannot catch while reading silently. It helps you understand better.&lt;/p&gt;
&lt;p&gt;In lyric poetry, you don&apos;t come to terms with the author; you must discover keywords and question why those words came up.&lt;/p&gt;
&lt;p&gt;Last, most lyrics are about conflicts. Conflicts with time or love, or both. Try finding and understanding that conflict. Sometimes, this conflict or that keyword won&apos;t be mentioned in the poem at all, but it&apos;s your job to discover that conflict.&lt;/p&gt;
&lt;p&gt;The last tip is to read the poem again and again. It&apos;s a lifetime of work, and in every read, you&apos;ll discover new things you didn&apos;t see before.&lt;/p&gt;
&lt;h2&gt;How to Read History&lt;/h2&gt;
&lt;p&gt;To understand history or read it well, we must first settle on the term history. There are two kinds of history. One is the facts that happened in the past, and the other that tells some story about the happened fact. History is stories around an event, a fact. It&apos;s difficult to know the truth of what happened because the witnesses are dead, and we&apos;re only left with narratives. That&apos;s why historians leave no stone unturned before they make up their minds about an event. As we cannot do the same research, the first rule of reading history is to read more than one resource about an event or a period if we want to understand it. Also, history not only shows us what happened in the past, but it also shows what has happened up to now. An event that happened thousands of years ago still impacts today. That&apos;s why the second rule is to read history to learn how an event changed the world in years and how it still impacts now.&lt;/p&gt;
&lt;p&gt;The questions we ask in history books are the same as in any expository work. Yet, we need to change our expectations and approach them a little bit differently. We need to state what the book talks about and what not. We need to understand how the historian decided to tell the events and what&apos;s the outline. Then we need to understand clearly what&apos;s been said. Only then can we criticize. We can criticize the work&apos;s facts only if we know if the historian is misinformed or uninformed. Otherwise, we can only criticize the storytelling. The last question, &quot;What of it?&quot; is the most applicable question. The answer lies in the practical and political actions we take.&lt;/p&gt;
&lt;h3&gt;How to Read A Biography&lt;/h3&gt;
&lt;p&gt;Biographies are stories of real persons. The definitive biography is a scholarly work about someone important. They can&apos;t be about living people. Definitive biographies are not easy readings. There is also authorized biography. But it&apos;s not unbiased; they are often commissioned by family and friends to show someone&apos;s life. As it has this characteristic, we have to be careful when reading. They are usually biased. The last group is ordinary biographies; we expect the person to know their work and responsibilities to tell the facts and do their research like other historical books.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;How to read an autobiography:&lt;/em&gt; Take autobiographies with a grain of salt. A person cannot write fully about themselves because they probably don&apos;t fully know themselves. We might still learn about the person from their book and, how they wrote the book, how they approached writing events that happened in their lives.&lt;/p&gt;
&lt;p&gt;If we want to learn about a person&apos;s life, we should read as many biographies as possible, including an autobiography (if there is one).&lt;/p&gt;
&lt;p&gt;We should still ask the questions we ask in any book and don&apos;t criticize until we fully understand what it says.&lt;/p&gt;
&lt;h3&gt;How to Read About Current Events&lt;/h3&gt;
&lt;p&gt;We still need to ask the first four questions about the events we read. In addition, we need to know the author when reading about current events. We need to ask a series of questions to understand any author writing about current events:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What does the author want to prove?&lt;/li&gt;
&lt;li&gt;Whom do they want to convince?&lt;/li&gt;
&lt;li&gt;What special knowledge do they assume?&lt;/li&gt;
&lt;li&gt;Do they really know what they are talking about?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The most important thing is: &quot;Let the reader beware.&quot; The author can have an interest in you understanding things in a certain way. Be aware of it.&lt;/p&gt;
&lt;h2&gt;How to Read Scientific Books&lt;/h2&gt;
&lt;p&gt;You don&apos;t read classical mathematical or scientific books to become knowledgeable in the area; you read them to understand the problem author tried to solve. That&apos;s why the same expository questions apply, although their answers might be more challenging. That&apos;s why try to state the problem the author has tried to solve as clearly as possible.&lt;/p&gt;
&lt;p&gt;You might face challenges when confronted with math in science books. But math is just another language that you can learn the basics to keep reading. It&apos;s not something to be scared of. Often the math in popular science books or classical science books is not that challenging. Again, don&apos;t try to be competent in the subject matter; your goal is to understand the problem.&lt;/p&gt;
&lt;p&gt;Read actively (read math in elementary reading), try to understand the problem, and ask the same questions as for other expository work.&lt;/p&gt;
&lt;h2&gt;How to Read Philosophical Books&lt;/h2&gt;
&lt;p&gt;Children ask great questions, such as &quot;Why are people?&quot; Their questions are mostly related to understanding why, and it&apos;s remarkable. We mostly have no answers to those questions and somehow either dismiss them or do not even try to answer. Along the way to adulthood, we evolve this curiosity to a more practical side: how. We shape our minds with education (school and parental) and ask questions that are useful in everyday life. Philosophers are exactly asking the same questions as children do but trying to answer as wise adults.&lt;/p&gt;
&lt;p&gt;Philosophers ask about being and existence, change or becoming (why things change, or what is change), and good and evil (and how they are separate from right and wrong). Philosophers ask these foundational questions in even more topics, such as knowledge, etc.&lt;/p&gt;
&lt;p&gt;We can group these into two:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Questions about what &lt;em&gt;is&lt;/em&gt; or &lt;em&gt;happens&lt;/em&gt; in the world fall into theoretical philosophy.&lt;/li&gt;
&lt;li&gt;Questions about good and evil, right and wrong, and what ought to be done or sought fall into practical or normative philosophy.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Of course, there are many sub-branches in these two divisions. What is right/wrong, good and evil, in the individual belongs to ethics. The same but for society and its relation to the individual belongs to politics or political philosophy. The knowledge questions (what&apos;s involved in our knowing anything, limits of knowledge, etc.) fall into epistemology. There are many more subbranches, but we have no space to explore all of them here.&lt;/p&gt;
&lt;p&gt;Philosophy (up to 1930) was initially interested in first-order questions. These questions are the ones that can be understood by lay readers. These questions are related to everyday life, meaning they can be thought and understood, and tried to be answered by everyone. There are also second-order questions that are aimed at first-order questions. For second-order questions, try questioning the questions. That&apos;s where modern philosophy is interested. These questions can&apos;t be answered by lay readers or ordinary people. Today&apos;s philosophy is aimed at other philosophers like science does. It&apos;s not for ordinary people. As a reader, we need to separate the aim of philosophical work. As philosophy is nothing but thinking, philosophers also make mistakes and try to think about things that can be understood well by scientific methods.&lt;/p&gt;
&lt;p&gt;There are five philosophical styles a reader of philosophy should be aware of:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;The Philosophical Dialogue:&lt;/strong&gt; The style Plato started, and probably there is no other greater than Plato. The work is read with a narrative and drama. Plato, or Socrates actually, discusses a matter with a group of people, and Socrates embarks on a series of questions—the fundamental ones—and tries to answer them and discover. Moreover, he tries to let readers discover themselves with narrative.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Philosophical Treatise or Essay:&lt;/strong&gt; This style has similarities with dialogue but missing the drama. It has a philosophical beginning, middle, and end. They state the problem first, go through the subject matter thoroughly and treat special problems along the way or last.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Meeting of Objections:&lt;/strong&gt; In this style, a question is asked first. Then the work goes over wrong answers one by one, and, at last, the philosopher gives their own answer. The objections are found to lead to truth. Or at least, that&apos;s the thought in this style. This style hasn&apos;t been used much.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Systemization Of Philosophy:&lt;/strong&gt; Spinoza and Descartes tried to systemize philosophy using mathematical techniques but failed so. These works are very difficult to write and to read. Also, this style is questionable: is it possible to write philosophical work with math?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Aphoristic Style:&lt;/strong&gt; This style leaves the impression on the reader that more is said than what is actually said; the reader does much of the thinking (e.g., Nietzsche, Thus Spoke Zarathustra). The author often touches on a subject, suggests a truth or insight, and jumps to another.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;What should a reader do?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, try to find the question or questions that a philosophical book tries to answer. That&apos;s the most crucial one.&lt;/li&gt;
&lt;li&gt;Don&apos;t take the shortcut of reading books about philosophers, their lives, and their opinions.&lt;/li&gt;
&lt;li&gt;Respect the terms and initial propositions of the books and understand them and share the same language.&lt;/li&gt;
&lt;li&gt;Pay close attention to the philosopher&apos;s principles.&lt;/li&gt;
&lt;li&gt;Read the book with the method it&apos;s written: a philosopher does nothing but think, and the reader has to do nothing but read, and, as we know, that means think about it.&lt;/li&gt;
&lt;li&gt;Make up your own mind. When a philosopher disagrees with an argument, they have long conversations with each other. It shouldn&apos;t trouble you. You shouldn&apos;t disagree just because someone disagrees. You need to think about it yourself and judge on your own and for yourself.&lt;/li&gt;
&lt;li&gt;When reading theology: Accept the fist-principles of the book while reading. If you don&apos;t have faith, at least accept the principles, and put your judgment aside while reading. After that, make your own judgment, much like any other expository book.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How to Read Social Science&lt;/h2&gt;
&lt;p&gt;To understand how to read social science literature, we need to define what is social science. There are many fields considered in social sciences such as anthropology, politics, and economics, and some are left out (especially in universities), such as law and education. Universities divide them according to educational purposes: Law schools educate professionals who will work in the field while anthropology and sociology are dedicated to the pursuit of systematic knowledge of human society. However, while defining how to read social science literature, we will include all in social sciences, such as law, business, psychology, anthropology, economics, sociology, education, and public administration.&lt;/p&gt;
&lt;p&gt;Reading social science literature is both easy and difficult at the same time. It&apos;s easy because we often know the jargon, and narrative is something we&apos;re familiar with. But knowing the jargon and metaphors also makes it hard to read. Because these terms have a very wide meaning and they are sometimes convoluted. Even the authors are often confused, and, as a result, readers, too. Moreover, readers often have perspectives and stand on the subject. It&apos;s difficult to step back and read without judgment. Readers can&apos;t easily put their disagreement aside and hear the author&apos;s arguments as it is, accept them, and understand them fully. In hard sciences (math, physics, etc.) this is very easy to do because the terms and propositions are well explained at the beginning of the work (if not, they are concretely defined in the literature). In social science literature, it&apos;s quite the contrary. The authors don&apos;t define everything. Therefore, the first step of reading social science book is figuring out what kind of book it is. Then figure out terms and propositions, and arguments. But the question, &quot;What of it?&quot; requires considerable restraint on the reader&apos;s part.&lt;/p&gt;
&lt;p&gt;Moreover, social science reading requires reading multiple books at the same time. Because it&apos;s difficult to just form a judgment reading only one book. As it includes narrative and the problems we mentioned above, we need another form of reading: Syntopical reading.&lt;/p&gt;
&lt;h2&gt;Syntopical Reading&lt;/h2&gt;
&lt;p&gt;So far, we have talked about reading one book. We abstained from exploring and reading multiple books. When we want to learn more about one subject, we must find books about it. Knowing multiple books are written on a subject is the first requirement of syntopical reading. Knowing which books to read is the second and much harder requirement. Meanwhile, defining the subject we want to read is a challenge. When we want to read about a topic, how do we draw the lines, borders, and limitations? We can start looking at literature, but where will we stop in our search for books to include without reading them? It looks like a paradox. Without knowing the topic, we cannot find books; without reading the books, we cannot draw the border in the topic. For example, if we pick the topic of love, how are we going to decide on the topic and create a bibliography in the vast literature about love? Without reading the literature, we can&apos;t also draw a border.&lt;/p&gt;
&lt;p&gt;This paradox is the essence of syntopical reading.&lt;/p&gt;
&lt;p&gt;When we gather the books we want to read on a topic, how are we going to approach them? If we have a hundred books about the topic, it will take ten years to read them analytically. That&apos;s why inspectional reading is an essential part of syntopical reading. Within those hundred books, you &lt;strong&gt;shouldn&apos;t read any book analytically&lt;/strong&gt; before you read &lt;strong&gt;all of them inspectionally&lt;/strong&gt;. Inspectional reading will give you clues about the topic you are focused on and help you in your analytical reading of some books, and it will cut down your bibliographical list into a manageable size. If you&apos;re good at inspectional reading, you&apos;ll shortly recognize if a book says important things about the subject or not. Once you have identified, by inspection, that the book is relevant and you want to keep it in your bibliographical list, you can proceed to read it syntopically (not analytically). Analytical reading is for one book only.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Five Steps in Syntopical Reading:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Find the Relevant Passages:&lt;/em&gt;&lt;/strong&gt; In syntopical reading, your concerns come first. You are not reading the book to understand and learn the author&apos;s concerns and what they say; you are reading because you are trying to solve &lt;strong&gt;your&lt;/strong&gt; problem. Therefore, after you identified the books, take another inspection and find relevant passages that fulfill your needs. Don&apos;t do this step together with identifying the books because your understanding of the problem is often quite vague while identifying the books. Furthermore, the passages you find can be totally unrelated to what the author wrote that passage for. The author&apos;s intentions can be different, but they are not the people in front here; you are the master of the topic, and you make the call. It&apos;s about how you understand and interpret.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Bring the authors to terms:&lt;/em&gt;&lt;/strong&gt; While reading syntopically and facing various authors, we see that each uses different terminology. They may use different words for the same thing or the same words for different things. That&apos;s why we must force authors to use our language instead of using their language. This is very challenging as, so far, we have always tried to understand the author and put our thoughts and prejudices, and words aside. But we have to refuse to pick any author&apos;s terminology and take even one more step and also refuse that no terminology will be useful for us (author&apos;s terminology). That&apos;s why we must translate authors&apos; language to our language and bring every author into our terms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Getting the Questions Clear:&lt;/em&gt;&lt;/strong&gt; After we face the challenge of getting authors to use the same terms and propositions, we still have a difficult job. The best way to ask them questions is to ask them in order. The questions must be framed in a way that helps us solve our problems, and simultaneously, all authors should be able to (imaginably) answer them. Most probably, authors have no answers in their books, but we have to think and assume as if they answer the questions, how would it be? What would they say?
Moreover, the order of questions is important. While ordering questions, there are main categories in this order:
&lt;ol&gt;
&lt;li&gt;existence of the phenomenon or idea we&apos;re investigating.&lt;/li&gt;
&lt;li&gt;how the phenomenon is known&lt;/li&gt;
&lt;li&gt;the consequences of the answers we ask above.
The order can differ from subject to subject; it is the general guideline.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Defining the Issues:&lt;/em&gt;&lt;/strong&gt; If the questions are clear and we know that authors can answer in a way, then the issue is clear. However, we rarely see some problems: authors understand the question in the same way but answer in opposing ways. It&apos;s up to the reader to sort out these answers and group them. It&apos;s on the reader to relate these answers and join them as much as possible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Analyzing the discussion:&lt;/em&gt;&lt;/strong&gt; Our job as a syntopical reader is not merely to answer questions we prepared thoroughly. we have to accept that the truth can be found in opposing and conflicting answers, if it can be found at all. The truth can be found in the ordered discussion itself. To present this to our minds, we must ask questions in order, and we must be able to defend that order; we must show how the questions were answered differently and why. We must point to the feedback we examined to support our classification of answers. Only then can we claim that we analyzed the discussion and understood it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The opinions in the discussion can all be wrong; none of them can be true, or each opinion can be part of the whole truth. It&apos;s possible that all conflicting opinions are also false.&lt;/p&gt;
&lt;p&gt;If an analysis tries to prove or disprove any opinion or perspective in the discussion, it joins as another perspective or voice to the discussion and loses its objectivity. The syntopical approach tries to look at all sides but takes no sides. We must try to take all possible sides and try to exhaust them even though it&apos;s impossible.&lt;/p&gt;
&lt;p&gt;While doing so, we shouldn&apos;t join the discussion as a new voice; we should refer back to the original texts of authors and read them again and again and present the results to the audience, and quote the author&apos;s opinions in their own language.&lt;/p&gt;
&lt;h2&gt;Good Books vs. Great Books&lt;/h2&gt;
&lt;p&gt;There are good books, great books, and books that don&apos;t deserve anything more than skimming. Good books and great books are less than 1% of all the books out there. Within millions (or billions these days) of books, &amp;gt;99% don&apos;t deserve more than skimming. &amp;lt;1% deserves analytical reading. And within that 1%, only less than around a hundred books demand returning to it after one analytical reading. Good books are books that stretch your mind. They make demands on you. Once you analytically read them, you can put them on the shelf and not return back because you milked them dry and got all you needed. It advanced and grew your mind.&lt;/p&gt;
&lt;p&gt;When you come across a great book, and you analytically read and put it back on the shelf, something will call you back, and you&apos;ll want to read it again. You don&apos;t know what it is, but something inside you will tell you to read again, and when you do, you&apos;ll see/learn more than what you got the first time. That&apos;s a great book that adds more every time you read. And these books are very rare.&lt;/p&gt;
&lt;p&gt;We should all seek books to stretch our minds. TV and radio just give information we don&apos;t need. It&apos;s like a drug: we use and want more of it without any gain on our minds. When we train our minds, we don&apos;t deteriorate. Instead of artificial probs like TV and radio, we should seek out activating our minds.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/how-to-read-a-book-review-summary-and-notes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/how-to-read-a-book-review-summary-and-notes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>CTOs are expected to do more in 2024</title><link>https://candost.blog/journal/ctos-expected-to-do-more-in-2024/</link><guid isPermaLink="true">https://candost.blog/journal/ctos-expected-to-do-more-in-2024/</guid><pubDate>Tue, 01 Oct 2024 17:01:42 GMT</pubDate><content:encoded>&lt;p&gt;There is also the other side of &lt;a href=&quot;/journal/employer-market-will-change/&quot;&gt;this&lt;/a&gt;. Let&apos;s not put everything on C-level people; we can build some empathy.&lt;/p&gt;
&lt;p&gt;In the recent event I joined (CTO Craft Con Berlin), Füsun Wehrmann mentioned how the CTO role evolved and how expectations and role definitions have changed.&lt;/p&gt;
&lt;p&gt;What I learned from Füsun&apos;s talk was that the CTO role expanded from mostly operations to a business-driven approach.&lt;/p&gt;
&lt;p&gt;CTOs are now expected to know how to run a business, including finance, product management and strategy, and people.&lt;/p&gt;
&lt;p&gt;The most significant impact of this change requires CTOs to do more about transforming how the organization leads/manages budget and people, aligning the organization structure and roles to drive better product development, managing and up-skilling the talent, and hardening the hiring process.&lt;/p&gt;
&lt;p&gt;We can say that this is eventually the craft of executive leadership. However, I want to emphasize that CTOs affect organizational decisions; they are also under pressure to expand their knowledge to understand the business as a whole, including finance, product, etc., going beyond operational management and technical leadership. This is not an easy thing.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/ctos-expected-to-do-more-in-2024/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/ctos-expected-to-do-more-in-2024/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Employer market will turn into employee market in time</title><link>https://candost.blog/journal/employer-market-will-change/</link><guid isPermaLink="true">https://candost.blog/journal/employer-market-will-change/</guid><pubDate>Fri, 27 Sep 2024 15:25:42 GMT</pubDate><content:encoded>&lt;p&gt;Currently, the tech market is an employer market, not an employee. Organizations are using this to their advantage. But don&apos;t forget this situation will change in time.&lt;/p&gt;
&lt;p&gt;These days, during the interviews, employers can ask all candidates to fulfill two or three different roles, which they normally expect one person to do.&lt;/p&gt;
&lt;p&gt;These days, it&apos;s okay to ask for a manager to do hands-on coding along with all their other responsibilities. Yet, employers are not careful enough what they are asking for. A hands-on manager rarely works (except for startups).&lt;/p&gt;
&lt;p&gt;Employers can call everyone back to the office (hello, Amazon), expecting people to resign if they don&apos;t want to. Employers can play the cards, hiding behind &quot;cultural investment,&quot; even if they know it hurts the diversity and inclusion efforts they spent so much money and effort on.&lt;/p&gt;
&lt;p&gt;Employers have the upper hand because not everyone wants to change their jobs during these difficult times.&lt;/p&gt;
&lt;p&gt;However, employers have to keep in mind one thing. Employer branding is like an insurance. You have to make your contribution first before you need it. When the market returns to an employee market[^1], it will be too late for you to change and adjust your plans in the game.&lt;/p&gt;
&lt;p&gt;So, if you&apos;re holding interviews or planning to hire, think about your long-term plans. Hiring really good employees is still a big problem for everyone. If you&apos;re looking for a person who can do three roles simultaneously, maybe you should re-evaluate your strategy.&lt;/p&gt;
&lt;p&gt;Whoever is interviewing for a job these days, good luck!! Don&apos;t forget that if you fail an interview, the problem is not fully on you, especially now.&lt;/p&gt;
&lt;p&gt;[^1]: This expectation is a privilege. It doesn&apos;t apply to all markets; I can talk only about the tech market.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/employer-market-will-change/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/employer-market-will-change/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Short definition of a good software engineer</title><link>https://candost.blog/journal/short-definition-of-good-engineer/</link><guid isPermaLink="true">https://candost.blog/journal/short-definition-of-good-engineer/</guid><pubDate>Sun, 22 Sep 2024 15:25:42 GMT</pubDate><content:encoded>&lt;p&gt;Forget about career levels, roles, archetypes, or whatever is written in career frameworks. I have one filter to define a good software engineer.&lt;/p&gt;
&lt;p&gt;A good engineer is the one I, as a manager or peer, can turn my back on and leave after they get a task/problem, knowing that they will deliver the solution with good quality, again and again.&lt;/p&gt;
&lt;p&gt;It&apos;s the manager&apos;s responsibility to explain why they are doing that work, give all the context, and clarify open questions. After that, a good engineer can take the job, request help when they face challenges, ask more questions, coordinate with others, and then tell everyone who needs to know they are done with the work. They are proactive and reliable. That’s it.&lt;/p&gt;
&lt;p&gt;The size of the task or problem will vary depending on the person’s experience and knowledge level, of course. The expectations will definitely be different between junior and senior engineers. But even a good junior engineer—with very limited knowledge—can get a lot of work done and gain trust.&lt;/p&gt;
&lt;p&gt;Use whatever career progression framework you want; it doesn’t matter. A good engineer will be a good engineer everywhere if they do whatever I said above. Work details, expectations, processes, and technical and social challenges will differ in different organizations. That’s why if someone can keep being reliable and deliver the work with good quality in different organizations, they are, by definition, really good (or one of the best).&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/short-definition-of-good-engineer/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/short-definition-of-good-engineer/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Retiring from The Idea of Retirement</title><link>https://candost.blog/retiring-from-the-idea-of-retirement/</link><guid isPermaLink="true">https://candost.blog/retiring-from-the-idea-of-retirement/</guid><description>I changed my mind and will not wait for retirement. Instead, I will focus on aligning financial investments with activities I enjoy till my last breath.</description><pubDate>Sat, 14 Sep 2024 16:30:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;m not here to tell you that you should be working for a monthly salary for the rest of your life. Also, it’s not about passive income or financial independence and definitely not a promoter of a hustle culture. That&apos;s not the main idea. The main idea is this: accept that you should do things that bring you joy AND align your financial investment &lt;strong&gt;for them&lt;/strong&gt;, and do this &lt;strong&gt;till your last breath&lt;/strong&gt; without stopping and relying on a monthly retirement salary. Now that is out, let’s go into why.&lt;/p&gt;
&lt;p&gt;People tend to think, at least in Germany and Türkiye, that they will suddenly stop what they are doing after a certain age and let younger generations pay for their salary. That’s something I struggle to accept.&lt;/p&gt;
&lt;p&gt;The problem with this mentality is that people rely on it too much. They postpone their lives &lt;em&gt;today&lt;/em&gt; and restrict themselves from doing what they want. Take me as an example. My retirement day is practically at least thirty years ahead. Until recently, I have been acting like my job was a disease that will go away in the future. I believed if I put in the effort, I could retire earlier. It was like a drug addiction.&lt;/p&gt;
&lt;p&gt;However, I was addicted to being in my comfort zone. I was afraid of discovering what I wanted to do every day. I also knew I would work to make it happen if I could chase that. But, as I avoided that daunting task, I let myself slide into the comfort of being a hard follower of the system. I researched retirement mechanisms. The solutions I found were focused on making my retirement better or earlier.&lt;/p&gt;
&lt;p&gt;The system is built well in Germany, where I live. All employees and employers &lt;em&gt;have to&lt;/em&gt; pay a mandatory pension contribution. There are also government incentives to invest more—to increase my retirement salary. Yet, all of these force me to stay in the system. They don&apos;t even want me to look outside. The system is all I need, and as long as I stay inside, I’m “covered.” But actually, I’m not.&lt;/p&gt;
&lt;p&gt;First, the system is &lt;a href=&quot;https://www.dw.com/en/pension-fund-crisis-looms-in-germany-as-population-ages/a-68566053&quot;&gt;facing struggles&lt;/a&gt;. The system is resilient enough to survive for decades with so many patches around it. However, as the world population ages, the system will eventually be overhauled. As the young generation is &lt;a href=&quot;https://www.pensionsage.com/pa/Research-highlights-prevalence-of-young-people-opting-out-of-pension-contributions.php&quot;&gt;less interested&lt;/a&gt; in paying for the elderly, has less trust in the system, and wants to live in the moment more instead of getting delayed gratification, they don’t opt-in to the system. This shift alone puts the system under heavy stress.&lt;/p&gt;
&lt;p&gt;We see new ideas and brave plans to solve the issues of the existing system, like universal basic income. However, as the minimum wage always falls behind the current prices, basic income will fall behind, too. People with basic income will have to work their whole lives to cover ever-increasing prices. This brings me to my second point.&lt;/p&gt;
&lt;p&gt;The retirement system is not too old, actually, albeit it feels like an eternity. We don&apos;t need to go too far. Thanks to Otto von Bismarck, Germany introduced the first old-age insurance program in 1889. Simply put, my father’s grandfather didn&apos;t have the retirement option. He worked until he passed away. Although he probably had tons of problems, he never thought about retirement. He tried to raise kids who would look after him when he was old. That was the method back then. Now, we have replaced kids and relatives with government entities and private companies to provide support for old age.&lt;/p&gt;
&lt;p&gt;The government providing this service helped people focus on other things beyond survival and getting enough kids to support them. At least, in theory. Similar to the idea of a basic income, when we added the retirement system, it wasn&apos;t enough to support anyone&apos;s dreams. It &lt;strong&gt;partially&lt;/strong&gt; removed the necessity of having kids. Right now, in most cases, pension income is &lt;em&gt;barely enough&lt;/em&gt; to provide food and shelter. Thus, people have to work toward having enough savings. Then, when they retire, they can maintain their standards (whatever they are). The system doesn’t aim to give you a comfortable retirement life.&lt;/p&gt;
&lt;p&gt;The system focuses on getting more out of you while it can (when you are younger). So, you work more, save up as much as possible, and join additional retirement initiatives—bringing more economic value. The system wants you to contribute more &lt;strong&gt;at the cost of your time&lt;/strong&gt;. That brings me to the famous Seneca.&lt;/p&gt;
&lt;p&gt;He says, &quot;In guarding their fortune, men are often closefisted, yet, when it comes to the matter of wasting time, in the case of the one thing in which it is right to be miserly, they show themselves most prodigal.&quot;&lt;/p&gt;
&lt;p&gt;We waste our time like it’s an unlimited resource. It’s not new to anyone that &lt;em&gt;life is actually short&lt;/em&gt; and can end anytime. From this perspective, investing in retirement that will come in 30+ years and sacrificing living fully today sound unreasonable.&lt;/p&gt;
&lt;p&gt;Seneca continues, “Can anything be sillier than the point of view of certain people—I mean those who boast of their foresight? They keep themselves very busily engaged in order that they may be able to live better; they spend life in making ready to live!”&lt;/p&gt;
&lt;p&gt;To me, sacrificing today to invest time for retirement is literally what he says, “…spending life in making ready to live.” So, how do we stop wasting time and begin living? First, we need to find out what “living” means.&lt;/p&gt;
&lt;p&gt;It means having a purpose and accepting that time is limited. It means deliberately choosing what to do and what not to do rather than allowing others to steal time from our lives. Contrarily, retirement means you have found and fulfilled that purpose; it means you’re done. And that’s where I struggle.&lt;/p&gt;
&lt;p&gt;For me, &lt;a href=&quot;/on-the-purpose-of-life/&quot;&gt;the purpose of life is searching for that purpose.&lt;/a&gt; That’s the job. The chase, the utter determination in the effort of search, the relentless seeking. It forces you to adapt to the changing world, not build expectations for the future that one day all struggle will stop. It demands training like an athlete for that purpose, enjoying the time with an ever-changing priority list. It asks you not to lose time with seemingly innocent but &lt;a href=&quot;/my-experience-living-without-social-media/&quot;&gt;utmost time-wasters like Facebook, Instagram&lt;/a&gt;, or &lt;a href=&quot;/no-more-debate-with-latest-or-daily-news/&quot;&gt;the latest news&lt;/a&gt;. It invites you to make the journey more enjoyable by building things that matter—like real relationships with family and friends and community &lt;a href=&quot;/journal/rituals-not-traditions/&quot;&gt;around rituals&lt;/a&gt;—and seeking &lt;a href=&quot;/speaking-writing-and-high-quality-ideas/&quot;&gt;timeless ideas&lt;/a&gt;. To be able to do all, it also tempts you to make the journey safer.&lt;/p&gt;
&lt;p&gt;This is where the government incentives and financial investments come in. The journey can only be safer with a &lt;em&gt;flexible&lt;/em&gt; financial investment strategy. Instead of relying only on forty years of commitment to retirement schemes, the aim should be to build a portfolio to cover unfortunate events and have enough savings to cover detours during the journey. Building this portfolio is easier said than done. Learning where to invest always starts with a goal. Once the goal is set on &lt;strong&gt;making a safer journey&lt;/strong&gt;, the rest is another journey—making mistakes and learning from them.&lt;/p&gt;
&lt;p&gt;All moments, directions, decisions, steps, or detours are part of the main journey. All of them are expeditions full of surprises. However, once we focus on &lt;a href=&quot;/goals-and-existence/&quot;&gt;having the journey rather than setting a goal&lt;/a&gt;, life becomes more manageable. Even though some actions might be similar to those who &lt;strong&gt;work for&lt;/strong&gt; their retirement, we can choose the activities we enjoy today, not those that drag us, and align our money to build a safer passage over high mountains.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/retiring-from-the-idea-of-retirement/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/retiring-from-the-idea-of-retirement/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building A Strong Ownership Culture in A Team</title><link>https://candost.blog/strong-ownership-culture-in-a-team/</link><guid isPermaLink="true">https://candost.blog/strong-ownership-culture-in-a-team/</guid><description>Building a culture of ownership and continuous learning through one-one-ones, delegation, and clear goals, while acknowledging the effort and adaptation needed.</description><pubDate>Fri, 16 Aug 2024 08:43:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been advocating for giving space to the people and creating an ownership culture in the team for a while. I’ve seen many managers fail in these and become micro-managers and get stuck in the same role, failing to grow as a leader, too.&lt;/p&gt;
&lt;p&gt;I had some concerns about creating this culture when I formed a new team before. The real challenge behind forming a new team is the absence of a common culture, but it is not an empty canvas. The team members inherit the culture from their previous teams (even within the same company, teams have their own cultures). Yet, the team still needs to find its own. I did some research, observed other leaders, and learned from them.&lt;/p&gt;
&lt;p&gt;The path I took and the applied strategies worked. I then reused some of these strategies in two other (existing) teams and also worked. My sample size might still be small, but I can say that it works for different organizations, teams, and people for a reason.&lt;/p&gt;
&lt;p&gt;I realized that the strategies give people a purpose and motivation. Once they catch that hook, they become intrigued by what they are doing, and their engagement increases.&lt;/p&gt;
&lt;p&gt;Of course, these strategies are still not everyone’s trait. We also had a few people who left because they wanted something else. And that’s okay—it will always be.&lt;/p&gt;
&lt;p&gt;It is time to talk about our path and the strategies I used and still use. Each of these strategies can be found in books, nothing novel. I will keep them short and focus on their essence, as they can also become their own articles.&lt;/p&gt;
&lt;p&gt;The best leaders I&apos;ve observed aim to create a culture where people&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;take full ownership &lt;em&gt;proactively&lt;/em&gt; (accountability + responsibility),&lt;/li&gt;
&lt;li&gt;learn (growth mindset),&lt;/li&gt;
&lt;li&gt;help each other (trust),&lt;/li&gt;
&lt;li&gt;bring themselves to work as they are, and&lt;/li&gt;
&lt;li&gt;help others deliver work effectively and efficiently.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the team is immature or full of inexperienced people, creating this culture takes immense time and energy from the leader. Leaders have to &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;let go of many responsibilities&lt;/a&gt;, one by one, to succeed. Without having experienced engineers helping, they won’t be able to delegate anything. However, &lt;a href=&quot;/how-to-delegate-anything-successfully/&quot;&gt;they have to find a way to let things go to increase their impact on the organization&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I get help from individual team members to manage the technical side. I provide them with context, bring clarity to the work, and make prioritization clear. Then, I coach them to find their way around. It&apos;s not as easy as it sounds, and I’m still trying to find the balance here. However, it all starts with holding regular one-on-ones.&lt;/p&gt;
&lt;h2&gt;Leading Through One-on-Ones&lt;/h2&gt;
&lt;p&gt;A while ago, I &lt;a href=&quot;/effective-1-on-1-meetings-own-your-one-on-one-meeting/&quot;&gt;wrote about how I hold one-on-ones with my team&lt;/a&gt; and what I expect from each team member. I won’t repeat it here, but I focus mostly on how to lead people through one-on-ones.&lt;/p&gt;
&lt;p&gt;As an engineering manager, I put a lot of work and energy into one-on-ones instead of day-to-day hands-on software development (unless/until it’s needed). one-on-ones are the best way to build trust and rapport, &lt;a href=&quot;/maximizing-personal-growth-by-understanding/&quot;&gt;exchange feedback&lt;/a&gt;, and create alignment.&lt;/p&gt;
&lt;p&gt;After a certain amount of regular one-on-ones (my sweet spot is between 2-3 months), people start bringing up problems and sharing information without me asking anything. We discuss those problems and exchange opinions. Once I understand the person’s background, skills, and capabilities, these discussions evolve into a different shape as I nudge them to bring recommendations along with the problem.&lt;/p&gt;
&lt;p&gt;If someone sees a problem, they almost always have an opinion on how to approach it. &lt;strong&gt;My goal, as a leader, is to quickly set the stage for them to share those opinions freely and seek feedback as early as possible.&lt;/strong&gt; Then, I can guide and help them grow. If they don’t share any opinions and, instead, expect a command, it indicates that they either don’t have the skills and experience yet or are hesitating to share their thoughts. For the former, we invest in building their skills. For the latter, we go back to square one. Hence, one-on-ones are the single place where these things become apparent, and without one-on-ones, other strategies will never work.&lt;/p&gt;
&lt;p&gt;When I said, “I put a lot of work and energy on one-on-ones instead of day-to-day hands-on software development (unless/until it’s needed),” it doesn&apos;t mean that I am away from discussions, problems, or building solutions. I still challenge their recommended solution, nudge them to consider alternatives, or offer an alternative if they can’t find one. I offer my help, and we work on it together until the team evaluates trade-offs and is comfortable with the solution.&lt;/p&gt;
&lt;p&gt;Some people still feel lost with me guiding them. In this case, I handhold them, and we really work together as close as possible. However, if they know what they are doing and are experts on the topic, I leave them as free as possible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adjusting the one-one-one strategy is the demanding part of leading because every person is unique and needs different levels of guidance in different stages of their careers.&lt;/strong&gt; However, the most rewarding part of this is seeing people grow with purpose.&lt;/p&gt;
&lt;p&gt;Another side effect of one-on-ones is extracting new mechanisms that can be implemented in the team.&lt;/p&gt;
&lt;h2&gt;Implementing Mechanisms&lt;/h2&gt;
&lt;p&gt;I was inspired by the book &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt; when I read, &quot;Instead of preaching, implement mechanisms that will support ownership.&quot; I implemented several strategies, such as auto-vacation approval and expert decision-making. The team members are free to take a vacation anytime they want; they can make their own decisions with a condition: instead of asking for approval, they look at our roadmap and commitments and decide whether they can take a vacation or not. If they are unsure, they can ask for it anytime.&lt;/p&gt;
&lt;p&gt;Expert decision-making was another strategy that allowed people to decide on the approach, solution, and next step on their own if they were domain experts. Everyone on the team has access to every system and data and can use whatever they need for their work. Moreover, they can also decide how a feature should be implemented. We, as a product manager or an engineer manager, rarely write granular requirements (except business rules) for the engineers; we want them to discover and ask questions. If they need guidance, they reach out. At first, this looks like wasting engineers&apos; time, but it’s quite the contrary; once they understand why and what they are doing, they produce better work. And we give them the why and what part of the problem; they focus on how.&lt;/p&gt;
&lt;p&gt;These are just two mechanisms and not the only ones. The trick is showing them that they have the power to decide on more than they think they can and guiding them through risks. This takes a lot of effort to establish and demands adjusting the team’s rituals and processes as well. But before all, it requires transparency.&lt;/p&gt;
&lt;h2&gt;Transparency Means Context and Clarity&lt;/h2&gt;
&lt;p&gt;Every time leaders talk about transparency, they struggle to understand what people expect from them. There is always a question in their minds: how much can I share?&lt;/p&gt;
&lt;p&gt;The most suitable answer I&apos;ve found to &lt;strong&gt;demystify transparency is about giving context and providing clarity&lt;/strong&gt;. If people don&apos;t know what&apos;s around and what’s coming next, they can&apos;t decide whether to take a vacation or not. &lt;strong&gt;If they don&apos;t know the mission, strategy, and roadmap, they can&apos;t decide how to implement a feature or design a system.&lt;/strong&gt; If the person has enough context to make an informed decision, that is enough. If their decision is too risky without knowing certain things, I focus on bringing them context and clarifying every open question they have in their minds.&lt;/p&gt;
&lt;p&gt;I learned that giving a person every possible piece of information equips them to solve a problem (and &lt;em&gt;that&apos;s what matters&lt;/em&gt;). Transparency is not about unhidden things; it&apos;s about sharing the proper context with people and equipping them to solve a problem or make a better decision.&lt;/p&gt;
&lt;p&gt;Once they are equipped with information, the next intuitive step is setting clear goals and keeping people accountable.&lt;/p&gt;
&lt;h2&gt;Setting Goals and Accountability Cadence&lt;/h2&gt;
&lt;p&gt;In this stage, there are three aspects of a team: &lt;strong&gt;having individual goals, team goals, and, in their intersection, an initiative ownership mindset.&lt;/strong&gt; These should be established simultaneously in a team. Only after having these established can we talk about accountability.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Individual Goals&lt;/strong&gt;: During our weekly or biweekly one-on-ones, we focus on anything my direct report has in mind (I start the meeting with the question, “What’s on your mind?”). One-on-ones are sometimes day-to-day work and sometimes challenges they face. However, I set separate 30-minute one-on-ones recurring every 6-weeks dedicated to personal development. I first understand the person’s background, wishes for change, and lacking skills while assessing the organization’s needs in my mind (in the best scenario, they should be aligned; however, it’s difficult to always achieve this). Then, together with the direct report, we develop a maximum of two to three goals with a target date set after six months. During the six-month period, we review the progress in every one-one-one and identify if the person needs any additional support. Having goals and closing them after six months helps people form &lt;strong&gt;an accountability cadence&lt;/strong&gt;. As they are responsible for their own development, when they don’t achieve goals, together, we look for “the why” and change what’s needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team Goals&lt;/strong&gt;: Besides individual goals, we have quarterly &lt;a href=&quot;/books/measure-what-matters-by-john-doerr-summary-review-and-book-notes/&quot;&gt;OKRs (Objective Key Results)&lt;/a&gt; set for the team. We often split an OKR into milestones. We then split these milestones into two-week-cycle (or sprint in Scrum) goals. The cycle goals are focused on achieving something by the end of the cycle. Having three levels (OKR, milestone, cycle) of team goals helps the people structure their work. Also, cycle goals give a constant feeling of achievement, which motivates people, drives them, and makes them feel valued. When we don’t achieve them, it becomes good feedback for which we can act.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Initiative Ownership&lt;/strong&gt;: In staff planning, I assign a dedicated person responsible for an OKR and its progress, splitting the work into milestones (and correctly sized smaller chunks) and ensuring the milestones are achieved. Each quarterly Objective or Key Result has an owner from the team. These owners also own the project’s milestones, which are represented by Epics on Jira. Epics are a chunk of work that should be completed within a certain timeframe. The initiative owner is responsible for splitting the epic into tasks/stories together with the people working on the feature/project and reducing the risks by making initial discoveries. Furthermore, initiative owners also manage stakeholders up to a certain point (e.g., communicating blockers and sharing progress). The whole system helps the team learn how to lead without authority and be accountable for the milestone’s delivery.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While three parallel approaches stretch the team’s and individuals’ skills, bring a sense of achievement, and give them “a seat on the table,” not everyone has the skills to work in this system. Moreover, most of the individual goals demand acquiring new skills or learning something more deeply. That’s why we invest in building expertise.&lt;/p&gt;
&lt;h2&gt;Investing in Expertise&lt;/h2&gt;
&lt;p&gt;People are often left alone when it comes to becoming experts. Many managers don’t take the time to help others become experts at something. As the managers are less knowledgeable on the deep topics engineers do, they feel lost in supporting their team’s individual goals.&lt;/p&gt;
&lt;p&gt;In our case, once people started building up an ownership mindset, I realized that they lacked expertise in various skills, albeit being good at their jobs. The knowledge they had was good enough for day-to-day work yet not deep enough for solving complex problems. Simply put, they didn&apos;t have enough tools on their tool belt. And that&apos;s where we put focus.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Defining individual and team goals helped us see where we lack the expertise.&lt;/strong&gt; Then, we gave people time to research and learn and also created opportunities to mentor each other. When these were not enough, we found trainers within or outside the company.&lt;/p&gt;
&lt;p&gt;In one example, we realized that a team was missing deep knowledge—a granular understanding of Coroutines work in Kotlin. While improving our systems, they struggled to find good solutions due to a lack of knowledge. We tried to find mentors at first, but we needed a quick solution that would work for engineers across teams. Mentorship wasn’t a good choice. There, we also realized that people spending their education budget on getting individual training would cost more than group training. This is why we organized a few hands-on workshops with an external trainer over a few days to ramp up the knowledge as a group. After the workshop, they were confident about tackling the challenges we faced, and this also gave everyone a base to talk about and solve common problems.&lt;/p&gt;
&lt;p&gt;While we invest in people’s expertise through mentorships, workshops, and more, I believe the real deal is learning by doing. Anyone can learn the theory if they put in the time and energy, but if they can’t practice those skills, they will be unable to retain the information. This is the place where the delegation comes into play. It’s not easy, but it brings remarkable progress.&lt;/p&gt;
&lt;h2&gt;Delegation for Career Growth&lt;/h2&gt;
&lt;p&gt;Once people started building expertise and stepping up to lead initiatives, the next logical step was creating opportunities (especially for individual goals) &lt;a href=&quot;/how-to-delegate-anything-successfully/&quot;&gt;through delegation&lt;/a&gt;. Delegation also has a side effect: investing in our own growth as managers.&lt;/p&gt;
&lt;p&gt;As leaders, we often deliberately focus on things we do well. We take real care of our responsibilities, but these do not always necessarily contribute to our career growth.&lt;/p&gt;
&lt;p&gt;Tasks such as meeting facilitation, backlog refinement, feature delivery planning, or technical refinement can be delegated to senior/staff engineers depending on people&apos;s career plans and skills. If the manager already knows how to facilitate meetings, refine the backlog, or plan the delivery and did it many, many times, it’s a good starting point to delegate. &lt;strong&gt;Once the team members work on these tasks, they also learn how to approach holistically, the complexity of work, the details of the feature/product, and how to manage stakeholders.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This delegation is not restricted to “soft skills.” For example, we delegated Observability improvements to one person who wanted to improve their knowledge around observability, monitoring, and alerting. That helped the person to develop, and the team closed their gaps. And now, when someone has a question or struggles with something in that area, this person jumps in and gives them help and mentors them.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Side read: &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;The Real Difficulty of Engineering Leadership is Not What They Say&lt;/a&gt;.)&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;All of these may sound like a lot of work. All I can tell you is yes, it is. It’s a long journey, and we put a lot of energy and time into working through all of these and more others that I didn’t mention here. We had many frustrating moments, failed remarkably in each section, learned a ton, and tried a few things differently. But isn’t this the work of engineering leadership? I think it is. You plan long-term, take a step, adjust it until it works, and take another step while keeping your head up and focused on the future. Once I put a holistic picture and long-term vision in my head, all of the small actions we took were aligned and aimed at the final picture.&lt;/p&gt;
&lt;p&gt;Needless to say, the whole process is not (and will never be) a set-once-and-forget-it. It’s a continuous process and adaptable to anyone. You need to be resilient, relentless, and focused.
Moreover, you have to have the people who want to put the work &lt;strong&gt;together&lt;/strong&gt; with you. If you have a team of missionaries who &lt;em&gt;just&lt;/em&gt; implement the code and don’t care about the rest, then you won’t get any results. Also, you have to have the right organization—not every organization is the best candidate to implement the whole system. However, if your organization develops its own product, then you can probably apply a few things from here to your team, if not the whole system.&lt;/p&gt;
&lt;p&gt;I’ll finish with a quote I love and keeps me motivated to look and learn more things:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“If the only tool you have is a hammer, it is tempting to treat everything as if it were a nail.” — Abraham Maslow&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/strong-ownership-culture-in-a-team/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/strong-ownership-culture-in-a-team/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Krishnamurti and Seneca on Freeing the Mind</title><link>https://candost.blog/krishnamurti-and-seneca-on-freeing-the-mind/</link><guid isPermaLink="true">https://candost.blog/krishnamurti-and-seneca-on-freeing-the-mind/</guid><description>Krishnamurti recommends to reject culture and Seneca says don&apos;t follow the crowd. Both are the same but one is more applicable.</description><pubDate>Wed, 31 Jul 2024 10:40:00 GMT</pubDate><content:encoded>&lt;p&gt;Jiddu Krishnamurti, &lt;a href=&quot;/goals-and-existence/&quot;&gt;whom I admire for his ideas&lt;/a&gt;, talks about what binds a person.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Cultures create religions but not the religious man. The religious man comes into being only when the mind rejects culture, which is the background, and is, therefore, free to find out what is true. […] Such a person is not an American, an Englishman, or a Hindu but a human being; he does not belong to any particular group, race, or culture and is therefore free to find out what is true, what is God. No culture helps man to find out what is true. Cultures only create organizations which bind man.”
—Jiddu Krishnamurti&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When Krishnamurti talks about the cultures, he doesn’t say anything specific to any culture or doesn’t choose anything fanatically. He says we must abandon—or reject—our cultural background to find what’s true. He points out that the influence we grew up with binds our thinking and how we see the world. Loosening our ties with our background seems like a solid path to understanding what’s true. Yet, we rarely see it happening.&lt;/p&gt;
&lt;p&gt;Looking at the extreme right-wing politics that are popular these days. Most of the time, people stick to their cultures and object to any changes from a newly joining foreigner or an evolving world. Instead of loosening the ropes from the culture, people encircle their minds with whatever they have learned until now.&lt;/p&gt;
&lt;p&gt;Therefore, as much as Krishnamurti’s way is an excellent challenge to think and understand ourselves, it is imperfect.&lt;/p&gt;
&lt;p&gt;People cannot untie themselves from the culture they are in, let alone reject it. The culture represents their knowledge, experience, and life. It’s what it brought the person to today. Even though they might join another culture, change themselves, or even live in solidarity, they will always carry the remarks from a culture they are (or were) part of. Removing the cultural constraints from the mind is unattainable. I know it’s a philosophical approach and understand the intention, but I can’t agree with its applicability.&lt;/p&gt;
&lt;p&gt;Also, &lt;a href=&quot;https://sive.rs/fish&quot;&gt;the fish don’t know that water exists&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I think Seneca offers a better approach:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Do you ask what you should avoid more than anything else? A crowd.”&lt;/p&gt;
&lt;p&gt;“Clothe yourself in the mind of a great man; stand aside for a while from the opinions of the common crowd.“ — Seneca&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is easier to recognize and apply. When you follow any group fanatically and think that they are taking the truest approach, then you’re in danger. You must seek the right way instead of following a group just because it’s more crowded. When you do, you’ll often feel alone.&lt;/p&gt;
&lt;p&gt;I often felt that I didn’t belong to a group I was in. Yet, it didn’t help me find “the right way” so far. Maybe finding it is chasing the impossible; it’s not achievable. When we get closer to it, we can feel that it’s wrong. We can think that life’s meaning should be something else. I don’t know.&lt;/p&gt;
&lt;p&gt;However, I’m also happy to let this search go. Instead of seeking my life’s purpose, I’m happy to try getting rid of my cultural and religious backgrounds and waiting for life to show itself—accepting that I won’t be able to achieve everything in life according to any group’s definition and will never passionately follow a single path.&lt;/p&gt;
&lt;p&gt;Maybe that’s what Krishnamurti talks about...&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/krishnamurti-and-seneca-on-freeing-the-mind/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/krishnamurti-and-seneca-on-freeing-the-mind/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Give Feedback on UI/UX Design as an Engineer</title><link>https://candost.blog/how-to-give-feedback-on-design-as-an-engineer/</link><guid isPermaLink="true">https://candost.blog/how-to-give-feedback-on-design-as-an-engineer/</guid><description>Engineers should focus on two fundamentals when giving feedback on UI/UX designs: understanding the users&apos; needs and feasibility.</description><pubDate>Sat, 27 Jul 2024 09:20:00 GMT</pubDate><content:encoded>&lt;p&gt;We had a conversation with one of my designer friends, &lt;a href=&quot;https://www.linkedin.com/in/maria-duddy-8934b567&quot;&gt;Maria&lt;/a&gt;, a while ago. We talked about the usefulness of engineers&apos; feedback on designs and how to make it helpful. I pondered the topic after our discussion.&lt;/p&gt;
&lt;p&gt;My friend was doing user research and experimenting with different flows to design a new feature with the best user experience. After a few ideas were shaped and passed the usability testing, they prepared some wireframes for different flows to talk to software engineers and get some early feedback. They walked through the ideas and were ready to take notes. The feedback they received varied, ranging from &quot;I like it&quot; to challenging users&apos; behavior. That’s where we started our conversation and realized that many engineers approach design-walkthroughs incorrectly.&lt;/p&gt;
&lt;p&gt;Engineers should approach the designs with two fundamentals in mind, in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Understanding the users and their problems&lt;/li&gt;
&lt;li&gt;Evaluating the designs’ feasibility&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When it comes to understanding users’ needs, there is no distinction between the two groups. Many engineers can argue that it’s the product designers’ job and they should build solutions to solve users’ problems. As engineers are responsible for building that solution, they also must understand the user before giving any feedback on feasibility.&lt;/p&gt;
&lt;p&gt;In my experience, engineers lack this part the most. It’s impossible to decide how to build a system correctly without knowing the user’s needs. Yes, it’s possible to &lt;em&gt;implement&lt;/em&gt; a UI design without understanding the user. Yes, it’s also possible to give feasibility feedback. I have done both in my career. However, when it comes to making the feedback &lt;strong&gt;useful&lt;/strong&gt;, it’s very difficult to offer an alternative solution to the design team.&lt;/p&gt;
&lt;p&gt;Once engineers understand users’ needs, the focus shouldn’t be on “liking the design” or “finding it makes sense” (I heard these words from engineers many times) but rather on feasibility—&lt;strong&gt;thinking about how difficult it is to implement the solution&lt;/strong&gt;. This is where the debate should be between design and engineering, bringing out the real value of collaboration.&lt;/p&gt;
&lt;p&gt;Designers get early engineering feedback to measure feasibility without wasting too much time on small details. While considering implementation details, engineers should be able to offer solutions like, “Implementing this design is complex and will require a lot of time to get it right; how about we do this section a bit differently?” or “How about adjusting the flow in ‘X’ way and that can help us to resolve a few complex bugs too?” These comments have great value for both designers and engineers and focus on finding the best possible solution.&lt;/p&gt;
&lt;p&gt;After that, giving overall feedback on designs is still useful and helpful. Any feedback can give insights and spark new ideas for designs. However, the main focus should always be understanding the user and then giving feedback on feasibility.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;*P.S.&lt;/strong&gt; I didn&apos;t focus why design teams hold these feedback sessions on this post but Maria later pointed out that they use the sessions to invite everyone to ideation and ensure the team is up to date throughout the intire process. I think it&apos;s a great addition to collecting feedback; aligning and involving everyone is always a good way to foster culture of innovation.*&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-to-give-feedback-on-design-as-an-engineer/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-to-give-feedback-on-design-as-an-engineer/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Integrating Deep Work into Manager’s Life</title><link>https://candost.blog/notes/74/</link><guid isPermaLink="true">https://candost.blog/notes/74/</guid><pubDate>Fri, 26 Jul 2024 15:57:08 GMT</pubDate><content:encoded>&lt;p&gt;In a manager’s life, the manager tries to immerse themselves in deep work but fails to do so and ends up in shallow work due to many meetings they can’t avoid. In everything they do, they try to restore energy that was depleted in sudden bursts of shallow but demanding work. That’s, at best, inefficient and ineffective.&lt;/p&gt;
&lt;p&gt;They struggle (at least I) to find a way to organize their workload and time, but they are often not the owner of their schedules. The nature of the work demands adapting to other people’s schedules. Hence, they need to be extra mindful.&lt;/p&gt;
&lt;p&gt;:::note[Note for myself as of 2024-07-26]
I keep thinking about what I want from this world or my life. Yet, I also ponder if that’s even necessary.
If there is an activity where I can feel satisfied, immersed in deep work, work on a better schedule (than many meetings every day), and not commute, it becomes easier to do deep work and not count myself as busy. Then the rest can be a real rest, and I can also have idle time to replenish my energy. Instead of a curse, I can embrace and enjoy busyness and even keep myself very active in it.
:::&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Management Craft&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/16a/&quot;&gt;16a: The Meetings of a Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/16b/&quot;&gt;16b: Clarify the expected outcome and the action it requires in written form to get it out of your mind&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/62/&quot;&gt;62: Energy Management at Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/&quot;&gt;Csikszentmihalyi, Newport, and Pressfield on Creativity, Time and Deep Walks in Remote Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/74/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/74/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Nature heals</title><link>https://candost.blog/journal/nature-heals/</link><guid isPermaLink="true">https://candost.blog/journal/nature-heals/</guid><pubDate>Fri, 26 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Nature heals all the pains, sufferings, struggles, and challenges. Watching the sunset makes you forget the daily concerns; watching sunrise can give you another perspective.&lt;/p&gt;
&lt;p&gt;Sitting idle on the beach adds no value to your life in terms of modern expectations; however, it’s one of the most valuable and precious moments you can experience. The sound of the waves, people chatting in a distance on the beach, and music coming from far away that you can’t even distinguish its genre; they all make you feel something—a feeling that is hard to name. Maybe, you don’t need to name it even; you only feel. You only experience.&lt;/p&gt;
&lt;p&gt;Especially when you don’t worry about recording the moment on your phone, the moment you see with your eyes instead of seeing it through your phone’s lens, that moment itself becomes scratched to your brain, to your heart, and to your soul. That moment you never forget and can live anywhere again and again.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/journal/2024-07-22-20.16.25.jpg&quot; alt=&quot;Sunset in Ören, Burhaniye, Balikesir, Türkiye. A cat is in the foreground and in the middle there is a Turkish flag and sun is setting at the back behind the Aegean sea and mountains&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/nature-heals/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/nature-heals/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Two words to change mind</title><link>https://candost.blog/newsletter/mediations-7/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-7/</guid><description>Learning mental models</description><pubDate>Tue, 16 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The reason I’m sending these emails is that I’m challenging myself to write my thoughts to make sense of the world around me. Also, I know that some people have only discovered this road. But it doesn’t mean they share the same experience. Many people travel to the same places, but everyone sees things differently.&lt;/p&gt;
&lt;p&gt;Many methods and strategies are already out there waiting to be digested and turned into practice. Yet we don’t take the time to look outside, apply what we find, and make our decision-making easier and better, resulting in a less risky, more rewarding, wealthy, and delighted life.&lt;/p&gt;
&lt;p&gt;But…&lt;/p&gt;
&lt;p&gt;The situation often seems like a giant tangled ball of yarn threads—it is impossible to know where to start. Whenever we begin untangling a thread, another mess appears. However, I finally found a thread to pull, which split the ball into pieces.&lt;/p&gt;
&lt;p&gt;A few years back, I learned two words that not suddenly but progressively changed the direction of my life. Researching what lies underneath these two words and practicing what I have learned enhanced not only my life but also those of others around me. Those two words were &lt;strong&gt;mental models&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Mental models are frameworks for understanding and interpreting the world around us. They help us reflect reality correctly, eliminate misperceptions, and guide our thought processes.&lt;/p&gt;
&lt;p&gt;A good example is &lt;a href=&quot;/chestertons-fence/&quot;&gt;Chesterton’s fence&lt;/a&gt;: it tells you to understand the reasons behind an established practice. Software engineers tend to rewrite already working code to make it more &lt;em&gt;modern&lt;/em&gt;. People often trust themselves too much and remove some &lt;em&gt;seemingly unnecessary&lt;/em&gt; parts of the code during the rewrite, resulting in bugs. Thinking with Chesterton’s fence, they pause before deleting the old code and ask, “Why was the code designed like this in the first place?” And that question is the essence. The answer will reveal valuable information that is often missed.&lt;/p&gt;
&lt;p&gt;Another mental model is second-order thinking, used to understand decisions&apos; ripple effects and long-term consequences. In first-order thinking, we look for what would happen if we decide on something, focusing on immediate results. In second-order thinking, we look for the consequences of the results. We actively think about the indirect effects the first decision will cause later. In the above example, engineers can rewrite the code in various ways. Using this mental model, they can choose the best strategy to prepare the code for the future.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The existence of mental models&lt;/strong&gt; was probably the best thing I’ve ever learned so far. Knowing various mental models across disciplines, such as physics, economics, psychology, business, and systems and complexity theories, helps me make sense of the world around me. (We’ll not get into all of them, but I’ll write about them from time to time and introduce you to a few crucial ones.)&lt;/p&gt;
&lt;p&gt;As Charlie Munger, one of the best investors who have ever lived, says in his talk on April 14, 1994:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“You can’t really know anything if you just remember isolated facts and try and bang ‘em back. If the facts don’t hang together on a latticework of theory, you don’t have them in a usable form.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The goal is neither memorizing the facts of the world nor mental models but to use these models to turn the information we have been bombarded with into well-shaped knowledge.&lt;/p&gt;
&lt;p&gt;Here is &lt;a href=&quot;https://fs.blog/mental-models/&quot;&gt;a quick list of mental models&lt;/a&gt; from the Farnam Street Blog. Bookmark the link, skim it through, read a few models here and there, or indulge in them.&lt;/p&gt;
&lt;p&gt;Until next time,
Candost&lt;/p&gt;
&lt;p&gt;P.S. &lt;a href=&quot;https://www.stripe.press/poor-charlies-almanack&quot;&gt;A marvelous book is available free on a greatly designed website.&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Some Things I Found Great&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://paulgraham.com/read.html&quot;&gt;​The Need to Read​&lt;/a&gt;: I agree with Paul Graham, who says, &quot;People who just want information may find other ways to get it. But people who want to have ideas can&apos;t afford to.&quot; The more I read and write, the more I think reading outweighs all other methods (e.g., watching a video or listening to a podcast).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://omnivore.app/&quot;&gt;​Omnivore App​&lt;/a&gt;: I&apos;ve been using Omnivore for a few months now, and it has taken its place as my go-to reading list and content aggregator tool. I use it for RSS, email subscriptions, and saving articles to read them later.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=aHx-HstjwdM&quot;&gt;​Adaptive Socio-Technical Systems with Architecture for Flow​&lt;/a&gt;: A good watch for the people in software engineering leadership positions if you want to learn how to combine several management frameworks with software architecture.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Recently, I published on my blog&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/embracing-the-joy-of-missing-out/&quot;&gt;​Embracing the Joy of Missing Out (JOMO)​&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/journal/an-article-about-bidens-debate-on-tv-and-retirement/&quot;&gt;​An article about Biden&apos;s debate on TV and defining retirement​&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/journal/learn-how-to-work-with-average-talent/&quot;&gt;​Learn How to Work with Average Talent​&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-7/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-7/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>An article about Biden&apos;s debate on TV and defining retirement</title><link>https://candost.blog/journal/an-article-about-bidens-debate-on-tv-and-retirement/</link><guid isPermaLink="true">https://candost.blog/journal/an-article-about-bidens-debate-on-tv-and-retirement/</guid><pubDate>Sun, 07 Jul 2024 15:25:42 GMT</pubDate><content:encoded>&lt;p&gt;Recently, we were talking with a few friends about what we would do if we won the Euro Jackpot. With the same friends, we also talked about defining retirement, and in there, we tried to be specific with defining the goal for retirement to find out how much money would be needed. All we wanted to find out was how we should invest our money today and what risk portfolio we should employ.&lt;/p&gt;
&lt;p&gt;I have no answer to any of those. I still struggle with answering the first question, “What would I do if I retire today from a job I love doing?”&lt;/p&gt;
&lt;p&gt;Well, I read &lt;a href=&quot;https://www.theatlantic.com/newsletters/archive/2024/07/a-happiness-experts-frank-advice-for-joe-biden/678927/&quot;&gt;an article on The Atlantic&lt;/a&gt; (remove paywall &lt;a href=&quot;https://archive.is/Iv7DE&quot;&gt;here&lt;/a&gt;) that somehow touches these topics in the light of Biden’s latest debate on TV (I didn’t watch and also didn’t know about it until I read this article, and still don’t know how it went).&lt;/p&gt;
&lt;p&gt;When I disconnect the article from Biden, the short interview gives food for thought in some other directions related to retirement.&lt;/p&gt;
&lt;p&gt;A quote from which I learned Grihastha and Vanaprastha and related a lot:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“…that many successful people get stuck in a stage called Grihastha—which is where you enjoy professional success and adulation—rather than progressing to Vanaprastha, which is where one should become more of a teacher (“crystallized intelligence”).”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A short and good read. Recommended.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/an-article-about-bidens-debate-on-tv-and-retirement/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/an-article-about-bidens-debate-on-tv-and-retirement/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Embracing the Joy of Missing Out (JOMO)</title><link>https://candost.blog/embracing-the-joy-of-missing-out/</link><guid isPermaLink="true">https://candost.blog/embracing-the-joy-of-missing-out/</guid><description>JOMO is about the importance of prioritizing meaningful experiences over constantly trying to keep up with popular culture.</description><pubDate>Mon, 24 Jun 2024 07:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A lot of events happen around us every day—at work, at home, in the city, the country, or the world. New movies come out, concerts are planned, and new books are launched day after day. We glance at them as we prepare our never-ending to-do list, which reaches an all-time high. We envy people who are lucky enough to cross those events from their list and who are not hesitant to let the world know that they did. Looking at our lives again after a look on Instagram, we feel that something must be wrong.&lt;/p&gt;
&lt;p&gt;In our struggle to allocate time or money, we prioritize places where our friends go, read bestsellers or popular books, and watch TV series everyone talks about. That popularity-driven mindset lays off consciousness and puts FOMO (fear of missing out) into the driver’s seat. This journey often seems never to end. But there is a way to take back the seat from FOMO.&lt;/p&gt;
&lt;p&gt;In the last few years, I began &lt;a href=&quot;/newsletter/mediations-1/#recently-i-thought-about&quot;&gt;seeking inconvenience&lt;/a&gt; and reducing my interactions with attention-seeker pop culture applications. While everything is trying to get my attention by offering me convenience, entertainment, or a &lt;em&gt;feeling&lt;/em&gt; that I (should) belong to a group, I stay away from many of them. I rarely watch movies, TV series, or TV itself. I &lt;a href=&quot;/no-more-debate-with-latest-or-daily-news/&quot;&gt;don&apos;t read daily or the latest news&lt;/a&gt;. I try traveling less (it doesn&apos;t always work, but I try). I don&apos;t use social media like Instagram, Twitter (X), Facebook, or TikTok. After consistently doing these things, I discovered a new &lt;em&gt;feeling&lt;/em&gt;: instead of living with FOMO, I now embrace living with the Joy Of Missing Out (JOMO).&lt;/p&gt;
&lt;p&gt;As I miss out on a lot of things, my favorite phrase became “I don’t know,” and this gives me joy. &lt;strong&gt;The delight of not knowing what&apos;s happening in the world at any time is immeasurable.&lt;/strong&gt; Life is much more fun when I don&apos;t spend hours reading the daily news that I forget in a week, scrolling Instagram to see a ton of ads and posts from accounts I don&apos;t follow, watching a mediocre but popular TV series, or reading an average but heavily marketed book.&lt;/p&gt;
&lt;p&gt;Instead, &lt;strong&gt;I cherry-pick movies, events, concerts, and books.&lt;/strong&gt; I can watch the things I love again and again (&lt;em&gt;and again&lt;/em&gt;), knowing that they will give me exactly what I want. I also &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;don’t watch any movies or TV series recommended by algorithms&lt;/a&gt;. Instead, I use the best gauge to understand anything’s greatness: &lt;em&gt;time&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The key is waiting &lt;em&gt;long enough&lt;/em&gt; for anything to reveal its excellence. 99% of the time, the hype is over in a few days, weeks, or months, depending on the marketing budget for the event, movie, book, etc. Once the first hype wave is over, I evaluate if I want to wait a bit more. More often—also to my surprise—&lt;strong&gt;wait dispels the mist and unmasks the real value.&lt;/strong&gt; However, deciding the length of the wait has a learning curve.&lt;/p&gt;
&lt;p&gt;The waiting time is weeks for “latest” news, a few months for some movies, a few years for some music albums, and a few decades for some books. It differs for each. Learning the waiting time is the learning curve of building JOMO. &lt;strong&gt;You have to control your emotions, let go of your urges first, and catch them again at the right time.&lt;/strong&gt; There is nothing scientific. It’s a matter of practice; once you’re fine with missing out on a few things, you learn when and how to enjoy. However, I must admit that JOMO is challenging as it is against human nature.&lt;/p&gt;
&lt;p&gt;Humans have evolved and succeeded as a species because of the harmony we form in groups. We are much healthier when we are part of a group or a community. On the other hand, JOMO (eventually) makes you feel like you are not part of a group. &lt;strong&gt;When people talk about a topic you have no idea about, you feel &lt;em&gt;alone&lt;/em&gt;.&lt;/strong&gt; After various times, you don’t feel like you belong to the group anymore. I learned a way out of this situation.&lt;/p&gt;
&lt;p&gt;I look for sub-groups within communities. In each group of friends, there is a variety of interests that are not shared by everyone. Finding them and &lt;strong&gt;forming smaller sub-groups based on them works remarkably well&lt;/strong&gt;. If the group is diverse enough, I always find someone who wants to do things similar to me. After doing this with a few people from the same group but separately, I eventually felt I belonged to that group despite not contributing to the common denominator topics.&lt;/p&gt;
&lt;p&gt;JOMO is my new way of life. It’s about being fine with missing out on things and even embracing this mentality. The trick is learning when to get involved and push yourself to join others and when to ignore the urge that pops up inside yourself. Choosing intriguing topics requires self-discovery and a learning curve. But once achieved, life becomes easier and more meaningful.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;The purpose is to enjoy life while being fully yourself. That’s what JOMO is about.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/embracing-the-joy-of-missing-out/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/embracing-the-joy-of-missing-out/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Learn How to Work with Average Talent</title><link>https://candost.blog/journal/learn-how-to-work-with-average-talent/</link><guid isPermaLink="true">https://candost.blog/journal/learn-how-to-work-with-average-talent/</guid><pubDate>Fri, 21 Jun 2024 07:28:47 GMT</pubDate><content:encoded>&lt;p&gt;Any leader in a mid-to-large-sized organization has to learn how to run a team or an organization with average talent.&lt;/p&gt;
&lt;p&gt;You can&apos;t always hire the best of the best. You can&apos;t scale a team at a good hiring pace when searching for the best engineers. Even if you try, you&apos;ll make mistakes and hire an average or low-performer. Or, the best ones will have life circumstances that will make them average at some point.&lt;/p&gt;
&lt;p&gt;Working with average-performing talent is unavoidable. Therefore, any leader must learn how to work with them.&lt;/p&gt;
&lt;p&gt;A leader&apos;s job is to grow talent and help the team bring out the best in them. That demands recognizing which skills are missing in a team member and setting up the proper mentoring or coaching arrangement. Moreover, it requires setting the team culture correctly to allow this growth.&lt;/p&gt;
&lt;p&gt;Only then can team performance start increasing. Only then can the team start looking into how they can improve their systems. Otherwise, the team will be doomed to failure as they try to solve issues with half-baked or mediocre solutions.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/learn-how-to-work-with-average-talent/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/learn-how-to-work-with-average-talent/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Know where you spend your money on</title><link>https://candost.blog/newsletter/mediations-6/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-6/</guid><description>Learning how to keep a budget.</description><pubDate>Wed, 12 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There is no place or time in the education system for learning how to manage money. Nobody gives us this crucial education besides our families, so we have to take things into our own hands (as my family is not rich, I can tell they also don’t know how to manage money). So, it was time to get my hands dirty and learn how to manage money. Today, I will take you to the first step.&lt;/p&gt;
&lt;p&gt;Forget about the stock market, accounting system, funds, bonds, or all the other mechanisms; &lt;strong&gt;I didn’t even know how I spent my money&lt;/strong&gt;. I set aside some money every month to fool myself into thinking I would be safe in the future. I was delusional in thinking that my monthly amount would make me rich one day. I had no plans; even the amount I put aside was arbitrary.&lt;/p&gt;
&lt;p&gt;My monthly savings was based on how I lived with the rest of the money. I followed some general convention that told me to &lt;strong&gt;&lt;em&gt;save X% amount of my salary every month&lt;/em&gt;&lt;/strong&gt;. Although I never found these constructive, I obeyed.&lt;/p&gt;
&lt;p&gt;I didn’t know where to put that money; I kept it in a checking account (not even savings). &lt;strong&gt;I still don’t know how to invest money, BUT I know where I spend my money&lt;/strong&gt; and how much I want to save and invest every month.&lt;/p&gt;
&lt;p&gt;One of my friends recommended that I should &lt;strong&gt;get last year’s bank statements and go back line by line, categorize them, and look where I spent the money&lt;/strong&gt;. I reserved some time on a rainy Sunday in Berlin and did exactly that. Luckily, my bank already uses categories and automatically assigns transactions to these categories, so I didn’t have to do everything. However, I still scanned line by line to ensure all categorizations were correct.&lt;/p&gt;
&lt;p&gt;So, &lt;a href=&quot;https://docs.google.com/spreadsheets/d/1nOjbJowHAUh-5U-Mcbd2cGDfEhHc7VdCXGWkqpUvrIs/edit#gid=1477821179&quot;&gt;here is my spreadsheet&lt;/a&gt;, which I update every month. Of course, the numbers are not there because I will ask you to clone the sheet and adjust it to your needs: change categories, add new sub-categories, or do whatever you need. You’ll see that &lt;strong&gt;it’s simple&lt;/strong&gt;—it should be. This first step won’t cover all the details, but it’s &lt;strong&gt;good enough to make the invisible visible&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;My bank statements didn’t tell the whole story; as Germany still goes full gas on cash payments, I had to spend a lot of money cash. Yet, I was able to catch some details, such as the money I spent on subscriptions. Each looked small: 5-10 EUR per month—a coffee price, so to speak (remarkable marketing strategy). Yet I had many of them, and they reached a thousand euros when combined yearly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;At any given moment, you should be able to tell how much money you have and how much you spend on what.&lt;/strong&gt; That awareness is the real deal. Once you know what you spend your money on, you can start thinking about all the rest. Learning that information requires collecting data. My recommendation now is to &lt;strong&gt;go back to your bank history and fill out the spreadsheet&lt;/strong&gt;. If you rarely use cash, then you should be fine. Then, look for common patterns on which you spend your money.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Without looking retrospectively, it’s &lt;em&gt;impossible&lt;/em&gt; to plan a future.&lt;/strong&gt; Only looking at the past teaches us a lesson. In routine life, there are subtle and invisible differences we recognize only in retrospect. So, you might be rigorous with your spending today, but without a holistic look, you won’t catch the patterns. When you change some of those patterns, they will change your life, too.
What did I change? I canceled my subscriptions (many of them), which I was using rarely. Also, I realized that owning a car costs a lot of money. I don’t have a car anymore (I was thinking of buying one again, but after looking at the costs and my rare usage, I realized it isn’t worth the money), and lastly, I reduced the amount of money I spend on impulse purchases on Amazon.&lt;/p&gt;
&lt;p&gt;After this, I &lt;strong&gt;started keeping and planning a budget&lt;/strong&gt;. Now, I have a budget that I track weekly. My next step is learning more about investing. Both budgeting and investing are our future mediation topics. As nobody teaches these topics, it takes time and energy to learn. I’ll share when I get there.&lt;/p&gt;
&lt;p&gt;Meanwhile, I’m sure some of you already figured out those things more than I did. Do you have any recommendations for me on how to learn about investing? If so, just reply to this email.&lt;/p&gt;
&lt;h2&gt;Somethings I Found Great&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;​&lt;a href=&quot;https://lethain.com/no-wrong-doors/&quot;&gt;No Wrong Doors by Will Larson&lt;/a&gt;: Don&apos;t use the phrase &quot;It&apos;s not my responsibility.&quot; Rather, take a step and show the right door to the people.&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;https://fs.blog/schopenhauer-dangers-clickbate/&quot;&gt;Master Your Attention: Schopenhauer&apos;s Strategy Against Clickbait by FS.Blog&lt;/a&gt;: Although I don&apos;t use social media, I realized that my attention span is very low. It&apos;s always good to get some reminders of what I can try.&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;https://www.youtube.com/watch?v=dLw1ao4-Akk&quot;&gt;F1 Canadian Grand Prix 2024&lt;/a&gt;: Pure entertainment (once you know the details of F1)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Recently, I published on my blog&lt;/h2&gt;
&lt;p&gt;New notes on my Zettelkasten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;​&lt;a href=&quot;/notes/73/&quot;&gt;73: Selective Learning&lt;/a&gt;​&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;/notes/20d/&quot;&gt;20d: Click and Run&lt;/a&gt;​&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;/notes/20e/&quot;&gt;20e: Perceptual Contrast&lt;/a&gt;​&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;/notes/23h/&quot;&gt;23h: Feedback is mutual&lt;/a&gt;​&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;/notes/30d1/&quot;&gt;30d1: The Rule of Reciprocation&lt;/a&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;em&gt;I keep &lt;a href=&quot;https://theuselessweb.site/niceonedad/&quot;&gt;this website&lt;/a&gt; bookmarked and use it in the beginning of some meetings to break the ice.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-6/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-6/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Selective Learning</title><link>https://candost.blog/notes/73/</link><guid isPermaLink="true">https://candost.blog/notes/73/</guid><pubDate>Mon, 10 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Annie Dillard&lt;/strong&gt;
He is careful of what he reads, for that is what he will write. He is careful of what he learns, for that is what he will know.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The things we read shape how we see the world. The books, articles, or newspapers we read are the words of others; they open someone else’s world. If we’re not careful of what we consume, we may let immoral or trivial ideas affect us. Especially when we’re writing—&lt;a href=&quot;/why-is-writing-important/&quot;&gt;shaping our thoughts&lt;/a&gt;—others’ ideas will influence ours. And in turn, our text will influence our readers.
The information we receive every day also comes at a cost. Selective learning is the challenge of our modern world. We can’t, and shouldn’t, turn all the information we receive into a piece of knowledge. We have to be picky and discard 99% of the information around us, especially what people call &lt;a href=&quot;/no-more-debate-with-latest-or-daily-news/&quot;&gt;the latest ones&lt;/a&gt;. Then, we must discard the 99% of the remaining 1%. Only the remaining ideas will be worth knowing.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2/&quot;&gt;2: How to Improve Writing&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20b/&quot;&gt;20b: Sharing knowledge is not a noise&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25d/&quot;&gt;25d: Commitment gives you freedom&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29a/&quot;&gt;29a: Bet on things that won&apos;t change&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52a/&quot;&gt;52a: Accepting one thing requires saying no to other things&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/64/&quot;&gt;64: Why Inspectional Reading?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/65/&quot;&gt;65: Learning and Understanding&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/69/&quot;&gt;69: Reading and Criticizing with Enough Generosity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/102/&quot;&gt;Should we even read the AI-generated material if there is nobody behind it?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/73/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/73/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Click and Run</title><link>https://candost.blog/notes/20d/</link><guid isPermaLink="true">https://candost.blog/notes/20d/</guid><pubDate>Sat, 08 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In small favors that are often invisible, we give a lot of automatic responses. If someone cuts the line, we become frustrated, but if they first ask to pass us while giving a weak reason, we give them the place. The reasons don’t have to be strong and logical. Any illogical reason also works as long as there is a reason tied to the request.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30/&quot;&gt;30: Scientific Thinking and Fact-Checking for A Better Life&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Perceptual Contrast</title><link>https://candost.blog/notes/20e/</link><guid isPermaLink="true">https://candost.blog/notes/20e/</guid><pubDate>Sat, 08 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you would like to use the perceptual contrast principle in practice while trying to convince people, offer them the worst option first if you want/need them to exaggerate a better option and evaluate it to be better than it really is. If you want/need someone to stay away from an option, show them the best option first, and then they will think the following options are much worse. A good example of this principle is real estate agents. They keep one or two bad houses in their portfolio and never sell them. They show these houses first to the people. Then, the next houses will look much better than they really are, and people will tend to overpay for those houses.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19f/&quot;&gt;19f: Three Approaches to Decision-Making Styles&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Feedback is mutual</title><link>https://candost.blog/notes/23h/</link><guid isPermaLink="true">https://candost.blog/notes/23h/</guid><pubDate>Sat, 08 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Take the first step to share feedback. &lt;a href=&quot;/notes/30d1/&quot;&gt;The rule of reciprocation&lt;/a&gt; can play a big role when you want to get feedback, too. Especially for the positive feedback, take the extra time to provide it in the most visible way. This favor will get its return when you need feedback, too. While the other person thanks for the feedback, don’t just discard it by saying, “You’re welcome” or “No problem at all,” use the opportunity to enforce the rule of reciprocation by saying, “If our positions are reversed, I’m sure you’d do the same.”&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/13/&quot;&gt;13: Be Kind At Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23h/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23h/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Rule of Reciprocation</title><link>https://candost.blog/notes/30d1/</link><guid isPermaLink="true">https://candost.blog/notes/30d1/</guid><pubDate>Sat, 08 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;We should try to repay what other person provided us.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We observe that the rule of reciprocation plays a big role everywhere. Almost all political environments work with this rule. We see a lot of corruption not because people are bad but because of the strength of this psychological rule. For example, with my not-so-strong knowledge, I can see that Tayyip Erdogan puts many incompetent people in certain positions, and those people become indebted to him. Then, they went to great lengths to repay their debt to Erdogan, doing whatever he asked of them. The people continue for a good length until they think they repaid the debt. Once they reach equality, that’s when they open their eyes, stay against him, and side with logic. Until then, the strength of the rule has even beaten the influence factor (whether they like Tayyip or not).&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20d/&quot;&gt;20d: Click and Run&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21b/&quot;&gt;21b: Four stages of the best code review process&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23h/&quot;&gt;23h: Feedback is mutual&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/influence-book-review-summary-and-notes/&quot;&gt;Influence by Robert B. Cialdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30d1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30d1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Life Priorities and I&apos;m Back</title><link>https://candost.blog/newsletter/mediations-5/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-5/</guid><description>My goal is to ensure this is the most helpful email you get in your inbox.</description><pubDate>Tue, 28 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been absent from your inbox, and I won’t tell you that I was busy. I&apos;m trying to get that word out of my life. Busyness is only an illusion we create ourselves to avoid confronting our procrastination or an excuse to leave our commitments unfulfilled. It’s also a common justification for saying, “I have no energy to invest in this.” So, I wasn&apos;t busy.&lt;/p&gt;
&lt;p&gt;I focused on my physical health, which was declining, and my emotional health, which needed much more care than I thought. This healthcare activity started two years ago by focusing on my sleep, but it’s still a work in progress. I was able to increase my sleep by up to seven hours (from a maximum of six). Meanwhile, we got a dog named Leda. I can&apos;t say that Leda made our lives easier, but she filled us with joy, love, and a little bit of purpose. Lastly, a big chunk of my time spent at work, along with my energy. Why am I catching you up with my life? Am I creating an excuse? No.&lt;/p&gt;
&lt;p&gt;There are so many sides of life that try to pull us in a direction. When we don&apos;t take a pause and look where we are going, we find ourselves in a place we never planned to be.&lt;/p&gt;
&lt;p&gt;It’s much like a good navigation algorithm going wrong at times. Once, I was using Google Maps to drive to another city. It took me out of the main road, thinking that it would be faster because it was short. I suddenly found myself on a gravel road, riding some distance, then connecting to the main road again. I didn’t zoom out or trust my instincts. Life is exactly the same. You feel something is off, you feel lost, but you must keep going until you find a way to return to the main road.&lt;/p&gt;
&lt;p&gt;During this seven-month hiatus, there was something inside me that was pulling me to the writing. I felt incomplete. This pull—or rather hunger—got stronger over time, and I couldn’t resist anymore. So, I’m back.&lt;/p&gt;
&lt;p&gt;I’ll take you on a journey where I negotiate between life’s different priorities. As my wife often points out, I am never satisfied with anything as they are; you’ll observe how I play the mediator role between many topics, find the little things I can optimize, and try to find the balance.&lt;/p&gt;
&lt;p&gt;My goal is to ensure this is the most helpful email you get in your inbox.&lt;/p&gt;
&lt;p&gt;If you don’t want emails but want to subscribe via RSS, &lt;a href=&quot;/feeds/&quot;&gt;here is what you’re looking for&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Some Things I Found Great&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bbc.co.uk/sounds/brand/b08vkm52&quot;&gt;BBC Reith Lectures with Historical Fiction writer Hilary Mantel&lt;/a&gt; — Five lectures from 2017. Start from the first one; each is better than the previous one. I’m in the fifth and my favorite is the third so far. The best part? Hilary’s wisdom in answering audience questions at the end of each lecture. My best quote: “Facts are strong, but they are not stable.” Listen to it for joy, story, intellectuality, and endless wisdom.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.newyorker.com/culture/culture-desk/the-diary-of-a-rikers-island-library-worker&quot;&gt;A Diary of a Rikers Island Library Worker&lt;/a&gt; — Piece by Medar de la Cruz. Simply marvelous. (Won the Pulitzer Award for Illustrated Reporting and Commentary Category)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mcsweeneys.net/articles/im-the-word-utilize-and-im-loving-every-moment-of-your-overblown-rhetoric&quot;&gt;I’m the Word “Utilize” and I’m Loving Every Moment of Your Overblown Rhetoric&lt;/a&gt; -I wish I wrote this. I love the provocation and thinking about the nuances of the words we use.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Recently, I published&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/journal/explain-how-to-manage-your-team/&quot;&gt;Can you explain how you manage your team?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/no-more-debate-with-latest-or-daily-news/&quot;&gt;Ending My Debate with The Latest or Daily News&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/journal/saying-something-once-is-not-enough/&quot;&gt;Saying Something Once is NOT Enough&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/on-listening-to-audiobooks/&quot;&gt;On Listening to Audiobooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/weekday-weekend-concepts-are-useless/&quot;&gt;Weekday/Weekend Concepts are Useless&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;P.S. &lt;a href=&quot;https://www.youtube.com/watch?v=fqtA8nASKRs&quot;&gt;What a simple but difficult question&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-5/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-5/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Can you explain how you manage your team?</title><link>https://candost.blog/journal/explain-how-to-manage-your-team/</link><guid isPermaLink="true">https://candost.blog/journal/explain-how-to-manage-your-team/</guid><pubDate>Fri, 24 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If somebody asks you how you manage your team, you have to be able to explain it to them clearly.&lt;/p&gt;
&lt;p&gt;“If all you have is a hammer, everything looks like a nail.” — Maslow’s hammer.&lt;/p&gt;
&lt;p&gt;That means you must have a goal, strategy, tactics, methodologies, mental models, and many more in your toolbelt and know how to use them.&lt;/p&gt;
&lt;p&gt;If you answer, “I set up processes and let them do their jobs,” you are wrong.&lt;/p&gt;
&lt;p&gt;Yes, ensuring the team has correct processes is your job.&lt;/p&gt;
&lt;p&gt;Yes, letting them do their jobs is also a good step.&lt;/p&gt;
&lt;p&gt;But there are more.&lt;/p&gt;
&lt;p&gt;If doing individual contributor work brought you success and helped you become a manager, you can’t keep doing the same. You have to read a lot of books and/or articles, watch videos, and/or listen to podcasts. You have to take the time to learn the leadership craft.&lt;/p&gt;
&lt;p&gt;So, how do you manage your team?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/explain-how-to-manage-your-team/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/explain-how-to-manage-your-team/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Saying Something Once is NOT Enough</title><link>https://candost.blog/journal/saying-something-once-is-not-enough/</link><guid isPermaLink="true">https://candost.blog/journal/saying-something-once-is-not-enough/</guid><pubDate>Fri, 10 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Have you ever observed how many times a leader needs to repeat a message for others to follow?&lt;/p&gt;
&lt;p&gt;In any change, saying something once never works (at least, I&apos;ve never seen it work).&lt;/p&gt;
&lt;p&gt;It&apos;s not because people are incompetent or careless. It&apos;s because they forget.&lt;/p&gt;
&lt;p&gt;If we, as leaders, want people to change their minds or apply a new method, there is no other way than continually and consistently repeating the message.&lt;/p&gt;
&lt;p&gt;People will eventually learn by hearing it.&lt;/p&gt;
&lt;p&gt;When we want or need people to change or adapt to change, what alternative do we have?&lt;/p&gt;
&lt;p&gt;I&apos;ve seen some leaders change their message (sometimes soften it) or choose another direction because they didn&apos;t get enough followers. And that created more confusion AND a lack of direction.&lt;/p&gt;
&lt;p&gt;P.S. It&apos;s also reaaaally important to form the first decision and its message/communication correctly. If it&apos;s nonsense, nobody will follow, regardless of how often you say it. 😅&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/saying-something-once-is-not-enough/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/saying-something-once-is-not-enough/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Increasing Sales Through Human Psychology</title><link>https://candost.blog/notes/72/</link><guid isPermaLink="true">https://candost.blog/notes/72/</guid><pubDate>Fri, 10 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In my experience, my Moonlander keyboard was broken, and I asked for support to see what they could do. Even though my keyboard was out of warranty, they sent a replacement unit for free. Now, I feel indebted to them and started writing a Moonlander review blog post. They solved my needs in a very customized way.&lt;/p&gt;
&lt;p&gt;This rule is so strong and instinctually known by many sellers they always use it. For example, we have various stalls we go to nearby farmer’s markets. And they always add one or two gifts without us asking. Later on, we found out that we went there even more and started buying some other products, too. While they are easily exploiting the rule, I’m happily going there because every time, I get yet another gift.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/72/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/72/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Vier Schritte für einen Neustart</title><link>https://candost.blog/de/vier-schritte-fuer-einen-neustart/</link><guid isPermaLink="true">https://candost.blog/de/vier-schritte-fuer-einen-neustart/</guid><pubDate>Wed, 08 May 2024 19:07:42 GMT</pubDate><content:encoded>&lt;p&gt;Nachdem ich &lt;a href=&quot;/journal/consuming-news-weekly/&quot;&gt;in meinem Text&lt;/a&gt; erklärt habe, wie ich die Nachrichten lese, habe ich viele Kommentare erhalten. Ich dachte, dass die Ideen so normal oder gemeinsam sind, dass ich sie nicht geteilt hätte. Aber ich musste sagen, dass ich viele Jahre lang meine Lebensgewohnheiten geändert habe. Die Zeit, Energie und kleinen Optimierungen haben mich so viel gelernt. Hier sind die ersten vier:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Klein ist groß:&lt;/strong&gt; Man kann ohne Ziel leben, aber man muss jeden Tag lernen und verbessern. 1 % Verbesserung: Es gibt keine kleinen Schritte, jeder zählt. Kleine Schritte ziehen unwichtig aus, aber ganz und gar nicht. In langer Zeit kommt das Obst. Ob du keinen Schritt machen kannst, such die kleineren Schritte.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schneide den Faden ab:&lt;/strong&gt; Irgendwas hat dich festgehalten. Für mich war das Twitter/Instagram. Ich dachte immer, dass ich ohne Instagram/Twitter keine Freunde haben würde, aber ich lag falsch. Nachdem ich meine Instagram- und Twitter-Konten gelöscht hatte, habe ich meine Freundschaften verbessert. Wir sprechen jetzt viel mehr über persönliche Themen. Mein Fokus liegt dabei auf der Diskussion, nicht auf dem Handy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Die Kontrolle muss in deinem Hand sein:&lt;/strong&gt; Wenn du keine Kontrolle hast, übernimmt jemand anderes die Kontrolle. Du solltest nicht zulassen, dass Medien, andere Personen oder Algorithmen deine Aufmerksamkeit steuern. Danach kannst du die Kordel durchschneiden.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alles braucht Zeit:&lt;/strong&gt; Du kannst nicht alles gleichzeitig machen. Schritt für Schritt. Wenn du etwas perfekt gemacht hast, geht es mit dem nächsten Schritt weiter.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/de/vier-schritte-fuer-einen-neustart/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/de/vier-schritte-fuer-einen-neustart/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Consuming News Weekly, Instead of Daily</title><link>https://candost.blog/journal/consuming-news-weekly/</link><guid isPermaLink="true">https://candost.blog/journal/consuming-news-weekly/</guid><pubDate>Wed, 01 May 2024 17:07:42 GMT</pubDate><content:encoded>&lt;p&gt;I pondered how I consume the latest or daily news and changed my habits (over the years).&lt;/p&gt;
&lt;p&gt;I used to be glued to my phone, constantly scrolling through the news and feeling overwhelmed. But I realized I needed to take control. So, I decided to cut back on checking the news every day and instead set aside time once a week or every other week.&lt;/p&gt;
&lt;p&gt;It was a game-changer. I no longer felt bombarded by the latest headlines or at the mercy of social media algorithms and lousy journalism.&lt;/p&gt;
&lt;p&gt;As Schopenhauer said, &quot;Not all writing is worth reading. Just because someone can put words on a page doesn’t mean they are worth reading or add value.&quot;&lt;/p&gt;
&lt;p&gt;Instead of daily news, I started seeking good journalists who take their time to develop an article. I also began reading articles that went deeper into the issues.&lt;/p&gt;
&lt;p&gt;Moreover, I read them in my own time (instead of when they are sent to me).&lt;/p&gt;
&lt;p&gt;And you know what? It&apos;s made a world of difference. I feel less stressed and more in control of my own thoughts. Instead of getting caught up in the noise, I&apos;m able to focus on what really matters to me.&lt;/p&gt;
&lt;p&gt;So, if you&apos;re feeling overwhelmed by the constant stream of news, maybe it&apos;s time to take a step back. What do you think?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/consuming-news-weekly/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/consuming-news-weekly/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Ending My Debate with Latest or Daily News</title><link>https://candost.blog/no-more-debate-with-latest-or-daily-news/</link><guid isPermaLink="true">https://candost.blog/no-more-debate-with-latest-or-daily-news/</guid><description>Escaping the News Cycle for Intentional Living</description><pubDate>Wed, 01 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the book Digital Minimalism, Cal Newport talks about how we can live a focused life in a noisy world, and he says, “Humans are not wired to be constantly wired.” I quoted the book, but I haven’t read it yet. I guess you thought, for a split second, that I read the book because I’m quoting it here.&lt;/p&gt;
&lt;p&gt;That itself is the problem we all have. We form a view on many things we read. We intuitively connect two dots and form an opinion. It’s the same regardless of whether we read a tweet, article, or book. And it was also one of the main reasons for me to detach myself from daily news.&lt;/p&gt;
&lt;p&gt;The news created anxiety and forced me to worry about things that I could never change. Hence, I decided to change a few things in my life. I started consuming the news &lt;em&gt;weekly or biweekly&lt;/em&gt; instead of many times a day. As Newport’s quote says above, I wanted to cut some wires to set myself free.&lt;/p&gt;
&lt;p&gt;Before all these changes, I usually consumed the news via Twitter and news websites. These platforms decided how I should have perceived the world. Twitter deluded me because I thought I read different news from various sources. Later, I learned that was my flaw. What I needed was more time, not more sources. Let me explain.&lt;/p&gt;
&lt;p&gt;Every minute, many voices come from everywhere in the world, making it almost impossible to grasp the truth. As people rarely sift the information through a sieve to eliminate their emotions and &lt;a href=&quot;/faucets-and-bad-ideas/&quot;&gt;unnecessary thoughts&lt;/a&gt;, whatever they say will always be biased. We can’t estimate the correctness of the information, which makes it unusable.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If I can&apos;t judge whether anything is correct or not, it becomes irrelevant to my life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Moreover, while everyone flocks to the web with unfiltered thoughts, social media lately has gotten even worse. Everyone abruptly transitioned to a journalist. Everyone interprets the impact of the war in Ukraine or the conflict in Gaza, albeit nobody can &lt;em&gt;comprehend&lt;/em&gt; what&apos;s going on. Without any research, analysis, or even reading contradicting sides, many feel entitled to write a summary of the situation with their commentary. This is utter nonsense; just because they have a voice doesn&apos;t mean we should listen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Not all writing is worth reading. Just because someone can put words on a page doesn’t mean they are worth reading or add value.&quot; — &lt;a href=&quot;https://fs.blog/schopenhauer-dangers-clickbate/&quot;&gt;Schopenhauer&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I can&apos;t endure the people who make a rumpus anymore. Instead of hearing news from everyone who has an emotional attachment—thus, false assessment—to the events, I prefer to read news from professional and &lt;em&gt;&lt;strong&gt;independent&lt;/strong&gt;&lt;/em&gt; journalists &lt;em&gt;&lt;strong&gt;who do research&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m a big fan of good journalism. Proper journalism opens minds, creates awareness, and pushes you to think something differently. It doesn&apos;t always comply with your thoughts. It provokes them from various angles but leaves the decision to you. And it&apos;s rare because it&apos;s difficult. And that&apos;s what I&apos;m after.&lt;/p&gt;
&lt;p&gt;Thus, I &lt;a href=&quot;/my-experience-living-without-social-media/&quot;&gt;stopped using social media&lt;/a&gt;, cutting the primary source of my news habit. The next stop was news websites, the evil of a society.&lt;/p&gt;
&lt;p&gt;There is a reason why the &apos;who do research&apos; and &apos;independent&apos; are bold above. Most of the news agencies are a lost cause. They are pursuing the wrong goals and steering the crowd (and journalists) in the wrong direction. They focus on speed rather than quality. Being the first reporter on any event is more important than what they say. That hasty nature of the agencies (evolving with TV and making a giant leap with the Internet) destroys good journalism. They forgot that it takes time to comprehend complex events and write about them.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;That&apos;s why many journalists have introduced their own newsletters (e.g., in Substack), which they send only once or twice a week. They take the time to analyze, investigate, and write down what they find.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thus, I stopped checking out websites focusing on the latest news, cutting out the evil from my life.&lt;/p&gt;
&lt;p&gt;As a result of this revamp, I also realized a shift in my thinking, which made this new habit stick and helped me compound the benefit of deep thinking.&lt;/p&gt;
&lt;p&gt;The fundamental change was how I perceived news and what I could do with it. I usually read the news as it has been published. I found myself sitting on my desk or couch, reading everything, thinking it was better for me to know these things. That was inherently wrong.&lt;/p&gt;
&lt;p&gt;Do you remember Cal Newport&apos;s quote above?&lt;/p&gt;
&lt;p&gt;Knowing all these events is the worst-case scenario. &lt;em&gt;I am aware&lt;/em&gt; that they happen every single second around the globe. Although the economic crisis makes people’s lives miserable, wars affect people from close and far distances, or all environmental and education problems are present everywhere, I can&apos;t do anything about it when I read the news from my couch. I still care about problems, but I can only &lt;em&gt;create an illusion for myself&lt;/em&gt; when I share that news with my commentary. That doesn&apos;t contribute to any solution. At all.&lt;/p&gt;
&lt;p&gt;Also, if we look at the events, nothing has changed in the world for decades. Problems take different shapes, but they are identical. There are always economic hurdles, novel diseases, violence, wars. It&apos;s the reality of our world. If we worry about all this, there is no good living—even in prosperity.&lt;/p&gt;
&lt;p&gt;Hence, I decided to live my life on my own terms, not on others. This change is a slow shift but a fundamental one. I still read newspapers and newsletters. The difference is I read them &lt;em&gt;when I want&lt;/em&gt; instead of when they are sent to me. I sometimes buy paper-based weekly magazines. I often read them a few weeks later and learn everything late. And that’s OK.&lt;/p&gt;
&lt;p&gt;If any news survives more than a week, then it’s worth knowing. When a new war breaks out somewhere in the world, it will be in the news for years (e.g., Afghanistan, Syria, Ukraine, Gaza. Pick one) and impact everyone’s lives from various angles. It&apos;s possible that I can find myself in the middle of the war, or the country I live in decides to support one side of the war. If that’s the case, I’m sure it will be impossible to escape any news. Only then will I opt to follow that specific news more frequently. Until then, it&apos;s much better to live in my small echo chamber. Some people can consider me as ignorant or this approach as bullshit. I’m aware that it’s not for everyone. And that&apos;s also OK.&lt;/p&gt;
&lt;p&gt;These shifts are not sudden. Changing behaviors takes time. This journey took me a few years. Meanwhile, many governmental elections happened, an earthquake struck my home country (Türkiye), &lt;a href=&quot;/yet-i-cried-one-more-time&quot;&gt;the Ukraine war started&lt;/a&gt;, the global economy was shaken, the Gaza massacre happened (and is still happening), and many more. I still know all the big events, but life is much better without knowing every single detail. Yes, I&apos;m not so strong on day-to-day news anymore. And yes, I fall behind in casual conversations around whatever is hot. I consider the latest news part of pop culture, which I&apos;m consciously staying away from. One last thing I can tell you is I don’t think I will look back.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. This change was another addition to &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;my decision list&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/no-more-debate-with-latest-or-daily-news/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/no-more-debate-with-latest-or-daily-news/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Hawthorne Effect</title><link>https://candost.blog/notes/4c/</link><guid isPermaLink="true">https://candost.blog/notes/4c/</guid><pubDate>Wed, 01 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s a psychological phenomenon that indicates humans change their behaviors if they know they are being observed.&lt;/p&gt;
&lt;p&gt;At the Western Electric plant, a study was conducted in the 1920s to explore methods of enhancing workers&apos; productivity. The experiment involved manipulating the lighting conditions in the factory. Workers were divided into two groups, one working under varying light levels and the other under normal light. Surprisingly, both groups showed increased productivity, regardless of the light conditions. This unexpected result led to the discovery of the Hawthorne Effect.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Outlive by Peter Attia, p.325&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/4c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/4c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Leveraging Hawthorne Effect at Work</title><link>https://candost.blog/notes/4d/</link><guid isPermaLink="true">https://candost.blog/notes/4d/</guid><pubDate>Wed, 01 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I think this phenomenon shows itself when working with any employee. When we invest time and create tracking methods to follow direct reports&apos; career progress and improvement areas, they know that they are being observed, and they try to improve the parts we have our eyes on.
This phenomenon coincides with Goodhart&apos;s Law (&quot;when a measure becomes a target, it ceases to be a good measure&quot;). When we (as engineering leaders) try to put a true metric to a team to measure productivity, that metric will improve because people know we will be watching that metric and will try to improve that result.
The important part is figuring out how to turn this into a positive effect. This is where I see the individual development plans have the biggest impact. Once we (together with the employee) clearly define and agree on which skills they need to improve, they will focus on it and get better even when they are not directly focused on putting in extra effort to improve. It happens in the background.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3e/&quot;&gt;3e: Setting Clear Expectations About Communication and Collaboration&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/4d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/4d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On Listening to Audiobooks</title><link>https://candost.blog/on-listening-to-audiobooks/</link><guid isPermaLink="true">https://candost.blog/on-listening-to-audiobooks/</guid><description>How can I learn from audiobooks while taking walks with my dog?</description><pubDate>Sun, 21 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As of November 2023, I have a new &lt;a href=&quot;/the-power-of-ritualization-rituals-vs-routines/&quot;&gt;ritual&lt;/a&gt;. We have a new dog, Leda, who accompanies us in our lives. I take her out for a walk every morning. That &lt;a href=&quot;/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/#let&apos;s-go-to-deep-walks&quot;&gt;morning walk&lt;/a&gt; became one of the most peaceful moments in my life.&lt;/p&gt;
&lt;p&gt;Walks have a magical nature. They help me ponder things that I haven&apos;t found time for elsewhere.&lt;/p&gt;
&lt;p&gt;For a while, I used the silence to think about a lot of things. I was walking with Leda at 5 a.m. for a reason; it was the most soundless time of the day.&lt;/p&gt;
&lt;p&gt;Later, I changed the walking time to 8:00. As the city woke up and the noise filled the streets, sounds of people and cars started roaring in my head, and with it, broke the peace and my thoughts all together.&lt;/p&gt;
&lt;p&gt;To silence the city&apos;s outcry, I started listening to audiobooks.&lt;/p&gt;
&lt;p&gt;I managed to finish six books already. I can&apos;t say that I learned well what I listened to. I &lt;em&gt;think&lt;/em&gt; I understood some ideas from the books, but I still need to figure out how I &lt;em&gt;learn&lt;/em&gt; from them.&lt;/p&gt;
&lt;p&gt;Without converting those ideas into writing, it&apos;s challenging to learn anything at all.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Verba volant, scripta manent&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&quot;Spoken words fly away, written ones remain&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I, at least, need to try to explain what I have learned. Recording my thoughts using speech-to-text might help, but I rarely use speech-to-text and haven&apos;t given it a try during an audiobook session.&lt;/p&gt;
&lt;p&gt;That&apos;s why, if I liked an audiobook, I also bought the paper version and added it to my library. Then, I started &lt;em&gt;reading&lt;/em&gt; the book. &lt;a href=&quot;/newsletter/mediations-4/&quot;&gt;Building a personal library&lt;/a&gt; is very important to me, and the books that pass my &lt;a href=&quot;/how-to-get-to-the-end-of-a-pile-of-unread-books/#inspectional-reading&quot;&gt;inspectional reading&lt;/a&gt; (listening to an audiobook at 1.7x speed is a kind of inspectional reading) will always have a place on my bookshelf.&lt;/p&gt;
&lt;p&gt;Anyway, audiobooks are now becoming part of my life, and I&apos;m looking for a proper audiobook app other than Audible. It would be ideal if the authors and narrators get the most money I will pay for an audiobook. I still couldn&apos;t do a proper research. If you have any recommendations, just reply to this post.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/on-listening-to-audiobooks/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/on-listening-to-audiobooks/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Defining Transparency in Organizations</title><link>https://candost.blog/notes/71/</link><guid isPermaLink="true">https://candost.blog/notes/71/</guid><pubDate>Sat, 23 Mar 2024 16:26:36 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;What most people are talking about when they talk about ‘transparency’ is what I would call &lt;em&gt;&lt;strong&gt;structural transparency.&lt;/strong&gt;&lt;/em&gt; This refers to what information is shared freely and openly across the organization and with whom.
But, another critical part of transparency norms comes down to what I would call &lt;em&gt;&lt;strong&gt;content-level transparency,&lt;/strong&gt;&lt;/em&gt; insight into the raw work as it’s happening.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Content-level transparency is easier to achieve and helpful for anyone to find information easily. There is less hidden information and individuals don&apos;t need to talk to anyone to learn what&apos;s going on &lt;em&gt;as the work is happening&lt;/em&gt;. The content is public, accessible, readable, and searchable to anyone anytime, not when the information holder decides to make it available.
I think it&apos;s the ultimate culture change that can boost structural transparency. If anyone can find and read whatever is going on in an organization&apos;s other corner at any time (in the raw form), it will also push other parts of the organization to increase their content-level transparency, and the organization can increase their structural transparency.&lt;/p&gt;
&lt;p&gt;The benefits are also cumulative: people spend less time building trust with each other, politics are reduced, collaboration focuses on creative pursuits instead of knowledge-sharing, everyone stays honest, and people can observe what/how others are doing freely.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3a/&quot;&gt;3a: Team Decision Deployment Strategies&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12a/&quot;&gt;12a: Making decisions based on three groups&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/15/&quot;&gt;15: What should you do when your manager delegates a task to you?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a/&quot;&gt;19a: Knowns and Unknowns&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32b/&quot;&gt;32b: Communicating Organizational Changes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34a/&quot;&gt;34a: Transparency and respect build trust&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href=&quot;https://koolaidfactory.com/structural-transparency-vs-content-level-transparency/&quot;&gt;Structural and Content-level Transparency by Kool Aid Factory&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/71/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/71/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Good and Bad Transparency in Organizations</title><link>https://candost.blog/notes/71a/</link><guid isPermaLink="true">https://candost.blog/notes/71a/</guid><pubDate>Sat, 23 Mar 2024 16:26:36 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;...there is such a thing as good or bad transparency. Good transparency answers questions before they come up, brings people along, and encourages consistent and principled decision-making across the organization. Bad transparency distracts people, invites the wrong questions, treats information as currency, embraces gossip as truth, and results in politicking.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The main goal for transparency should be answering the questions before they arise. It&apos;s impossible to answer all questions by default; however, the good of transparency should encourage people to ask those questions. Then the person can enhance the level of transparency by clarifying unclear parts. Transparency is a framework for decision-making; it should focus on enabling everyone to make better decisions.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12a/&quot;&gt;12a: Making decisions based on three groups&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a/&quot;&gt;19a: Knowns and Unknowns&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32b/&quot;&gt;32b: Communicating Organizational Changes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34a/&quot;&gt;34a: Transparency and respect build trust&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href=&quot;https://koolaidfactory.com/structural-transparency-vs-content-level-transparency/&quot;&gt;Structural and Content-level Transparency by Kool Aid Factory&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/71a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/71a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why Urban Design Matters</title><link>https://candost.blog/notes/70/</link><guid isPermaLink="true">https://candost.blog/notes/70/</guid><pubDate>Sat, 23 Mar 2024 16:23:33 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been reading Monocle since last summer, and I always love how different perspectives can find their place in the magazine. In &lt;a href=&quot;https://monocle.com/magazine/issues/171/&quot;&gt;March&apos;s issue (#171)&lt;/a&gt;, &lt;a href=&quot;https://research.ucc.ie/profiles/A024/DesFitzgerald@ucc.ie&quot;&gt;Des Fitzgerald&lt;/a&gt; wrote &lt;a href=&quot;https://monocle.com/magazine/issues/171/the-agenda-comment/&quot;&gt;a commentary&lt;/a&gt; about why parks and recreation areas are developed in the first place. He says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The aim of the city park was never the benign provision of green space for recreation. Its aim was to guide and control — to nudge — the behavior of the urban working classes; to get them out of the pubs and into the air where they could see, and indeed keep an eye on, one another. Most importantly, park was there to maintain that most valuable of assets, the physical power of muscle: the actual productive capacity of industrial capialism, now encased in these men&apos;s suddenly valuable bodies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don&apos;t want to believe in this statement. Yet, my ignorance of the topic pushes me to the edge here. Recently, I started reading about managing the commercial and financial world, and my beliefs and thought lines are shaking from the ground. Thinking about why anyone would build a park if there was no commercial gain now makes sense. Although Fitzgerald doesn&apos;t offer any evidence besides one report from the 1833 UK Government committee, what he says can actually hold true: build parks to get people out of bars, boxing games, etc., so they stay healthy and can work more. Although this intention is not something I want to believe, I know that governments always incentivize commercial gains over pure public gains. I wish that governments would ensure that their people are healthier, wealthier, and happier. But I also know that there is no point in being a Pollyanna here. Truths and reality often hurt.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href=&quot;https://monocle.com/magazine/issues/171/&quot;&gt;Monocle&apos;s March issue (#171)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/70/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/70/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Weekday/Weekend Concepts are Useless</title><link>https://candost.blog/weekday-weekend-concepts-are-useless/</link><guid isPermaLink="true">https://candost.blog/weekday-weekend-concepts-are-useless/</guid><description>Focusing on continuation rather than chunking the time.</description><pubDate>Sat, 23 Mar 2024 12:46:56 GMT</pubDate><content:encoded>&lt;p&gt;Every morning, I wake up around 5-5:30, even on weekends and holidays. Till 9:00, I don&apos;t have any routine differentiating working days or weekends. That means I don&apos;t have weekdays or weekend concepts in my mornings. When people hear me saying, &quot;I don&apos;t see any day differently from the other. Days are in a continuation. Why would I treat any day differently?&quot; they find it weird and difficult to understand. Here, I want to explain why.&lt;/p&gt;
&lt;p&gt;Weekends are often considered as the time to sleep more and do things that don&apos;t get a chance during the week (e.g., going out on Friday and sleeping in on Saturday). This concept helps people relax and enjoy life. I agree. It feels good to leave the routine life and do things differently. Recovering the energy that&apos;s depleted during the working days is crucial so we can &lt;em&gt;survive&lt;/em&gt; one more week. And here, I tend to differ from many.&lt;/p&gt;
&lt;p&gt;Concepts like weekdays, weekends, and anniversaries are not for me. They don&apos;t bring anything to my life other than breaking &lt;a href=&quot;https://candost.blog/the-power-of-ritualization-rituals-vs-routines/&quot;&gt;my rituals (not &lt;em&gt;routines&lt;/em&gt;)&lt;/a&gt;. Let me explain why I see each day the same.&lt;/p&gt;
&lt;p&gt;The problem lies in putting weekday/weekend concepts at the center of our lives.&lt;/p&gt;
&lt;p&gt;If I have a workout plan centered around going to the gym (ideally) five times a week, I have to stick to the weekly concept. I can regularly go on Tuesday, Wednesday, Thursday, Saturday, and Sunday and plan my routines based on weeks; then, the program gets broken if I skip one day. Let&apos;s say I skipped Tuesday. Which workout am I going to do on Wednesday, then? Wednesday&apos;s original one or Tuesday&apos;s workout that I skipped?&lt;/p&gt;
&lt;p&gt;However, if the &lt;a href=&quot;https://candost.blog/goals-and-existence&quot;&gt;focus is on continuing the program&lt;/a&gt; regardless of the week concept, I can continue where I left off. If I need to skip the gym on Sunday, I can continue with my Sunday workout plan the next day I&apos;m at the gym.&lt;/p&gt;
&lt;p&gt;The other factor is my sleep, &lt;a href=&quot;https://www.hubermanlab.com/newsletter/toolkit-for-sleep&quot;&gt;the center of life&lt;/a&gt;. As we must sleep every day, focusing on circadian rhythm is the real deal. Sleeping in on weekends breaks my body and brain. Then during the week, I try to recover and can&apos;t get my shit together.&lt;/p&gt;
&lt;p&gt;Weekday and weekend concepts are brought by someone in the past to help with &lt;em&gt;something.&lt;/em&gt; And they are helpful for various things (e.g., workdays are useful for everyone working on the same day). But they aren&apos;t helpful for many other things. Instead of forcing myself to follow the process, I want to leverage them only when they are beneficial.&lt;/p&gt;
&lt;p&gt;I still work on weekdays and spend time with family and friends on weekends, but I don&apos;t sleep in on Saturday mornings just because there is nothing to do (and there are always some things to do). I wake up at the same time on Sunday as on Wednesday because my sleep routine is more important to me than the &quot;Friday night fun,&quot; and sleeping in is worse for my health. Of course, this is not a rule I must obey; there will be exceptions. And they have to remain an exception.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/weekday-weekend-concepts-are-useless/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/weekday-weekend-concepts-are-useless/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>There are No Analytics on This Blog</title><link>https://candost.blog/there-are-no-analytics-on-this-blog/</link><guid isPermaLink="true">https://candost.blog/there-are-no-analytics-on-this-blog/</guid><description>No page and visitor tracking. What I care about the conversations we have, not analytics.</description><pubDate>Wed, 31 Jan 2024 06:35:42 GMT</pubDate><content:encoded>&lt;p&gt;When I read &lt;a href=&quot;https://rachsmith.com/i-turned-off-analytics/&quot;&gt;Rachel&apos;s post&lt;/a&gt; about analytics, I realized that I wasn&apos;t alone in this journey.&lt;/p&gt;
&lt;p&gt;After starting to blog regularly on Medium in 2015, I became obsessed with analytics—how many people read my text, where they come from, and how many pages they have read. Then, I moved to my own website, which made things worse after I installed GA. I started playing with GA features to analyze whatever small traffic I had. It came to a point where I stopped writing, like &lt;a href=&quot;https://gkeenan.co/avgb/im-turning-off-my-website-analytics-because-im-very-brave-and-i-promise-i-truly-do-not-care-about-the-numbers&quot;&gt;Keenan&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I moved to Plausible Analytics to reduce the amount of data I had. Well, I thought that was the solution, at least. Naïve.&lt;/p&gt;
&lt;p&gt;I struggled a lot with little data. I tried to make sense of what people like more so I could write more about those topics or try other formats that didn&apos;t suit my writing.&lt;/p&gt;
&lt;p&gt;Over a year ago, something clicked in my mind, and I turned off all analytics. I realized &lt;a href=&quot;/newsletter/mektup-43/&quot;&gt;I didn&apos;t want to become a content creator&lt;/a&gt;; it was such a relief.&lt;/p&gt;
&lt;p&gt;That helped me to write even more. But, more importantly, be myself more. But when I moved this website hosting to Netlify, I (once more) turned on Netlify&apos;s server-side analytics. It collects very limited data (and that&apos;s why I opted in). Although it helped me in the beginning to learn so many 404 (not found) errors and broken links, it&apos;s not helpful anymore, and I&apos;m not checking the data at all (maybe 2-3 times a month).&lt;/p&gt;
&lt;p&gt;Today, I also canceled Netlify&apos;s analytics subscription (thanks Rachel for the reminder). That means no more data on visitors.&lt;/p&gt;
&lt;p&gt;Analytics of any kind are not helpful in my journey. It&apos;s harmful because it impacts &lt;a href=&quot;/navigating-the-writing-challenge-every-day/&quot;&gt;my writing&lt;/a&gt; (hence, &lt;a href=&quot;/why-is-writing-important/&quot;&gt;my thinking&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;What matters is &lt;a href=&quot;/on-the-purpose-of-life/&quot;&gt;the journey&lt;/a&gt; full of &lt;a href=&quot;/speaking-writing-and-high-quality-ideas/&quot;&gt;high-quality ideas&lt;/a&gt; &lt;a href=&quot;/passing-down-the-experience/&quot;&gt;shared with people&lt;/a&gt; &lt;a href=&quot;/why-is-it-so-hard-to-be-kind/&quot;&gt;who are kind enough&lt;/a&gt; to follow this blog and let me know when they have comments/thoughts on what I wrote.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. This decision goes into &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;my list of decisions that remove hundreds of decisions&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/there-are-no-analytics-on-this-blog/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/there-are-no-analytics-on-this-blog/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>New Books for Systems Thinking and Software Architecture and Strategy</title><link>https://candost.blog/journal/new-books-for-systems-thinking-and-software-architecture-and-strategy/</link><guid isPermaLink="true">https://candost.blog/journal/new-books-for-systems-thinking-and-software-architecture-and-strategy/</guid><pubDate>Tue, 30 Jan 2024 07:59:47 GMT</pubDate><content:encoded>&lt;p&gt;New members of the library.&lt;/p&gt;
&lt;p&gt;Weekend will be fun!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/journal/2024-01-30-09.02.23.jpg&quot; alt=&quot;Books stacked on top of eacher other. Books starting from top to bottom are “Learn to Think In Systems,” “Technology Strategy Patterns,” “Software Architecture Metrics,” “Systems Engineering Demystified,” “Refactoring,” “Building An API Product”&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/new-books-for-systems-thinking-and-software-architecture-and-strategy/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/new-books-for-systems-thinking-and-software-architecture-and-strategy/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Reading a QR Code without a Phone or a Scanner</title><link>https://candost.blog/journal/reading-qr-code-without-phone-or-scanner/</link><guid isPermaLink="true">https://candost.blog/journal/reading-qr-code-without-phone-or-scanner/</guid><pubDate>Sun, 28 Jan 2024 14:43:28 GMT</pubDate><content:encoded>&lt;p&gt;I always wonder how QR codes work and if I could understand myself. But I never even googled it (sometimes, it’s better to stay curious instead of directly reaching for information). While “walking” around the blogs and mastodon accounts, I came across &lt;a href=&quot;https://qr.blinry.org&quot;&gt;a post&lt;/a&gt; that literally explains how to read a QR code without any scanner. It’s fascinating to have people interested in and writing these kinds of things.&lt;/p&gt;
&lt;p&gt;Did I need to know this information to continue with my life? Absolutely no. Did I really learn it and can decode a QR code? No. I will probably never try to decode a QR code by hand, but it was a fun read!&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://qr.blinry.org&quot;&gt;https://qr.blinry.org&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/reading-qr-code-without-phone-or-scanner/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/reading-qr-code-without-phone-or-scanner/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Added Decap CMS, finally</title><link>https://candost.blog/journal/added-decap-cms-finally/</link><guid isPermaLink="true">https://candost.blog/journal/added-decap-cms-finally/</guid><pubDate>Sat, 27 Jan 2024 17:07:42 GMT</pubDate><content:encoded>&lt;p&gt;I just added &lt;a href=&quot;https://decapcms.org/&quot;&gt;Decap CMS&lt;/a&gt; to my blog. It&apos;s straightforward and helps me to post more on the go. I don&apos;t need a computer and commit everything manually to git. Decap syncs everything to the repository of this blog (which is publicly available &lt;a href=&quot;https://github.com/candostdagdeviren/candost.blog-astro&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Then Netlify picks up the deployment and deploys the blog.&lt;/p&gt;
&lt;p&gt;The authentication to CMS is also configured via Netlify and GitHub, making me love Netlify even more.&lt;/p&gt;
&lt;p&gt;To add Decap to this &lt;a href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt; blog, I followed &lt;a href=&quot;https://decapcms.org/docs/add-to-your-site/&quot;&gt;this tutorial&lt;/a&gt; and used a few examples from &lt;a href=&quot;https://aalam.vercel.app/blog/astro-and-git-cms-netlify&quot;&gt;this blog article from Vercel&lt;/a&gt; to experiment.&lt;/p&gt;
&lt;p&gt;I don&apos;t know why I waited so long and did not add a CMS to the blog (&lt;em&gt;I must admit that I liked writing blogs in VSCode, but a head-less CMS makes it easier to post things on the go&lt;/em&gt;).&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/added-decap-cms-finally/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/added-decap-cms-finally/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>ADRs and RFCs: Their Differences and Templates</title><link>https://candost.blog/adrs-rfcs-differences-when-which/</link><guid isPermaLink="true">https://candost.blog/adrs-rfcs-differences-when-which/</guid><description>Differences between ADRs and RFCs in software development. When and how to use each with practical guidance and templates for better decision-making.</description><pubDate>Mon, 22 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I wrote about &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;Request for Comments (RFC)&lt;/a&gt; documents a few years back, I hadn&apos;t tried Architecture Decision Records (ADRs) yet. Although both concepts have existed for years, their popularity has increased in recent years. I finally had a chance to try working with ADRs. When I did, I realized that many people struggle to decide which one to use and when. Although there is &lt;a href=&quot;https://adr.github.io&quot;&gt;some guidance&lt;/a&gt; on the Internet, I don&apos;t see any consensus on how to approach them. I want to share how I separate both and the small nuances that make the two very different.&lt;/p&gt;
&lt;p&gt;Let&apos;s look at their names first, which I observed people forgetting and going to conceptual or wishful thinking. When I read &quot;architecture decision records,&quot; it also clearly says that it&apos;s a decision record, so there has to be a decision to record it. When I read &quot;request for comments,&quot; it clearly states that the main goal is collecting feedback. With these in mind, I see the natural sequencing of the RFC-first approach in significant changes. The team can start anything by writing an RFC. Then, an accepted RFC can result in multiple ADRs that explain implementation strategies and the architecture of the change.&lt;/p&gt;
&lt;p&gt;But not every change requires an RFC. Most of the time, you need to move fast, and an RFC might take a long time and can produce a lot of noise, even though it should stop endless discussions. Or, most of the time, a team decides on a solution together that doesn&apos;t impact anyone else. Or, a few people get together and find a solution. They don&apos;t need to convince the team; instead, they ask if there are any strong &lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;objections&lt;/a&gt;. These are the cases for ADR instead of RFC.&lt;/p&gt;
&lt;p&gt;I think listing down the differences and asking a few questions will help everyone better decide which one to use, RFC or ADR.&lt;/p&gt;
&lt;h2&gt;Differences between RFCs and ADRs&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;RFCs&lt;/th&gt;
&lt;th&gt;ADRs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;For influencing/driving a change that may (but not necessarily) take time to finalize.&lt;/td&gt;
&lt;td&gt;For making/recording a decision that can be executed quickly.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Driven by the &lt;em&gt;community&lt;/em&gt; culture.&lt;/td&gt;
&lt;td&gt;Driven by the &lt;em&gt;team&lt;/em&gt; culture.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Help to get people on board for a change.&lt;/td&gt;
&lt;td&gt;Help make onboarding easier by giving context.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aim to &lt;em&gt;validate&lt;/em&gt; or &lt;em&gt;challenge&lt;/em&gt; the idea.&lt;/td&gt;
&lt;td&gt;Aim to &lt;em&gt;remind&lt;/em&gt; the idea.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Help uncover hidden knowledge in other parts of the organization (by getting feedback from people) and make an unknown unknown known.&lt;/td&gt;
&lt;td&gt;Help make better future decisions by making implicit decisions explicit.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aim to get feedback similar to incremental product delivery: get feedback early and find the best possible way.&lt;/td&gt;
&lt;td&gt;Aim to keep discussions short and on point.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;It can be small, but the impact should be significant enough &lt;em&gt;in the context&lt;/em&gt;.&lt;/td&gt;
&lt;td&gt;Are small, and the impact doesn&apos;t need to be significant.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The more people contribute to RFCs and give feedback, the better the result will be.&lt;/td&gt;
&lt;td&gt;Only the people who are needed are involved.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Should be part of general documentation.&lt;/td&gt;
&lt;td&gt;Should stay close to the codebase.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consensus-based decision-making is commonly used but can be consent-based as well.&lt;/td&gt;
&lt;td&gt;100% consent-based decision making.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Longer feedback periods&lt;/td&gt;
&lt;td&gt;Short feedback period to gather strong objections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mostly asynchronous process&lt;/td&gt;
&lt;td&gt;The process can be synchronous (by pairing) or asynchronous&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Has one of the statuses: Draft, Collecting Feedback, Accepted, Rejected, Abandoned&lt;/td&gt;
&lt;td&gt;Has one of the statuses: Draft, In Discussion, Decided, Implemented, Abandoned, Superseded&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;When do we use ADRs? When do we use RFCs?&lt;/h2&gt;
&lt;p&gt;It&apos;s better to start with an end in mind. That demands asking the question, &quot;What&apos;s our goal?&quot;&lt;/p&gt;
&lt;p&gt;Do you want to introduce a change? Yes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does the change affect others and require buy-in? If yes, &lt;strong&gt;write an RFC&lt;/strong&gt; (you have to collect feedback).&lt;/li&gt;
&lt;li&gt;Is the change itself small, but the impact is significant? If yes, &lt;strong&gt;write an RFC&lt;/strong&gt; (you still &lt;em&gt;have to&lt;/em&gt; get feedback).&lt;/li&gt;
&lt;li&gt;If no, &lt;strong&gt;write an ADR.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You collected feedback on an RFC and decided to move forward. What do you do? &lt;strong&gt;Write ADRs&lt;/strong&gt;—as few as possible, as many as you need.
Have you decided to introduce a change with everyone together (maybe in a meeting) and don&apos;t need to onboard anyone else? &lt;strong&gt;Write an ADR.&lt;/strong&gt;
Do you need to record a past decision that you still remember the details? &lt;strong&gt;Write an ADR.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s it. Focus on the end result. There is no need to overthink it. Start now and evolve the processes in time. Done is better than perfect.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Templates&lt;/h2&gt;
&lt;p&gt;We also need to reduce the difficulty of writing a document and clarify expectations for everyone. Both ADR and RFC processes should be as lightweight as possible. That&apos;s where templates come handy. Templates nudge people&apos;s thinking and encourage them to structure their thinking.&lt;/p&gt;
&lt;p&gt;Feel free to use and adapt the templates below.&lt;/p&gt;
&lt;h2&gt;ADR Template&lt;/h2&gt;
&lt;h3&gt;ADR-XXX: Title&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Draft, In Discussion, Decided, Implemented, Abandoned, Superseded
&lt;strong&gt;Authors:&lt;/strong&gt;
&lt;strong&gt;Decision Date:&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;Context / Problem&lt;/h4&gt;
&lt;p&gt;// Define the problem and explain the context driving the decision. What was the need? Link your text with relevant materials. Don&apos;t write a novel; keep it as short as possible but as long as necessary.&lt;/p&gt;
&lt;h4&gt;Decision &amp;amp; Rationale&lt;/h4&gt;
&lt;p&gt;// Explain your decision in one sentence. Then, explain your rationale in bullet points—focus on why you made this decision.&lt;/p&gt;
&lt;h4&gt;(Expected or Known) Consequences&lt;/h4&gt;
&lt;p&gt;// Explicitly list down the consequences. If you can, also think and write about the consequences of consequences (&lt;a href=&quot;/chestertons-fence/&quot;&gt;second-order thinking&lt;/a&gt;).&lt;/p&gt;
&lt;h4&gt;Considered Options (and why they haven&apos;t been chosen?)&lt;/h4&gt;
&lt;p&gt;// List down all the other options you considered with their pros/and cons. Explain in one sentence why didn&apos;t you choose that option.&lt;/p&gt;
&lt;h4&gt;Appendix / References&lt;/h4&gt;
&lt;p&gt;// Add additional materials that can give more context or are relevant to the decision.&lt;/p&gt;
&lt;h4&gt;Update Log: &lt;em&gt;(not needed if the ADRs are committed to the repository)&lt;/em&gt;&lt;/h4&gt;
&lt;p&gt;// After the ADR moves out of Draft status, log changes here. A good analogy for this log is having them as meaningful commit messages.&lt;/p&gt;
&lt;p&gt;Example Log:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2024-01-01: Moved the ADR to In Discussion&lt;/li&gt;
&lt;li&gt;2024-01-02: Added an extra considered option: XYZ&lt;/li&gt;
&lt;li&gt;2024-01-03: Abandoned the ADR. The problem is invalid; no solution is needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;RFC Template&lt;/h2&gt;
&lt;h3&gt;RFC-XXX: Title&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Draft, Collecting Feedback, Accepted, Rejected, Abandoned
&lt;strong&gt;Authors:&lt;/strong&gt;
&lt;strong&gt;Feedback Deadline:&lt;/strong&gt;
&lt;strong&gt;Last Update Date:&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;Need (Context / Problem)&lt;/h4&gt;
&lt;p&gt;// Why do we need to have this change? What was the main reason why you came up with this proposal? The explanation should be as detailed as necessary to present the need. Use examples if possible.&lt;/p&gt;
&lt;h4&gt;Approach&lt;/h4&gt;
&lt;p&gt;// How are you planning to satisfy the need defined above? The explanation should be as detailed as necessary to fulfill the need.&lt;/p&gt;
&lt;h4&gt;Pros &amp;amp; Cons&lt;/h4&gt;
&lt;p&gt;// What are the benefits of the proposed approach? Focus on the factual benefits rather than personal points of view.&lt;/p&gt;
&lt;h4&gt;Alternatives (and why aren&apos;t they the chosen one)&lt;/h4&gt;
&lt;p&gt;// Write down &lt;a href=&quot;https://sive.rs/options&quot;&gt;at least two alternatives&lt;/a&gt; together with their pros and cons.&lt;/p&gt;
&lt;h4&gt;Appendix / References&lt;/h4&gt;
&lt;p&gt;// Add additional materials that can give more context or are relevant to the decision.&lt;/p&gt;
&lt;h4&gt;Update Log:&lt;/h4&gt;
&lt;p&gt;// After the ADR moves out of Draft status, log changes here. A good analogy for this log is having them as meaningful commit messages.&lt;/p&gt;
&lt;p&gt;Example Log:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2024-01-01: Moved to collecting feedback&lt;/li&gt;
&lt;li&gt;2024-01-10: Added a missed disadvantage for the proposed approach&lt;/li&gt;
&lt;li&gt;2024-01-21: RFC is accepted with minor changes&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/adrs-rfcs-differences-when-which/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/adrs-rfcs-differences-when-which/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Rituals, not Traditions</title><link>https://candost.blog/journal/rituals-not-traditions/</link><guid isPermaLink="true">https://candost.blog/journal/rituals-not-traditions/</guid><pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week, I suddenly had to fly to my hometown in Turkey to attend my uncle&apos;s funeral. Although this wasn&apos;t the first funeral I attended, it was the first one that I helped with organizational work. This experience taught me so many tiny details I wasn&apos;t aware of or never realized that they happened in funerals. I still don&apos;t know why we did many small things that way; I also didn&apos;t ask. Even if I asked, I know nobody could have answered logically.&lt;/p&gt;
&lt;p&gt;After the funeral, I was talking with a German friend. I told him that I learned many things about my culture in three days. While I was explaining the traditions I wasn&apos;t aware of, he said those are more rituals than traditions. I couldn&apos;t agree more. They are better than traditions.&lt;/p&gt;
&lt;p&gt;One example is carrying the coffin. After the special funeral prayer, people grab the encoffined body from its resting table to carry to the burial place. In a matter of seconds, tens of people try grabbing the coffin and putting it on their shoulders. While people are rushing, they also race with each other to carry it at least for a few seconds. The coffin moves very slowly, but everyone acts quickly. Nobody thinks or talks; no one has priority to carry the coffin; everyone carries it for a few seconds and hands over the duty to the next person giving a hand. This goes on until the coffin is in the burial place. This act means they show their respect and love by carrying the person on their shoulders, above themselves, on the person&apos;s last journey before they become part of the soil, going back to Mother Earth. This behavior is not a tradition. It&apos;s a ritual. It shows the relatives of the person inside the coffin that the person was respected and loved.&lt;/p&gt;
&lt;p&gt;These kinds of rituals are beautiful and meaningful. They bring people together and close. They help form the community. &lt;a href=&quot;https://candost.blog/the-power-of-ritualization-rituals-vs-routines/&quot;&gt;When things become rituals&lt;/a&gt;, we do it regardless of how it goes and still feel grateful, joyful, and respectful. And that&apos;s how things are supposed to happen.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/rituals-not-traditions/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/rituals-not-traditions/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Learnings on Dealing with Ambiguity</title><link>https://candost.blog/learnings-on-dealing-with-ambiguity/</link><guid isPermaLink="true">https://candost.blog/learnings-on-dealing-with-ambiguity/</guid><description>When things are chaotic, and there are many unknowns, good leaders approach things differently and systematically, sometimes without knowing.</description><pubDate>Fri, 29 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This post is about something I learned that helped me set my expectations in various situations right and position myself better in ambiguous situations.&lt;/p&gt;
&lt;p&gt;Since I became an engineering manager, I had more chances to observe what makes leaders better in chaotic situations. Be it an organizational change, shifting culture, or dealing with layoffs. Despite many unknowns, they solve problems in one way or another. They stay calm, focus on the problem, evaluate the constraints, and lead people to a solution. The solution might not be ideal, but in any case, I observed how they do it, their behaviors, and their secrets. Here are my observations.&lt;/p&gt;
&lt;p&gt;It all starts with accepting the reality. Let&apos;s take an organizational change as an example. It&apos;s one of the most ambiguous situations as many teams break up or change some of their members, and nobody knows how people will react to these changes. There is a big risk of turning high-performing teams into low-performing ones. With all that, many people struggle to &lt;em&gt;accept&lt;/em&gt; changes, except for good senior leaders. They know there is no other way than to go through that rough time. Let me repeat because this is not obvious when you&apos;re dealing with a change: &lt;em&gt;there is no other way than going through it&lt;/em&gt;. And truly understanding that sentence helps a lot to change the mindset. Instead of arguing with reality (as &lt;a href=&quot;https://tamaralevitt.com/&quot;&gt;Tamara Levitt&lt;/a&gt; says, &quot;It hurts when we argue with reality&quot;), leaders see ambiguity as a difficult puzzle to solve and dedicate themselves to finishing it.&lt;/p&gt;
&lt;p&gt;As something becomes a puzzle, every piece leaders place builds the picture. Instead of putting every piece together simultaneously, they find the most important and obvious problem and solve that one first. Then, they go to the next. What they do is not new to me or (probably) you. The learning for me was realizing how &lt;em&gt;this process repeats until the puzzle &lt;strong&gt;changes&lt;/strong&gt; again&lt;/em&gt;. The puzzle rarely changes as a whole, but some parts definitely evolve and shape differently. The puzzle will never be completed, but an evolving organization demands understanding its constraints.&lt;/p&gt;
&lt;p&gt;I don&apos;t want to dive into organizational constraints and how to understand them here because it&apos;s a big topic in itself (good reads: The Goal by Eliyahu Goldratt and Thinking in Systems: A Primer by Donella Meadows). I observed leaders have quick, deep dives into certain areas to learn more about what constraints they deal with. While they can see the big picture and approach problems holistically, they have the disadvantage of relying on others in every detail. That&apos;s why they gather people around them to learn more details quickly and untangle the puzzle&apos;s complex parts. While doing so, instead of taking the decision, they bring their holistic thinking and big-picture vision to their teams so the teams can find a way out of uncertainty.&lt;/p&gt;
&lt;p&gt;Their actions reduce the ambiguity &lt;em&gt;today&lt;/em&gt; and build for tomorrow. This one is easier said than done. They build a culture, change it, and rebuild it. And most of the time, they explicitly admit that they don&apos;t know. How these leaders approach the future is similar to a drawing by WaitButWhy with a tweak.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/life-paths-wait-but-why.png&quot; alt=&quot;Life Paths by WaitButWhy&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The only difference to the picture above is the leaders know where they want to reach but don&apos;t know how to get there. That&apos;s why, when asked, their answers are often vague and lack concrete solutions. Until now, they brought people on a path. And there are countless paths ahead. They can&apos;t predict the future, yet they will lead others in one path of the many ahead. That&apos;s why they focus on finding the best way in every junction and admit that they don&apos;t have all the answers.&lt;/p&gt;
&lt;p&gt;These are not the traits I observed, but they are the ones that make the difference and show how mature a leader is. The next time when you find yourself in an ambiguous situation, come back and read this. Accept the reality and tackle problems, as Anne Lamott put it, &quot;Bird by bird, buddy. Just take it bird by bird.&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/learnings-on-dealing-with-ambiguity/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/learnings-on-dealing-with-ambiguity/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Number One in Formula One</title><link>https://candost.blog/notes/54d/</link><guid isPermaLink="true">https://candost.blog/notes/54d/</guid><pubDate>Sun, 24 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s a race where a millisecond can change the result. It&apos;s a race where the engineering is living on its edge. It&apos;s a race in which excellence is not sought but required. And that starts from the entrance of the building and goes deep to the screws in the car. F1 is not only a race on the track but also a competition in construction, engineering, culture, and mentality. Winning a race is only the result of millions of dollars and countless hours of work in designing materials in millimeters of precision. Yet, building that precision doesn&apos;t start in engineering. It starts with the tidiness of the reception desk, the cleanness of the toilets, and the outlook of every individual&apos;s appearance. Mercedes, who dominated the formula year after year between 2014 and 2021, is where we see the excellence. When Wollf joined Mercedes, he saw the problems right in the reception. He saw the dirty toilets. Instead of avoiding them and focusing on the car, he showed how to clean toilets perfectly. He showed how to bring the best of everyone out, and he expected an organized and clean workplace. Because he knew only then people could focus on what really mattered. Wollf showed that leadership starts with the environment and taking action instead of blaming others. Toto Wollf created a blameless culture by defending everyone in the team who made mistakes but showed authority not to tolerate unwanted behavior. The inclusive environment, where he believed in the good in people and didn&apos;t tolerate bad behavior, won the constructor&apos;s championship for eight and the driver&apos;s championship for seven consecutive years. That&apos;s the leadership we should seek out. Start from the obvious problems, solve them, and go to the next. Create a culture where everyone does the same. Once we solve the simple problems, we can focus on the more complicated and complex ones. In this culture, keep all the people who try their best without blaming anyone for mistakes, and set your paths apart with people who don&apos;t behave in the way that this culture needs.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39a/&quot;&gt;39a: Best Practices and Consistent Improvement&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href=&quot;https://hbr.org/2022/11/number-one-in-formula-one&quot;&gt;Number One in Formula One&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/54d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/54d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Using the Promotion Process to Grow as a Manager</title><link>https://candost.blog/notes/8j/</link><guid isPermaLink="true">https://candost.blog/notes/8j/</guid><pubDate>Sun, 24 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Managers have to shape their skills according to the team&apos;s needs and the constraints under which they operate. As each team has its unique context, it&apos;s quite challenging to put all managers into one career path. Moreover, many organizations lack clarity and direction about career development for managers. That&apos;s why applying for promotion is one of the guaranteed ways to get feedback. While preparing for promotion, detach yourself from the result of the process. The process can be successful or not; it doesn&apos;t matter. If you don&apos;t get the title, you&apos;ll learn what you are missing clearly. If you get the promotion, then you know you did the right thing. If you get a negative result, don&apos;t get frustrated; use it to learn more about what&apos;s needed for the next step. Focus on your career growth over the long run.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/5&quot;&gt;5: Managing Promotions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/11/&quot;&gt;11: How to move to the next level&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b1/&quot;&gt;41b1: Our minds are changeable; we can get rid of our inner critic&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46b/&quot;&gt;46b: Impact of Imposter Syndrome&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46c/&quot;&gt;46c: Have regular career and relationships check-ups&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46d1/&quot;&gt;46d1: Measuring self-worth comes from negative experiences&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/68/&quot;&gt;68: Thinking Retrospectively Helps to Correct The Course&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8j/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8j/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Passing Down The Experience</title><link>https://candost.blog/passing-down-the-experience/</link><guid isPermaLink="true">https://candost.blog/passing-down-the-experience/</guid><description>A small story explaining my realization of the value of knowledge-sharing</description><pubDate>Sat, 25 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I was in the tenth grade in high school, a man appeared next to our math teacher at the beginning of a class. I barely remembered his face then, but soon after introducing himself, I knew who he was as I had heard of him many times. He was one of the most successful graduates from our high-school, just graduated before I started.&lt;/p&gt;
&lt;p&gt;That day was a surprise for me to see that guy because the lecture was Math, not a meet-with-graduates event. He answered a lot of questions coming from us. This conversation was one of my main reasons for choosing computer science. One guy, taking a bit of time from his life and answering random questions, had such a great impact on me.&lt;/p&gt;
&lt;p&gt;Sixteen years later, I appeared in a class next to the same Math teacher (in Spring 2023). Although I am not as successful as the other guy, I still wanted to answer questions that students might have about computer science, programming, working abroad, and life in general. I wasn&apos;t surprised to see students&apos; questioning eyes like I had had years ago. When I introduced myself and told them I&apos;m a 2009 graduate, their eyes broadened because it&apos;s been so long. Their graduation year would be 2023. I told my short story and career. Then, we started an AMA.&lt;/p&gt;
&lt;p&gt;So, many questions. About computer engineering. About university. About life. About Germany. About expat life, my salary, and even racism. I answered as much as I could with full transparency. I also shared my perspective on what lies ahead in front of them, just like the guy did when I was a student.&lt;/p&gt;
&lt;p&gt;On my way back to Berlin, I thought about this experience I had while sharing what I&apos;ve learned in sixteen years. Also, I realized how much fun our conversation was. The guy who appeared next to the same Math teacher probably had the same intentions as me as I passed down the experience to students who were about to become adults. We had the same experience.&lt;/p&gt;
&lt;p&gt;Because they knew nothing about work.&lt;/p&gt;
&lt;p&gt;Because they have seen only a little.&lt;/p&gt;
&lt;p&gt;Because Turkish culture doesn&apos;t allow them to be adults until they reach their 20s.&lt;/p&gt;
&lt;p&gt;Because they have a huge exam in front of them and racing with another million people and their only job is to study.&lt;/p&gt;
&lt;p&gt;Because their only knowledge comes from people around them, who are biased by the environment.&lt;/p&gt;
&lt;p&gt;Because they never get someone external to share knowledge.&lt;/p&gt;
&lt;p&gt;Because they never expect to reach a person who once was sitting in the same seat.&lt;/p&gt;
&lt;p&gt;What I shared and what the guy shared years ago was unbiased. I had no idea about any student&apos;s life situation. They asked me questions and the only bias I had was my life, which they wanted to learn anyway.&lt;/p&gt;
&lt;p&gt;Some of the students had curious eyes and were care­fully listening to every single word coming out of my mouth. Those curious eyes reminded me of something else.&lt;/p&gt;
&lt;p&gt;Way way back when I was again in the same high school, but in my first year, we had a project for boarding schools in my hometown. These boarding schools consist of small kids coming from villages and living in dormitories to get an education when they are seven years old. Our project was going there in the evenings and helping them with their homework and explaining some topics they didn&apos;t understand in lectures during the day. The kids were poor, there were not enough teachers, and they didn&apos;t have access to enough resources. They also didn&apos;t have parents nearby. When we arrived there on the first day, their eyes were shining because they realized they were not alone in the evenings anymore. Instead of being alone in a fifty-bed room on their beds trying to spend time or study, they were with us, getting help on doing homework.&lt;/p&gt;
&lt;p&gt;I saw the same shining curiosity and hunger for attention and information. When I passed down my knowledge and experience, both high school and boarding school students were smiling and all looked happy.&lt;/p&gt;
&lt;p&gt;Last spring, I once again realized how valuable it is to share what I learn and experience in life. That was the reason I started this blog, newsletter, and podcast. The same reason why I went to my high school. Holding AMAs, talks, and sharing an experience brings information about the things you can&apos;t google.&lt;/p&gt;
&lt;p&gt;It&apos;s such a motivating interaction to meet with others and talk about life, experiences, and leanings. I am fortunate and privileged to be where I am today. I&apos;m also aware that many people pursue my road. The only way to continue on my road is to make it better and easier for people coming after me. And the only way to do that is by sharing what I learned and experienced.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/passing-down-the-experience/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/passing-down-the-experience/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Using Delegation Checklist</title><link>https://candost.blog/notes/3c3a/</link><guid isPermaLink="true">https://candost.blog/notes/3c3a/</guid><pubDate>Fri, 10 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I try to delegate a job to people, I mostly consider their skills, where they want to go, the timeline of the work, the risk of the person failing, and how mature I am at that piece of work so I can help the person. I know there are more systematic ways and more things to consider. I mostly leaned on my biases in these delegation decisions and failed. I researched and asked my mentor and a few other leaders around me. Most of the time, the result was what I was already doing. I couldn&apos;t find any systematic way that can apply to my position as an engineering manager. Whenever my quick internet research doesn&apos;t give satisfying answers, I turn to my small library. This time, I found a great set of questions (in Management 3.0 book) to use as a framework. Answering these questions before delegating a piece of work should eliminate all my biases and give me the right mindset.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Is the risk factor of delegating this work adequately addressed?&lt;/li&gt;
&lt;li&gt;Do the people have the right empowerment skills and discipline?&lt;/li&gt;
&lt;li&gt;Have you considered and selected the right level of authority?&lt;/li&gt;
&lt;li&gt;Have you considered the question of delegating to individuals or teams?&lt;/li&gt;
&lt;li&gt;Is what you are delegating a discrete chunk of work?&lt;/li&gt;
&lt;li&gt;Do the people have the skills to do this particular kind of work?&lt;/li&gt;
&lt;li&gt;Do the people have the right format for the work products to use?&lt;/li&gt;
&lt;li&gt;Do the people have the tools necessary to be successful?&lt;/li&gt;
&lt;li&gt;Do the people know what the results should look like?&lt;/li&gt;
&lt;li&gt;Did you set the boundary conditions for the work (for example, budget, time, resources, and quality)?&lt;/li&gt;
&lt;li&gt;Do the people know when the work is due?&lt;/li&gt;
&lt;li&gt;Do the people know what progress looks like?&lt;/li&gt;
&lt;li&gt;Do the people know how often to report to you on progress (adhering to interim milestones)?&lt;/li&gt;
&lt;li&gt;Is someone available (you or another person) to coach or mentor the people in case they need help?&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;12: Engineer Autonomy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/15/&quot;&gt;15: What should you do when your manager delegates a task to you&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19/&quot;&gt;19: Decision-Making Strategies&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;31: Accountability and Learning Culture in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/61/&quot;&gt;61: What to delegate?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Management 3.0 Book by Jurgen Appelo&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3c3a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3c3a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Essentialism Book Review and Notes</title><link>https://candost.blog/books/essentialism-book-review-and-notes/</link><guid isPermaLink="true">https://candost.blog/books/essentialism-book-review-and-notes/</guid><description>A book I used as a think-along partner when I felt the pressure that I have to accomplish all the things waiting for me.</description><pubDate>Sun, 29 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How Strongly I Recommend It:&lt;/strong&gt; 5/10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How Likely I Will Gift It:&lt;/strong&gt; 7/10&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Who Should Read It?&lt;/h2&gt;
&lt;p&gt;Anyone who is pulled into too many directions in their lives and wants to change the situation and no idea how.&lt;/p&gt;
&lt;h2&gt;Why should you read it?&lt;/h2&gt;
&lt;p&gt;I read it because I felt the pressure to do everything, do everything right, and do whatever is expected of me. I didn&apos;t really stop and consider what I &lt;em&gt;really wanted&lt;/em&gt; or what &lt;em&gt;really mattered&lt;/em&gt;. I tried and struggled to accomplish many things. I read it not because I had no idea what I could do but because I needed a think-along partner in this. I already knew many things mentioned in the book, and maybe only 5-10% was new to me. However, it helped me debate ideas and reiterate what I had forgotten. If you&apos;re like me, if you have already read many productivity things and know what you can do but are still pulled into many directions, then it can be a good book to accompany you while thinking.&lt;/p&gt;
&lt;h2&gt;Reding Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Create a space to think, ponder, explore—a space to escape. That will help you retrospect on what happened and find what&apos;s important.&lt;/li&gt;
&lt;li&gt;Read timeless ideas and create space to read more. Reading helps you find ideas, learn them, and debate with authors.&lt;/li&gt;
&lt;li&gt;Listen to what&apos;s NOT said, read between the lines when people communicate, and focus on finding what their main point is.&lt;/li&gt;
&lt;li&gt;Keep a journal. You can start with short entries every day. Read your journal every thirty or ninety days to see the bigger picture of what happened. We tend to be shortsighted with daily situations and don&apos;t see the progress or changes that happened in longer periods.&lt;/li&gt;
&lt;li&gt;Sleep for high performance and clear thinking. 7-9 hours sleep boosts your performance. (&lt;em&gt;I read this so many times and also tried to increase my sleeping hours from 6 to 7.5, and I can say that it&apos;s true.&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Clarify your essential intention. What&apos;s the one thing that you want to do? What&apos;s the one thing that will eliminate nonessential things? What&apos;s one decision you can make that will remove hundreds of distractions?&lt;/li&gt;
&lt;li&gt;Say no to things that distract you, or you lack the capacity for. You don&apos;t have to say no directly; you can learn nice and kind ways to do it.&lt;/li&gt;
&lt;li&gt;Be aware of biases and try removing commitments one by one if they don&apos;t add any value to the essential thing in your focus.&lt;/li&gt;
&lt;li&gt;Limit yourself to liberate yourself. The boundaries you put allow you to be free and do more of what matters instead of everyone pulling you in different directions.&lt;/li&gt;
&lt;li&gt;Make progress with small steps instead of a big-bang approach. Do an MVP (minimum viable product) for whatever you&apos;re doing. In the end, reward yourself with something you can see. It can be the simplest thing, like giving yourself a reward sticker or so. But make it visual.&lt;/li&gt;
&lt;li&gt;Find your routine or rebuild yours so you don&apos;t have to think about the essential thing every single time. It should become part of your routine and turn it into a ritual that you do no matter what.&lt;/li&gt;
&lt;li&gt;You can&apos;t focus on two things simultaneously. Focus on the essentials. And be in that moment to fully live and build the essential thing. Being present while doing what&apos;s essential is the most essential thing.&lt;/li&gt;
&lt;li&gt;Build your life with essentials in the center and let them grow and kick out nonessential things from your life. You&apos;ll find a better life and peace and feel the progress you made with what really matters.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/essentialism-book-review-and-notes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/essentialism-book-review-and-notes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building A Personal Library</title><link>https://candost.blog/newsletter/mediations-4/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-4/</guid><description>The importance of building a personal library full of unread books.</description><pubDate>Sat, 28 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I did some book shopping. All the books are related to work: leadership, coaching, behavioral psychology, and dealing with difficult conversations. However, neither the book&apos;s details nor how I am going to read them is what I want to talk about here. Today, I want to talk about why I buy books while many others are waiting for me to read.&lt;/p&gt;
&lt;p&gt;While buying books, I had one thought in my mind: I need to have resources under my hand &lt;em&gt;whenever&lt;/em&gt; I need them. I&apos;m not going to read all these books during the next year or two, or some of them will be unread for years. Although &lt;a href=&quot;/how-to-get-to-the-end-of-a-pile-of-unread-books/&quot;&gt;I skim every book I buy to understand what it talks about&lt;/a&gt;, I don&apos;t think most of the books should be read cover to cover at all. Most of the business books do not deserve more than an hour or two. Yet, we &lt;em&gt;should&lt;/em&gt; have them, &lt;em&gt;know&lt;/em&gt; what&apos;s inside, and take them off the shelf when needed. They are there to learn quickly and get suggestions in specific situations. And that&apos;s the essence of building a personal library.&lt;/p&gt;
&lt;p&gt;My personal library is there to offer me an escape. It gives me a hand to get out of difficult situations—be it something related to work or personal life. Both fiction and non-fiction books are my way to converse, learn, and widen my perspective. In the books, I can find myself, relate to characters, and develop my personality and professionalism. The library is like no other thing that you can have.&lt;/p&gt;
&lt;p&gt;People often compare the internet with books and argue about having everything on the internet. To me, it&apos;s like comparing potatoes and grapes; both can feed you, but you need to cook the potatoes first. The high-quality books are like grapes; you can eat one grape without cooking. The internet is like potatoes. You must put in extra work to cook those potatoes. The internet is full of junk, so we have to do more research to validate an idea. I&apos;m not saying that the internet is useless; it&apos;s super powerful, but it&apos;s also full of garbage, and we have to work through it to find the gems. For books, finding gems is much easi&lt;em&gt;er&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I must also admit that 90% of the books are also garbage. However, it&apos;s easier to identify them. Even though the book publishing business is ruthless—editors criticize the ideas in a book and make sure that the whole content is sound and clear, it&apos;s still much better than the internet. The internet is full of people like you and me, and there isn&apos;t any review process. Everyone can write whatever they want wherever they want.&lt;/p&gt;
&lt;p&gt;That&apos;s why my library is my way of Googling. When I need to learn something, especially about topics like psychology, leadership, philosophy, and business, books are the best way to acquire that information. Many people search for a mentor but can&apos;t find one. I found my mentors in the books. They are one step away from my desk and 7/24 available. I will keep growing my library and always have at least 80-90% of the books waiting for someone to read them. But I&apos;m fine with this because I have other plans for these books.&lt;/p&gt;
&lt;p&gt;My suggestion to you is to start building your library if you don&apos;t have one. If you have one, try to enrich it. That&apos;s the most important thing you can do for yourself. Not reading the books is okay. Not every book deserves to be read cover-to-cover. Skim the new books to understand what they are about so you will know where to look later. The good thing is books never complain, and they will be waiting for you when you &lt;em&gt;really&lt;/em&gt; need them.&lt;/p&gt;
&lt;h2&gt;Some Things I Found Great&lt;/h2&gt;
&lt;p&gt;There are only a few things this time. I don&apos;t always find great things online. Saying something great is difficult. Sometimes, I spend my time with crap, and that&apos;s okay. Without knowing what&apos;s bad, I can&apos;t judge what&apos;s good.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;It hurts when I argue with reality.&quot; is a sentence I heard while meditating using the Calm app, and I took a note.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/_zxVcpOzOPY&quot;&gt;Finding the World&apos;s Loneliest Person&lt;/a&gt; — I usually enjoy Yes Theory&apos;s videos. This one was special because it reminded me that solitude doesn&apos;t mean loneliness. Many people feel lonely while surrounded by people (like I sometimes do), and some people don&apos;t feel alone despite living solo in the middle of nowhere.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=-BIDA_6t3VA&quot;&gt;Strangers Meet Without Seeing Each Other - Pure Impressions Episode 4&lt;/a&gt; — It&apos;s an emotional video. It reminds me how everyone has something going on in their lives, and we never learn until we really ask and &lt;em&gt;listen&lt;/em&gt;. I not only loved the questions but also admired how deeply and honestly people answered these questions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Recently, I Thought About&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;how I can apply second- and third-order thinking more.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;While making a decision, I&apos;m trying to remind myself to look at the second and third-order consequences of the decision. Thinking about the immediate consequences of a decision is first-order thinking. First-order thinking is often biased. That&apos;s why we need to look at what would be the consequences of consequences of the decision—second-order thinking. So, we take one more step and try to judge the side (and longer-term) effect of a decision. But if the decision is quite important, we need to also think about the third-order consequences. I learned that if I don&apos;t set some time aside, I will never think about these things. That&apos;s why I decided to change a few things in how I think and work and ensure that I have time for the right things.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-4/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-4/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>My wish list for the world in 2050</title><link>https://candost.blog/journal/the-world-in-2050/</link><guid isPermaLink="true">https://candost.blog/journal/the-world-in-2050/</guid><pubDate>Sun, 08 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was watching &lt;a href=&quot;https://www.youtube.com/watch?v=IJZRtbWoa60&quot;&gt;a video&lt;/a&gt; from Easy German (as I&apos;m learning German), and they did a street interview and asked a question to the people: &quot;How will the world look like in 2050?&quot; While watching the video, I started thinking about how the world would be in 2050. But unlike the Easy German team&apos;s goal, I didn&apos;t want to guess the world in 2050. So, I wanted to create a realistic wish list that I believe would move the world in a better direction.&lt;/p&gt;
&lt;p&gt;I wish the world would:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Have banned automobiles from using fuel everywhere.&lt;/li&gt;
&lt;li&gt;Have improved the power storage systems that can be used in commercial aviation.&lt;/li&gt;
&lt;li&gt;Have started supporting and funding environmentally friendly implementations in under-developed countries and started saving the planet.&lt;/li&gt;
&lt;li&gt;Have made many services digital-only, such as government and life administration services.&lt;/li&gt;
&lt;li&gt;Have figured out the dichotomy of social media and real-life relationships, and social media has evolved in a way that helps to harden real-life relationships instead of killing them.&lt;/li&gt;
&lt;li&gt;Have no more wars (but I know there will be, as there was no time in history without a war).&lt;/li&gt;
&lt;li&gt;Have closed the gender pay gap, and gender inequality is not an issue anymore.&lt;/li&gt;
&lt;li&gt;Have got to a point where everyone can live freely without any oppression from others, such as issues LGBTI+ people face and racism no longer exist.&lt;/li&gt;
&lt;li&gt;Have closed the strong division between poor and rich a little bit while the middle class has less crash in between.&lt;/li&gt;
&lt;li&gt;Have made cities more relaxed, chill, and liveable without traffic and stress, and urban planning evolved in a way that promotes healthy living without depending on cars and travel.&lt;/li&gt;
&lt;li&gt;Have recycled most of the materials.&lt;/li&gt;
&lt;li&gt;Have cleaned the oceans and rivers from trash.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I know most of these things will either not happen or will be in progress. Wishing is free, and if I&apos;m wishing for these things, I also feel responsible for taking steps toward supporting these changes. I don&apos;t know what that support looks like, but I&apos;m starting to think about it as the first step.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/the-world-in-2050/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/the-world-in-2050/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Blocking crawlers for training language models</title><link>https://candost.blog/journal/crawlers-and-robots-txt/</link><guid isPermaLink="true">https://candost.blog/journal/crawlers-and-robots-txt/</guid><pubDate>Tue, 03 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you look at the footer of the website, all my content is licensed under &lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/&quot;&gt;CC BY-NC-SA 4&lt;/a&gt;, Attribution-NonCommercial-ShareAlike 4.0 International. That means none of my posts can be used for commercial purposes.&lt;/p&gt;
&lt;p&gt;Not that I&apos;m against AI or using language models; I just don&apos;t like the idea of any company using my text to train their language model for their commercial purposes without asking for my permission. Looking at my server-side metrics on Netlify, robots.txt has been requested ~1.5k in the last 30 days, so, some of these are asking for permission or at least looking for something.&lt;/p&gt;
&lt;p&gt;After reading &lt;a href=&quot;https://blog.jim-nielsen.com/2023/robots-txt/&quot;&gt;Jim&apos;s&lt;/a&gt;, &lt;a href=&quot;https://chriscoyier.net/2023/04/21/the-secret-list-of-websites/&quot;&gt;Chris&apos;s&lt;/a&gt;, &lt;a href=&quot;https://manuelmoreale.com/bots-spiders-and-crawlers-the-results&quot;&gt;Manuel&apos;s&lt;/a&gt;, and &lt;a href=&quot;https://adactio.com/journal/20515&quot;&gt;Jeremy&apos;s&lt;/a&gt; posts, it was the time I set up robots.txt.&lt;/p&gt;
&lt;p&gt;Also, I know from &lt;a href=&quot;https://manuelmoreale.com/bots-spiders-and-crawlers-the-results&quot;&gt;Manuel&apos;s experiment&lt;/a&gt; that most bots don&apos;t care about whatever you put in robots.txt. Even Manuel says,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So, what&apos;s the takeaway here? I guess that the vast majority of crawlers don&apos;t give a shit about your robots.txt. As for me and this site, I think I&apos;m gonna revert back and allow bots to just do whatever the hell they want. This seems a worthless battle to fight for no real benefit to my general mission which is to connect with other human beings.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then why do I still put in the effort? I want to choose a different way. I am not putting a worthless fight against AI, but I&apos;m choosing the naive way and doing minor things while hoping that people will play rightly.&lt;/p&gt;
&lt;p&gt;The only thing I can do is add robots.txt and block the following User-Agents (maybe others in the future) that I took from &lt;a href=&quot;https://adactio.com/journal/20515&quot;&gt;Jeremy&apos;s post&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;User-agent: CCBot
Disallow: /

User-agent: ChatGPT-User
Disallow: /

User-agent: GPTBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Omgilibot
Disallow: /

User-agent: FacebookBot
Disallow: /
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I still know that these are useless. The main problem is with the whole system as &lt;a href=&quot;https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/&quot;&gt;Neil put it well&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;These companies should be prevented from using data that they haven’t been given explicit consent for. Opt-out is problematic as it counts on concerned parties hearing about new or modified bots BEFORE their sites are targeted by them. That is simply not practical.&lt;/p&gt;
&lt;p&gt;It should be strictly opt-in. No one should be required to provide their work for free to any person or organization. The online community is under no responsibility to help them create their products.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Although the system is opt-out and robots.txt is useless, I still want to add it. I know that these companies are not just, but the least I can do is play the game right.&lt;/p&gt;
&lt;p&gt;I know that the system is not gonna change anytime soon. So...&lt;/p&gt;
&lt;p&gt;Welcome my new weakest friend, robots.txt.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/crawlers-and-robots-txt/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/crawlers-and-robots-txt/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Real-life vs. Online Relationships</title><link>https://candost.blog/newsletter/mediations-3/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-3/</guid><description>The importance of close relationships and the impact of social media on relationships</description><pubDate>Tue, 03 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been silent for a while because I was on a late-summer vacation. During this trip, I had the opportunity to reflect on my daily routines. Those who are close to me know that I have been making some changes in my life recently and trying to reduce my digital interactions. I have been &lt;a href=&quot;/my-experience-living-without-social-media/&quot;&gt;writing&lt;/a&gt; regularly about &lt;a href=&quot;/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/&quot;&gt;these&lt;/a&gt; &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;changes&lt;/a&gt; on my blog as well.&lt;/p&gt;
&lt;p&gt;I have realized that my attention span is quite low, and this realization has made me fight against my digital addiction in order to increase my attention span. Activities such as checking my phone, scrolling through social media, and reading emails or messages on Slack provide a tiny dopamine rush that encourages me to continue with these habits. Although some might argue that staying connected with friends and family on social media can be beneficial, I feel that the overall impact of these activities is not worth the time and energy they consume.&lt;/p&gt;
&lt;p&gt;In fact, I believe that these shallow digital connections can even weaken our real-life social connections. When we meet up with friends, we often have nothing new to talk about because we already know everything that’s going on in each other’s lives through social media. Our conversations become superficial and meaningless. While meaningless chats with friends are okay, I have found that the healthiest relationships are built on a certain level of mystery and not knowing everything about the person.&lt;/p&gt;
&lt;p&gt;That’s why I have &lt;a href=&quot;/my-experience-living-without-social-media/&quot;&gt;decided&lt;/a&gt; to stop using Twitter, deleted my Facebook and Instagram accounts, and reduced my reliance on the internet. Instead, I am seeking out ways to connect with others that have been proven to be effective, such as face-to-face conversations, emails (&lt;em&gt;if you want to connect with me, just send me an email at candost[at]candostdagdeviren[dot]com&lt;/em&gt;), chat apps, or even physical letters (I would if anyone would like to try 😅).&lt;/p&gt;
&lt;p&gt;Rather than silently following the lives of my third-level cousin&apos;s life or a friend I&apos;ve never seen in the last 15 years on social media, I want to learn more about the lives of my close friends and family members. I reach out to them, call them, and ask them about their lives. I have realized that dedicating even four seconds every day to people I don&apos;t communicate with regularly can add up and take time away from the people I love and want to spend time with today. And that&apos;s not fair to anyone.&lt;/p&gt;
&lt;h2&gt;Some Things I Found Great&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.tor.com/2023/08/10/on-learning-to-read-generously/&quot;&gt;On Learning to Read Generously&lt;/a&gt; — Recently, I read Molly&apos;s great piece. I shared my notes and thoughts &lt;a href=&quot;/notes/69/&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=Syso7mToxgM&quot;&gt;I am leaving West Africa |S7E60| - Itchy Boots&lt;/a&gt; — I have been following Noraly for a long time. Her resiliency is legendary. She not only amazes me with her journey but also with her kindness to everyone and surviving (physically and mentally) alone, mostly thanks to her kindness and smiling face to strangers in foreign lands.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=YbrkZ07LKbk&quot;&gt;Aardvark&apos;d: 12 Weeks With Geeks&lt;/a&gt; is a movie from 2005 that features so many people we know today in the tech world, including Jessica Livingston &amp;amp; Paul Graham (founders of Y Combinator), Aaron Swartz &amp;amp; Steve Huffman (founders of Reddit), Joel Spolsky (co-founder of stackoverflow.com). When I see all these people together, I understand the network effect on founding a business. By the way, the movie itself is terrible and very amateur.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.wikiwand.com/en/Aaron_Swartz&quot;&gt;Aaron Swartz&lt;/a&gt; — The movie above reminded me of the life of Aaron Swartz. A prodigy, a geek, an activist. Aaron was a remarkable person who is mostly unknown outside of the tech world (and probably many folks in the tech world also don&apos;t know). He made a significant contribution to the web, such as co-creating RSS Feeds and a Creative Commons license (e.g., I use both on my website), besides co-founding Reddit.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://social.jvns.ca/@b0rk/110974485737300156&quot;&gt;some people who make programming easier by Julia Evans&lt;/a&gt; is a fantastic zine acknowledging so many unsung heroes impacting software engineers&apos; lives every day.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Recently, I Thought About&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;a team&apos;s commitment to their goals.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We always talk about a team&apos;s performance as &lt;em&gt;how&lt;/em&gt; they achieve their goals: processes, automation, team happiness, and technical capability and knowledge. Yet, a more important driving force is achieving the goals themselves—making a commitment and fulfilling it within the committed timeframe. When a team commits to a goal, it&apos;s their promise to the organization. Regardless of the goal, they must achieve it to gain trust in the organization. When they reach the goal, they also trust themselves (and each other in the team) and work toward improving their performance.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-3/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-3/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Today I published all my notes in my Zettelkasten</title><link>https://candost.blog/journal/public-zettelkasten/</link><guid isPermaLink="true">https://candost.blog/journal/public-zettelkasten/</guid><pubDate>Fri, 22 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today marks a day for me. After days of manual labor and a lot of editing, I finally published all my notes in my Zettelkasten on my blog.&lt;/p&gt;
&lt;p&gt;You can find all of them &lt;a href=&quot;/notes/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It feels like it&apos;s opening years of work to the public. Although nobody will notice them, it&apos;s relieving to make them available for free to anyone. Hopefully, public notes will also nudge me to add more and more and keep better notes.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/public-zettelkasten/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/public-zettelkasten/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Reading and Criticizing with Enough Generosity</title><link>https://candost.blog/notes/69/</link><guid isPermaLink="true">https://candost.blog/notes/69/</guid><pubDate>Wed, 13 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, I&apos;ve read Molly&apos;s great piece called, &lt;a href=&quot;https://www.tor.com/2023/08/10/on-learning-to-read-generously/&quot;&gt;On Learning to Read Generously&lt;/a&gt;;. Here are my notes and thoughts.&lt;/p&gt;
&lt;p&gt;I am too generous with books. Instead of spending &lt;em&gt;enough&lt;/em&gt; time with books, I spend more than a book deserves, especially for non-fiction books. So, I&apos;m on the other side with Molly. Although I know there is no need to read every word in a book if I already get the idea, my most lacking skill is reading with just enough generosity. That&apos;s why I try to follow one motto these days: &quot;Strong books, loosely read.&quot; Finding a strong book and ensuring that it&apos;s strong requires an inspectional read. Once I&apos;ve done it, then I can do an extensive read and be generous with my time.&lt;/p&gt;
&lt;p&gt;Molly also talks about reading critically and compares it with bad faith reading. Reading critically is another skill I want to hone. I&apos;ve had too much good faith as a reader and easily accepted the arguments of the authors I&apos;ve read. Because I thought if they had spent countless hours writing a book about it, they must have thought it well, and it should be closer to the truth. My thoughts became the thoughts of people I&apos;ve read, and now my brain is like a weird soup. I have strong ideas coming from people I&apos;ve read in certain areas, and no idea at all in others. This ties pretty much to Molly&apos;s argument of mixing up bad faith reading and reading critically. Reading critically is a fantastic skill every reader has to build one way or another. While learning that skill, I mixed it up with being unjust to the book and its author. I also thought, &quot;Who am I to judge if a person wrote a book about it?&quot; Molly separates them well and also pushes me to read more critically while maintaining a beginner&apos;s mindset. I now feel much better while reading because I am not trying to destroy an author&apos;s argument; I&apos;m trying to make it even better by filling in the gaps they have missed.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/64/&quot;&gt;64: Why Inspectional Reading?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href=&quot;https://www.tor.com/2023/08/10/on-learning-to-read-generously/&quot;&gt;On Learning to Read Generously&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/69/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/69/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Taking Better Notes</title><link>https://candost.blog/newsletter/mediations-2/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-2/</guid><description>Short Intro to How I Take Notes</description><pubDate>Mon, 21 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I walked through engineers in our team about how I take notes with &lt;a href=&quot;https://zettelkasten.de/posts/overview/&quot;&gt;Zettelkasten&lt;/a&gt; and &lt;a href=&quot;https://fortelabs.com/blog/para/&quot;&gt;P.A.R.A.&lt;/a&gt; note-taking methods. I also wanted to share here, without going into much detail, how I&apos;ve been using both systems.&lt;/p&gt;
&lt;p&gt;Zettelkasten was born to build articles, books, or posts from the ground up. Whenever you come across a piece of information, you transform this and add a small note to your Zettelkasten system, give the note a number, and link the notes to other notes by using this number. There are no folders or categorizations. Every note is placed right after another. Ultimately, you can realize which thought or information lines are getting long enough to write an article about it.&lt;/p&gt;
&lt;p&gt;How do I use Zettelkasten for work? I keep two Slip-Boxes: one for my knowledge-based notes (&lt;a href=&quot;/notes/&quot;&gt;sneak peek into my Zettelkasten&lt;/a&gt;) and one for work. Whenever I&apos;m in a meeting, I keep notes in Meeting Slip-Box. I don&apos;t need to worry about categorization or folders. I link the new note to the main project notes, which is the most helpful move that helps me find all related notes later.&lt;/p&gt;
&lt;p&gt;Meanwhile, P.A.R.A. was born to know where to put a new note in a system. It aims to organize notes much better. P.A.R.A. stands for &lt;em&gt;Projects&lt;/em&gt;, &lt;em&gt;Areas of Responsibility&lt;/em&gt;, &lt;em&gt;Resources&lt;/em&gt;, and &lt;em&gt;Archive&lt;/em&gt;. How do I use P.A.R.A.? &lt;em&gt;Projects&lt;/em&gt; are where I keep work-in-progress and ideas for articles, podcasts, and newsletters ideas. &lt;em&gt;Areas of Responsibility&lt;/em&gt; are my daily notes, career notes, and notes related to my hobbies. &lt;em&gt;Resources&lt;/em&gt; are things I saved online, checklists, and some more informational notes that I use as a resource. The &lt;em&gt;Archive&lt;/em&gt; consists of notes I don&apos;t need daily, such as published essays, blog articles, templates, etc.&lt;/p&gt;
&lt;p&gt;How do I combine P.A.R.A. and Zettelkasten? I have six top-level folders: the P.A.R.A. folders, the Zettelkasten folder, and the Work folder. Zettelkasten is my knowledge-base folder and could actually fit into the Resources folder, but I keep it separate. And lastly, the Work folder includes another Slip-Box, my brag document, my Kanban board, project notes, and others.&lt;/p&gt;
&lt;p&gt;Whenever I add a note about something I have learned, I don&apos;t want to think about where to put it; I want to think about how it relates to my previous thoughts and knowledge. That&apos;s why it directly goes to Zettelkasten. If it&apos;s connected to a project I&apos;m working on (in the &lt;em&gt;Projects&lt;/em&gt; folder), I link the note to the project instead of putting it in the Project folder.&lt;/p&gt;
&lt;p&gt;I&apos;m planning to write in more detail about my note-taking system. In the meantime, &lt;a href=&quot;https://candost.blog/concluding-my-struggle-with-note-taking-systems-and-apps-finally/&quot;&gt;I already wrote about changing my mindset about note-taking to come to this place&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Maybe P.A.R.A. and Zettelkasten methods are something you&apos;ve been looking for for years; who knows? Let me know what you think by replying to this email!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. I use &lt;a href=&quot;https://obsidian.md/&quot;&gt;Obsidian&lt;/a&gt; for everything: knowledge management, daily notes, permanent notes, checklists, journals, and task management tools.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Some things I found great&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.jim-nielsen.com/2023/subscribe-wherever-you-get-your-content/&quot;&gt;Subscribe Wherever You Get Your Content&lt;/a&gt; - I thought about this post lately. That was one of the reasons I moved back to my blog because now, I have various RSS feeds that allow anyone to subscribe to my blog wherever they get their content.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/@HONESTGUIDE&quot;&gt;Honest Guide&lt;/a&gt; - Last week, we went to Prague. I remembered a few tricks I learned from this YouTube channel, and it has proved its usefulness again!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://monocle.com/shop/product/2253737/the-monocle-companion-2/&quot;&gt;The Monocle Companion: Fifty Essays For A Brighter Future&lt;/a&gt; - I bought this book recently, and I really enjoy reading essays in a book, like reading blog posts offline (so far, my favorite is &quot;Have a Repertoire&quot; by Rubert Bound).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dot-on.de/&quot;&gt;Dot-on Calendar&lt;/a&gt; - The calendar I use to track my most important habits (writing, exercising, and practicing bass guitar) every day.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://share.snipd.com/episode/c452bdba-5976-4e89-9dc4-4d14befb8fd6&quot;&gt;Modern Wisdom #662 - Gurwinder Bhogal — 18 Shocking Psychology Lessons to Understand Yourself&lt;/a&gt; — This podcast episode gave me a lot of things to think about. Will definitely listen to it again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Recently I thought about&lt;/h2&gt;
&lt;p&gt;I continued my thoughts about seeking inconvenience since the last week. I&apos;m unsure how fast people move from one idea to another, but I keep returning to the same things for some time. It helps me construct my arguments, habits, and thoughts more concretely.&lt;/p&gt;
&lt;p&gt;On the topic, I looked at where I am after some convenience: my exercise routine. I want to get stronger. The only way to do it is by lifting more weights correctly. I can lift the same weights three times a week and live healthily, but I want to improve my strength to achieve better &lt;a href=&quot;https://www.merriam-webster.com/wordplay/what-is-health-span&quot;&gt;health&lt;/a&gt; and &lt;a href=&quot;https://www.merriam-webster.com/dictionary/life%20span&quot;&gt;life span&lt;/a&gt;. So, I have to go out of my comfort zone regularly while exercising to live longer and healthy in my last days of life.&lt;/p&gt;
&lt;p&gt;The next step will be putting my eating back in order. I already took a few steps and am changing my eating habits (more plant-based). Changing eating habits is more complex than exercising for me. Meanwhile, what are your routines regarding exercising and eating?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Retrospectively look at what you do and change your strategy</title><link>https://candost.blog/journal/retrospective-look-change-strategy/</link><guid isPermaLink="true">https://candost.blog/journal/retrospective-look-change-strategy/</guid><pubDate>Sun, 13 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;James Clear says,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;You&apos;re more likely to unlock a big leap in performance by trying differently than by trying harder. You might be able to work 10% harder, but a different approach might work 10x better. Remain focused on the core problem, but explore a new line of attack. Persistence is not just about effort, but also strategy. Don&apos;t merely try harder, try differently.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&apos;m unsure about how much it holds true but it makes sense to retrospectively look at what you do and change your strategy.&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://jamesclear.com/3-2-1/august-10-2023&quot;&gt;https://jamesclear.com/3-2-1/august-10-2023&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/journal/retrospective-look-change-strategy/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/journal/retrospective-look-change-strategy/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Thinking Retrospectively Helps to Correct The Course</title><link>https://candost.blog/notes/68/</link><guid isPermaLink="true">https://candost.blog/notes/68/</guid><pubDate>Sun, 13 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;James Clear says, &quot;You&apos;re more likely to unlock a big leap in performance by trying differently than by trying harder. You might be able to work 10% harder, but a different approach might work 10x better. Remain focused on the core problem, but explore a new line of attack. Persistence is not just about effort, but also strategy. Don&apos;t merely try harder, try differently.&quot;&lt;/p&gt;
&lt;p&gt;I&apos;m unsure how much it holds true, but we gain a lot of advantages from retrospectively observing what we have done and seeking changes where needed. Stopping the action, powering it through, and looking into what has been done so far brings many benefits and helps us to course-correct.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31a/&quot;&gt;31a: Create Accountability Cadence&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/38b/&quot;&gt;38b: Behaviors run on Auto-pilot&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;56: Structuring Teams in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/65/&quot;&gt;65: Learning and Understanding&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/67/&quot;&gt;67: Seek Inconvenience&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href=&quot;https://jamesclear.com/3-2-1/august-10-2023/&quot;&gt;3-2-1 Newsletter on August 10 by James Clear&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/68/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/68/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Seeking Inconvenience</title><link>https://candost.blog/newsletter/mediations-1/</link><guid isPermaLink="true">https://candost.blog/newsletter/mediations-1/</guid><description>Relationships and New Beginnings</description><pubDate>Fri, 11 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Mediations Newsletter is becoming a curated newsletter where I will share what I&apos;ve been thinking about recently and a few things passing from my screens, eyes, and life.&lt;/p&gt;
&lt;p&gt;The style will be between &lt;a href=&quot;https://jamesclear.com/3-2-1&quot;&gt;James Clear&apos;s 3-2-1&lt;/a&gt;, &lt;a href=&quot;https://buttondown.email/cassidoo/archive&quot;&gt;Cassidoo&apos;s rendezvous&lt;/a&gt;, and &lt;a href=&quot;https://fs.blog/brain-food/&quot;&gt;FS.Blog&apos;s Brain Food&lt;/a&gt;, and the content will reflect the complexity of life. Therefore, I won&apos;t niche into one area like software engineering, productivity, or psychology. I don&apos;t want to be a content creator in a certain niche.&lt;/p&gt;
&lt;p&gt;Here, I want to form relationships over these emails. The best way to do that is to show you what&apos;s passing in my life.&lt;/p&gt;
&lt;p&gt;I often advise others, and people find them useful. Yet, I don&apos;t always follow my own advice. Because giving useful advice is much easier than applying it to your life. We see what others can do better easily compared to what we can improve ourselves. Here, I want to share those bits of advice that I usually give to some people in my life.&lt;/p&gt;
&lt;p&gt;Feel free to just reply to the email you get at any time. Also, all issues will be available on &lt;a href=&quot;https://candost.blog/&quot;&gt;my blog&lt;/a&gt; too. If you want to follow the blog and my notes besides emails, there are &lt;a href=&quot;/feeds/&quot;&gt;separate RSS feeds for each&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Mediations Newsletter has no cadence, but I will send it a maximum of once a week, not more.&lt;/p&gt;
&lt;p&gt;Anyway, let&apos;s get to the first issue.&lt;/p&gt;
&lt;h2&gt;Some things I found great&lt;/h2&gt;
&lt;p&gt;These links won&apos;t be the hottest or newest links but rather what I recently spent time on and/or recommended to someone.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://freakonomics.com/podcast/how-can-you-get-closer-to-the-people-you-care-about/&quot;&gt;How Can You Get Closer to the People You Care About?&lt;/a&gt; — While I listened to this podcast episode, it reminded me of a conversation I had a few months ago with one of my best friends. We talked about how much we know each other and how much we actually don&apos;t because we never speak about deep personal values. I don&apos;t know if you have tried to make your relationships better, but I want to get better at this. This podcast episode already taught me a few things I want to try.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://heather-buchel.com/blog/2023/07/just-normal-web-things/&quot;&gt;Just normal web things.&lt;/a&gt; — Heather Buchel wrote a great piece about how websites manipulate our web experience and how we should keep things a certain way. The most frustrating one for me is her last point—a website hijacking my browser shortcuts. I hate it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=-wKJZVgftSk&quot;&gt;Julia&apos;s Latest Video covering Dua Lipa&apos;s Dance The Night&lt;/a&gt; — Julia, again, made an awesome bass cover.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=KUt_pnutRtI&quot;&gt;Lee Ritenour &amp;amp; Dave Grusin Live at Java Jazz Festival 2013&lt;/a&gt; — While YouTube was playing one video after another in the background while I was writing something, this video came up. I had never heard of these people before, but I enjoyed every second. What a wonderful concert.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://getlighthouse.com/blog/management-concept/&quot;&gt;The Most Important Management Concept You&apos;re Missing: Task Relevant Maturity&lt;/a&gt; — I&apos;m trying to improve my staff planning skills, and this post helped me to think about when I plan who should do what in our team(s).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.dailywritingtips.com/honest-candid-and-frank/&quot;&gt;Honest, Candid, and Frank&lt;/a&gt; — Should I give honest or candid feedback or be frank? Now I learned the difference. From now on, I&apos;ll give candid feedback, always be honest and talk frankly often.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies&lt;/a&gt; — I keep coming back to this book lately because I&apos;m thinking about how we can structure teams to better collaborate with other teams and increase the flow of value.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Recently, I thought about&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;seeking inconvenience&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;How much time and money do we spend in our lives to make everything convenient? Does everything have to be convenient?&lt;/p&gt;
&lt;p&gt;Convenience destroys the joy in any action. Inconvenience brings out the beauty.&lt;/p&gt;
&lt;p&gt;For example, writing must be done on paper with a pen at hand instead of on a computer. Writing is not about efficiency; it&apos;s about evaluating ideas, reshaping them, and slowing down the thought stream so that we can catch the good fish in a dirty river of thoughts.&lt;/p&gt;
&lt;p&gt;Choosing which movie to watch shouldn’t be done by algorithms while we’re lying down on our couch. It should be by referrals and recommendations from people we know and trust. We should go to the movie theater, watch a movie our friend recommended and hate that movie. We have to feel the waste of time in that movie. We shouldn&apos;t optimize for watching great movies all the time.&lt;/p&gt;
&lt;p&gt;Also, we must be fully present while doing these activities. Who drinks coffee and does nothing else anymore? How many people have you seen sitting on a couch and listening to music without a phone or book at hand? Or when was the last time you did that?&lt;/p&gt;
&lt;p&gt;Look at your life; find where you don&apos;t need comfort and convenience. Seek inconvenience in activities that you like to do. If you like drinking coffee, try only drinking coffee without a side activity. If you like listening to music, try sitting on a couch and listening to the music your eyes closed. You&apos;ll recognize the difference. You’ll see what exactly you like in them.&lt;/p&gt;
&lt;p&gt;And reply to this email about how the experience was.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mediations-1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mediations-1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>No Prioritization, No RFC</title><link>https://candost.blog/notes/66b/</link><guid isPermaLink="true">https://candost.blog/notes/66b/</guid><pubDate>Sun, 06 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;All organizations have problems that everyone knows, but nobody has time to fix it. The time never comes to tackle those problems. Every product has other problems that need to be solved, features that need to be implemented, and changes that have to be made. If someone decides to solve that long-lasting problem without prioritization and writes an RFC to collect feedback, the solution is doomed to fail again.&lt;/p&gt;
&lt;p&gt;For RFC to serve well, the solution has to be prioritized correctly. If a team cannot get to solve a problem due to other work packages, developing a solution by writing an RFC won&apos;t change the situation. If the team cannot tackle the problem immediately after the RFC is accepted, they will fail. The systems evolve, and decisions made a month or two months ago has to be revised, refined, and adapted to the new changes. The RFC will likely lose its validity by then. Implementation of the RFC should start right after it&apos;s closed for feedback. And that requires clear prioritization of the topic.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-and-why-rfcs-fail/&quot;&gt;How and Why RFCs Fail&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/66b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/66b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t Use RFCs as A Decision-Making Mechanism</title><link>https://candost.blog/notes/66c/</link><guid isPermaLink="true">https://candost.blog/notes/66c/</guid><pubDate>Sun, 06 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Similar to the business need we talked about above, the business decision has to be made before writing an RFC. RFC focuses on &lt;em&gt;how&lt;/em&gt;, not &lt;em&gt;what&lt;/em&gt;—deciding on &lt;em&gt;what&lt;/em&gt; has to be done earlier.&lt;/p&gt;
&lt;p&gt;An RFC can&apos;t drive a business decision; however, it can bring out risks that were not considered before. Thus, it can urge people to reconsider their decision. But that shouldn&apos;t be the goal of an RFC; it&apos;s only a good side effect.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19b/&quot;&gt;19b: Consent-Based Decision Making&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-and-why-rfcs-fail/&quot;&gt;How and Why RFCs Fail&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/66c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/66c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t Even Try to Form A Consensus</title><link>https://candost.blog/notes/66d/</link><guid isPermaLink="true">https://candost.blog/notes/66d/</guid><pubDate>Sun, 06 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As the business decision has already been made, the RFC authors can decide which piece of feedback they will accept and which ones they will reject. If a team writes an RFC, they don&apos;t have to agree or accept every change request, but they have to acknowledge every comment. They have the right to veto by giving a reason. And the reason can be simple: &quot;We&apos;re aware of its drawbacks, we acknowledge it, but we&apos;re willing to take this risk. We&apos;ll continue with the existing design.&quot;&lt;/p&gt;
&lt;p&gt;There is no need to form a consensus for every topic. The RFC system works with consent-based decision-making by default, and teams should seek consensus only &lt;em&gt;and only&lt;/em&gt; when they need it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19b/&quot;&gt;19b: Consent-Based Decision Making&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52a/&quot;&gt;52a: Accepting one thing requires saying no to other things&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40e/&quot;&gt;40e: Tell the other side what&apos;s been left out&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44g/&quot;&gt;44g: Persuading others requires accepting their arguments and building empathy&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-and-why-rfcs-fail/&quot;&gt;How and Why RFCs Fail&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/66d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/66d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Choose Your RFC Audience Correctly</title><link>https://candost.blog/notes/66e/</link><guid isPermaLink="true">https://candost.blog/notes/66e/</guid><pubDate>Sun, 06 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Not every RFC has to be shared with the whole company. Push RFCs to related people but be open to random people commenting on them.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32b/&quot;&gt;32b: Communicating Organizational Changes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-and-why-rfcs-fail/&quot;&gt;How and Why RFCs Fail&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/66e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/66e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Give Enough Time for RFC Reviews (Please, Don&apos;t Rush)</title><link>https://candost.blog/notes/66f/</link><guid isPermaLink="true">https://candost.blog/notes/66f/</guid><pubDate>Sun, 06 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If everything is urgent, nothing is urgent. I see people share an RFC to collect feedback and tell the audience that they will close the RFC for comments in two days. If everything is urgent, how can people read an RFC while other urgent tasks are waiting for them?&lt;/p&gt;
&lt;p&gt;Of course, it depends on the RFC. If an RFC is circulating in one team, it&apos;s okay to have two days because there are only a handful of people who need to review it. The problem occurs when an RFC impacts more than one team. As every team&apos;s priorities are different, people cannot jump into reviewing an RFC when it&apos;s shared. Authors have to give enough time for others to review. How much is enough will always depend on the topic and the RFC&apos;s impact.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-and-why-rfcs-fail/&quot;&gt;How and Why RFCs Fail&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/66f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/66f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t Publish The RFC and Forget; Follow Up</title><link>https://candost.blog/notes/66g/</link><guid isPermaLink="true">https://candost.blog/notes/66g/</guid><pubDate>Sun, 06 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you publish an RFC and announce it only once, you practically fail.&lt;/p&gt;
&lt;p&gt;If there is one thing I learned in organizational leadership, it&apos;s this: if you want something, you have to repeat it. If you want to collect feedback for an RFC, you have to remind people constantly that you&apos;re looking for feedback.&lt;/p&gt;
&lt;p&gt;Give people signs regularly on when you&apos;ll close it for feedback. Be proactive. To be honest, be annoying if needed. When you close an RFC for feedback, you should feel comfortable that you got enough feedback. Nobody should be able to complain about the solution when the time comes for implementation. And if they still complain, you should be able to say, &quot;Well, we collected feedback and announced it everywhere, pinged many times. Sorry, we&apos;re following the decided strategy.&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32a/&quot;&gt;32a: Continually and consistently repeat the message&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b/&quot;&gt;3b: Joining A Team As A New Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20b/&quot;&gt;20b: Sharing knowledge is not a noise&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20c/&quot;&gt;20c: Share pros and cons in announcements&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-and-why-rfcs-fail/&quot;&gt;How and Why RFCs Fail&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/66g/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/66g/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t Build an Extensive RFC Template</title><link>https://candost.blog/notes/66h/</link><guid isPermaLink="true">https://candost.blog/notes/66h/</guid><pubDate>Sun, 06 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Organizations should influence people to write RFCs, and the guides to writing them should be simple, clear, and concise. If an RFC template has ten sections that &lt;em&gt;have to&lt;/em&gt; be filled, it ceases to help.&lt;/p&gt;
&lt;p&gt;An RFC template should be flexible. It&apos;s there to guide people&apos;s thoughts. A template should not only make writing easier but also understanding easier.&lt;/p&gt;
&lt;p&gt;I still recommend the NABC Model (Need, Approach, Benefits, Competitors) that Stanford introduced. It&apos;s short and guides people in a direction where it&apos;s easy to understand.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-and-why-rfcs-fail/&quot;&gt;How and Why RFCs Fail&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/66h/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/66h/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Build The Right Culture First Before RFCs</title><link>https://candost.blog/notes/66i/</link><guid isPermaLink="true">https://candost.blog/notes/66i/</guid><pubDate>Sun, 06 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The whole RFC process requires a blameless and trustful environment. If the organization operates with bad politics and secrecy, forget about RFCs. If an engineer doesn&apos;t trust others and doesn&apos;t believe people have good intentions, why would they seek feedback? Even if they did, would they accept feedback? I don&apos;t think so.&lt;/p&gt;
&lt;p&gt;Another cultural challenge for RFCs is the stage of the organization. If the product is pivoting or an engineering paradigm shift is going on, RFCs cannot survive. Especially while trying to find product-market fit and runway budget is limited, RFCs are not the right strategy.&lt;/p&gt;
&lt;p&gt;Engineering paradigm shifts depend on the organization&apos;s maturity. If the organization is mature enough, RFCs are a great way to shift the engineering paradigm. However, it won&apos;t work in an immature organization where there are long discussions and fights everywhere.&lt;/p&gt;
&lt;p&gt;Get your culture right, and people will naturally bring the RFC process by themselves. Use RFCs to create a feedback culture and enhance your engineering strength and stamina. It&apos;s one of the best ways to break silos and build a healthy engineering organization that communicates and collaborates.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44c/&quot;&gt;44c: Confrontation brings honesty&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44d/&quot;&gt;44d: Without conflict, there can be no trust&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;31: Accountability and Learning Culture in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-and-why-rfcs-fail/&quot;&gt;How and Why RFCs Fail&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/66i/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/66i/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Seek Inconvenience</title><link>https://candost.blog/notes/67/</link><guid isPermaLink="true">https://candost.blog/notes/67/</guid><description>Do we have to seek convenience everywhere in our lives? I don&apos;t think so. Inconvenience brings the forgotten joy.</description><pubDate>Sun, 06 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How much time and money do we spend in our lives to make everything convenient? We optimized our lives so much that we had a lot of time to do many things. Yet, we lost the joy in them.&lt;/p&gt;
&lt;p&gt;Does everything have to be convenient? Some things should be inconvenient. The beauty hides in inconvenience. &lt;a href=&quot;/notes/1b/&quot;&gt;Writing must be on paper with a pen at hand&lt;/a&gt;. For example, I spend so much time on the computer and keep all my notes on it. So, I stopped writing by hand. However, writing is not about fast typing or convenience, it&apos;s about evaluating ideas, reshaping them, and slowing down the thought stream so that we can catch the good fish in a flowing river.&lt;/p&gt;
&lt;p&gt;It&apos;s the same with choosing movies: it has to be with our friend&apos;s recommendation, not with algorithms. We have to go to the movie theater and hate a movie, swear for the time we spend. If we watch great movies all the time, doesn&apos;t it &lt;a href=&quot;/notes/1i/&quot;&gt;become boring&lt;/a&gt;? Take Netflix as an example; it fills every moment that we spend in the living room. We watch whatever Netflix recommends. We sacrificed joy for convenience.&lt;/p&gt;
&lt;p&gt;We must be there while doing any activity. Who drinks coffee and does nothing else anymore? How many people do we see sitting and listening to music without a phone, computer, or book?&lt;/p&gt;
&lt;p&gt;The joy, learning, and growth come from enough uncertainty and being open to new things. Convenience kills creativity by making everything in order.&lt;/p&gt;
&lt;p&gt;That&apos;s what I&apos;m leaving you with.&lt;/p&gt;
&lt;p&gt;Look at your life; find where you shouldn&apos;t need comfort and convenience. Seek inconvenience in activities that you really like to do. If you like drinking coffee, try only drinking coffee without a side activity. You&apos;ll taste and start experimenting with your brewing method. If you like listening to music, try sitting on a couch and listening to the music. You&apos;ll understand what &lt;em&gt;exactly&lt;/em&gt; you like in a song. If you enjoy watching movies, go to a movie theater and ask the staff for recommendations. You&apos;ll recognize the difference; you&apos;ll remember.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1b/&quot;&gt;1b: Writing by Hand&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1i/&quot;&gt;1i: Embrace &amp;amp; Love Boredom&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/newsletter/mediations-1/&quot;&gt;Mediations #1&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/67/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/67/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How and Why RFCs Fail</title><link>https://candost.blog/how-and-why-rfcs-fail/</link><guid isPermaLink="true">https://candost.blog/how-and-why-rfcs-fail/</guid><description>When we tried to introduce the Request for Comments (RFC) process to an organization, we failed. Here is what I&apos;ve learned from my mistakes.</description><pubDate>Sat, 05 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Creating knowledge silos and building software in a team without involving others is unavoidable in growing organizations. That&apos;s why organizations create RFC processes to break down silos, collect feedback early and prevent impediments that can come out later in development, which usually are costly. Later these organizations aim to create governance around the RFC process and give guidance to the people through templates and a refined RFC process.&lt;/p&gt;
&lt;p&gt;Even though I &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;love the RFC process and have even introduced it to an organization before&lt;/a&gt;, I see a lot of traps that organizations (and people) fall into. I want to explain what I have learned and observed in other organizations.&lt;/p&gt;
&lt;h2&gt;No Business Need, No RFC&lt;/h2&gt;
&lt;p&gt;We introduced RFCs as one way to allow engineers to propose an idea to the business. It was a complete failure. Although we introduced RFCs as a way to promote ideas and create a feedback culture, engineers who tried persuading others felt lost on how to gain support for an idea. Ideas popped up, but they couldn&apos;t gain support because there was not a strong business need.&lt;/p&gt;
&lt;p&gt;If there is no strong business need for an idea, there shouldn&apos;t be an RFC. When I say business, I count both product and technical problems and features. When an RFC is written, there has to be direct support from all directions in the business to solve a certain problem. I say all directions because the need has to be prioritized.&lt;/p&gt;
&lt;h2&gt;No Prioritization, No RFC&lt;/h2&gt;
&lt;p&gt;All organizations have problems that everyone knows but nobody has time to fix it. The time never comes to tackle those problems. Every product has other problems that need to be solved, features that need to be implemented, and changes that have to be made. If someone decides to solve that long-lasting problem without prioritization and writes an RFC to collect feedback, the solution is doomed to fail again.&lt;/p&gt;
&lt;p&gt;For RFC to serve well, the solution has to be prioritized correctly. If a team cannot get to solve a problem due to other work packages, developing a solution by writing an RFC won&apos;t change the situation. If the team cannot tackle the problem immediately after the RFC is accepted, they will fail. The systems evolve, and decisions made a month or two months ago has to be revised, refined, and adapted to the new changes. The RFC will likely lose its validity by then. Implementation of the RFC should start right after it&apos;s closed for feedback. And that requires clear prioritization of the topic.&lt;/p&gt;
&lt;h2&gt;Don&apos;t Use RFCs as A Decision-Making Mechanism&lt;/h2&gt;
&lt;p&gt;Similar to the business need we talked about above, the business decision has to be made before writing an RFC. RFC focuses on how, not what—deciding on what has to be done earlier.&lt;/p&gt;
&lt;p&gt;An RFC can&apos;t drive a business decision; however, it can bring out risks that were not considered before. Thus, it can urge people to reconsider their decision. But that shouldn&apos;t be the goal of an RFC; it&apos;s only a good side effect.&lt;/p&gt;
&lt;h2&gt;Don&apos;t Even Try to Form A Consensus&lt;/h2&gt;
&lt;p&gt;As the business decision has already been made, the RFC authors can decide which piece of feedback they will accept and which ones they will reject. If a team writes an RFC, they don&apos;t have to agree or accept every change request, but they have to acknowledge every comment. They have the right to veto by giving a reason. And the reason can be simple: &quot;We&apos;re aware of its drawbacks, we acknowledge it, but we&apos;re willing to take this risk. We&apos;ll continue with the existing design.&quot;&lt;/p&gt;
&lt;p&gt;There is no need to form a consensus for every topic. The RFC system works with consent-based decision-making by default, and teams should seek consensus only and only when they need it.&lt;/p&gt;
&lt;h2&gt;Choose Your Audience Correctly&lt;/h2&gt;
&lt;p&gt;Not every RFC has to be shared with the whole company. Push RFCs to related people but be open to random people commenting on them.&lt;/p&gt;
&lt;h2&gt;Give Enough time (Please, Don&apos;t Rush)&lt;/h2&gt;
&lt;p&gt;If everything is urgent, nothing is urgent. I see people share an RFC to collect feedback and tell the audience that they will close the RFC for comments in two days. If everything is urgent, how can people read an RFC while other urgent tasks are waiting for them?&lt;/p&gt;
&lt;p&gt;Of course, it depends on the RFC. If an RFC is circulating in one team, it&apos;s okay to have two days because there are only a handful of people who needs to review it. The problem occurs when an RFC impacts more than one team. As every team&apos;s priorities are different, people cannot jump into reviewing an RFC when it&apos;s shared. Authors have to give enough time for others to review. How much is enough will always depend on the topic and the RFC&apos;s impact.&lt;/p&gt;
&lt;h2&gt;Don&apos;t Publish and Forget; Follow Up&lt;/h2&gt;
&lt;p&gt;If you publish an RFC and announce it only once, you practically fail.&lt;/p&gt;
&lt;p&gt;If there is one thing I learned in organizational leadership, it&apos;s this: &lt;a href=&quot;/communicating-decisions-in-the-organizations/&quot;&gt;if you want something to stick, you have to repeat what you want&lt;/a&gt;. If you want to collect feedback for an RFC, you have to remind people constantly that you&apos;re looking for feedback.&lt;/p&gt;
&lt;p&gt;Give people signs regularly on when you&apos;ll close it for feedback. Be proactive. To be honest, be annoying if needed. When you close an RFC for feedback, you should feel comfortable that you got enough feedback. Nobody should be able to complain about the solution when the time comes for implementation. And if they still complain, you should be able to say, &quot;Well, we collected feedback and announced it everywhere, pinged many times. Sorry, we&apos;re following the decided strategy.&quot;&lt;/p&gt;
&lt;h2&gt;Don&apos;t Build an Extensive Template&lt;/h2&gt;
&lt;p&gt;Organizations should influence people to write RFCs, and the guides to writing them should be simple, clear, and concise. If an RFC template has ten sections that have to be filled, it ceases to help.&lt;/p&gt;
&lt;p&gt;An RFC template should be flexible. It&apos;s there to guide people&apos;s thoughts. A template should not only make writing easier but also understanding easier.&lt;/p&gt;
&lt;p&gt;I &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;still recommend NABC Model (Need, Approach, Benefits, Competitors) that Stanford introduced&lt;/a&gt;. It&apos;s short and guides people in a direction where it&apos;s easy to understand.&lt;/p&gt;
&lt;h2&gt;Build The Right Culture First&lt;/h2&gt;
&lt;p&gt;The whole RFC process requires a blameless and trustful environment. If the organization operates with bad politics and secrecy, forget about RFCs. If an engineer doesn&apos;t trust others and doesn&apos;t believe people have good intentions, why would they seek feedback? Even if they did, would they accept feedback? I don&apos;t think so.&lt;/p&gt;
&lt;p&gt;Another cultural challenge for RFCs is the stage of the organization. If the product is pivoting or an engineering paradigm shift is going on, RFCs cannot survive. Especially while trying to find product-market fit and runway budget is limited, RFCs are not the right strategy.&lt;/p&gt;
&lt;p&gt;Engineering paradigm shifts depend on the organization&apos;s maturity. If the organization is mature enough, RFCs are a great way to shift the engineering paradigm. However, it won&apos;t work in an immature organization where there are long discussions and fights everywhere.&lt;/p&gt;
&lt;p&gt;Get your culture right, and people will naturally bring the RFC process by themselves. Use RFCs to create a feedback culture and enhance your engineering strength and stamina. It&apos;s one of the best ways to break silos and build a healthy engineering organization that communicates and collaborates.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-and-why-rfcs-fail/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-and-why-rfcs-fail/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>RFC Process in Organizations</title><link>https://candost.blog/notes/66/</link><guid isPermaLink="true">https://candost.blog/notes/66/</guid><pubDate>Sat, 05 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Many organizations adopt the Request for Comments (RFC) culture. Creating knowledge silos and building software in a team without involving others is unavoidable in organizations. That&apos;s why organizations create RFC processes to break down silos, collect feedback early and prevent impediments that can come out later in development—which usually are very expensive to solve.&lt;/p&gt;
&lt;p&gt;Many mid-to-big organizations later aim to create governance around the RFC process and give guidance to the people by templates and defined RFC phases. In some organizations, the RFC process is also used as a decision-making mechanism, in which the whole process is doomed to fail. Even though I love the RFC process and have even introduced it to an organization before, I see a lot of traps that people fall into.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/61/&quot;&gt;61: What to delegate?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;56: Structuring Teams in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40/&quot;&gt;40: Understanding the Feedback You Receive&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;31: Accountability and Learning Culture in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-and-why-rfcs-fail/&quot;&gt;How and Why RFCs Fail&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/66/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/66/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>If there is no business need, there shouldn&apos;t be an RFC</title><link>https://candost.blog/notes/66a/</link><guid isPermaLink="true">https://candost.blog/notes/66a/</guid><pubDate>Sat, 05 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If we ask a group of four software engineers what changes are needed in our system to improve its quality, we will get at least twenty ideas. When the RFCs are used to get support for any idea, it&apos;s a complete failure. This was one of the reasons why we failed. We introduced the system to promote ideas and get feedback on them. Even though our intention was to improve the feedback culture, engineers who tried persuading others felt lost on how to gain support for an idea and turn it into implementation.&lt;/p&gt;
&lt;p&gt;If there is no business need for an idea, there shouldn&apos;t be an RFC. When I say business, I count both product features and technical problems and features that have to be implemented. When the RFC is written, there has to be direct support from all directions in the business. If every idea is written as an RFC to collect feedback, the whole process is doomed to fail.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;12: Engineer Autonomy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-and-why-rfcs-fail/&quot;&gt;How and Why RFCs Fail&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/66a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/66a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What I Learned About Getting Better at Giving Talks and Presentations</title><link>https://candost.blog/what-i-learned-about-getting-better-at-giving-talks-and-presentations/</link><guid isPermaLink="true">https://candost.blog/what-i-learned-about-getting-better-at-giving-talks-and-presentations/</guid><description>After years of reading about, learning, and trying public speaking in different forms, here is what I have found.</description><pubDate>Wed, 19 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Many organizations have knowledge-sharing sessions where people present what they have learned or found interesting. Software engineers are sometimes expected to be on the stage to level up in their careers, as this is one of the most tangible ways to showcase they&apos;re trying to grow others. However, engineers are not professional speakers. They rarely spend time getting better at speaking to an audience. For many, explaining how something works is less exciting than learning how that thing works. For me, I was always fascinated by both.&lt;/p&gt;
&lt;p&gt;While working as a software engineer, I also improved my presentation skills by reading up on the topic, seeking feedback in every possible way, and talking with the best presenters I&apos;ve ever listened to. These days, I get good feedback on my talks and podcast episodes, and people ask me to pass on my knowledge of &lt;a href=&quot;/speaking-writing-and-high-quality-ideas/&quot;&gt;being a good speaker&lt;/a&gt;. They ask the same questions I asked a long time ago to the best presenters. It&apos;s time to pass the baton.&lt;/p&gt;
&lt;p&gt;Here I want to share the key points for improving public speaking—a business presentation, tech talk, podcast episode, knowledge-sharing talk, or what have you. The below points are not an exhaustive list, but I learned over the years that they are the most crucial ones.&lt;/p&gt;
&lt;p&gt;And it starts with choosing a message for your talk.&lt;/p&gt;
&lt;h2&gt;One and Only One Message&lt;/h2&gt;
&lt;p&gt;What is the one message you want to leave your listeners with?&lt;/p&gt;
&lt;p&gt;What is the one thing they can &lt;em&gt;try&lt;/em&gt; after they hear you?&lt;/p&gt;
&lt;p&gt;Leaving your listeners with many ideas will make them overwhelmed and confused. Hence, they will never take any action. &lt;strong&gt;Give them one clear message.&lt;/strong&gt; They should not doubt that they understand and can try after your talk.&lt;/p&gt;
&lt;p&gt;Don&apos;t hide the message when you give it—say it out loud. Make it crystal clear. You can even say, &quot;If you want to get one thing out of this talk, it&apos;s this,&quot; and give them the key point. Even if they don&apos;t try, they will think about it. You&apos;ll &lt;em&gt;make someone think and challenge what they are already doing&lt;/em&gt; and nudge them to do it differently. That&apos;s how to impact someone&apos;s life—the real power of public speaking.&lt;/p&gt;
&lt;p&gt;But you won&apos;t be able to give that message if the message is not coming &lt;em&gt;from you&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;The Talk is About YOU.&lt;/h2&gt;
&lt;p&gt;If you&apos;re speaking about a topic, that shows you care. Although you&apos;re talking about a topic, the talk itself is not focused on it. It&apos;s about &lt;em&gt;how you explain the topic&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Let&apos;s go over a simple example. If you&apos;re presenting a book you read and liked, the listeners are interested in learning more about the book&apos;s details, for sure. However, they are even more interested in what you learned from the book and how you applied it to your life. Because they want to know &lt;em&gt;why&lt;/em&gt; you&apos;re presenting the book and what you gained from it. How your life has changed after reading that book is more important to the audience than the book&apos;s full content.&lt;/p&gt;
&lt;p&gt;You must add your talk some pieces from you. If you don&apos;t talk about yourself at all, if you don&apos;t involve your experience with the topic, the talk will be blunt. People can learn any information from the internet, including what you present. But they chose to listen to you. That means &lt;strong&gt;your audience wants to hear that topic&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;from you&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;instead of others.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Therefore, you must put yourself at the center of your talk instead of your beautiful slides.&lt;/p&gt;
&lt;h2&gt;Slides are Only Helpers&lt;/h2&gt;
&lt;p&gt;Most of the &quot;X tips for better presentations&quot; articles I&apos;ve read talk about how the slides should be. I&apos;ve seen many different recommendations, such as six words per line and a maximum of five lines of text in one slide or using only images and no text. All of the tips are mostly useless.&lt;/p&gt;
&lt;p&gt;I remember a fantastic presentation I watched at SwiftConf in Cologne. Each slide had either an image or a single word on it. There were hundreds of slides, and the speaker had only twenty minutes! How?&lt;/p&gt;
&lt;p&gt;They used the slides to &lt;em&gt;help themselves present the topic&lt;/em&gt;. They built a story and used slides to guide people in the story.&lt;/p&gt;
&lt;p&gt;Slides are tools to help you. They are not the center of the talk—you are. Once you move the center of the talk from slides to you and &lt;em&gt;make the talk fully yours&lt;/em&gt;, the presentation will automatically improve.&lt;/p&gt;
&lt;p&gt;Don&apos;t add thousands of words to slides unless you have a good reason. &lt;strong&gt;The aim is to move the audience&apos;s focus from the slides to you.&lt;/strong&gt; The audience looks at your eyes when you talk, and slides shouldn&apos;t distract them from your beautiful eyes.&lt;/p&gt;
&lt;p&gt;What you put on your slides is still your decision. There is no silver bullet.&lt;/p&gt;
&lt;p&gt;Sometimes, a blank slide is better than a slide with ten words on it. A blank slide moves the focus to you and helps with one more thing.&lt;/p&gt;
&lt;h2&gt;The Hidden Power: Silence&lt;/h2&gt;
&lt;p&gt;The silence is awkward &lt;a href=&quot;https://www.rug.nl/staff/n.koudenburg/koudenburgetal.2011.pdf&quot;&gt;if it&apos;s beyond four seconds&lt;/a&gt;. Right around the third second, people become curious about why you say nothing and focus on you again. If your audience is distracted, pausing for a few seconds is a good way to put yourself in the center.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Silence is unintuitive, especially when you suppose to talk.&lt;/strong&gt; But it gives you &lt;strong&gt;and&lt;/strong&gt; the audience time to think. When you present pieces of information back to back, people can&apos;t digest most of it. They can&apos;t internalize whatever they hear, especially when the talk includes sub-sections.&lt;/p&gt;
&lt;p&gt;If you jump from one section to another without a pause, the audience cannot close the chapter in their minds and get confused. Pause for one or two seconds to make them think about what you said and allow them to connect the sub-chapter to the main subject.&lt;/p&gt;
&lt;p&gt;Remember, the talk is about you; you also need to focus, and a second of silence helps you gain focus when you&apos;re distracted. Taking a slow, deep breath into your stomach relaxes and enables you to remember your next lines.&lt;/p&gt;
&lt;p&gt;One caveat: don&apos;t overuse silence. As it grabs all the attention, &lt;a href=&quot;/sometimes-saying-nothing-tells-everything/&quot;&gt;it needs to be used wisely&lt;/a&gt;. That&apos;s why you must create the storyline to support that silence.&lt;/p&gt;
&lt;h2&gt;Connect the Dots in the Story&lt;/h2&gt;
&lt;p&gt;Most presentations have a main topic and sub-topics. We often hear, &quot;There are four categories of X. Let&apos;s talk about them.&quot; Nothing is wrong with that if you have to present four categories of X. How you connect those four and the main topic is what matters.&lt;/p&gt;
&lt;p&gt;The goal is to create a single message in listeners&apos; minds—the key message of the talk. You must build the story around &lt;em&gt;that message&lt;/em&gt;. Whenever there are sub-topics that give more details, you have to create good segues back to the main topic. These sub-topics are supportive ideas of the key message. Listeners should see the connections between them because they will try to connect those topics in their minds. Don&apos;t leave this job to them. They should spend their energy listening to you and understanding what you&apos;re talking about. &lt;strong&gt;They shouldn&apos;t build up the topic on their minds; you must connect the dots for them.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, if you &lt;a href=&quot;/newsletter/mektup-45/&quot;&gt;explain four sub-topics one by one&lt;/a&gt;, you have to create good segues while switching from one to another instead of taking big jumps between them. You have to connect all sub-topics to the main message. Creating a good story is challenging, and there are &lt;a href=&quot;https://robbiesenbach.com/books/&quot;&gt;good&lt;/a&gt; &lt;a href=&quot;https://www.thescienceofstorytelling.com/&quot;&gt;books&lt;/a&gt; and &lt;a href=&quot;https://www.youtube.com/results?search_query=storytelling&quot;&gt;tons of videos about it&lt;/a&gt;; I will leave it out of this post.&lt;/p&gt;
&lt;p&gt;Having a good story gives you one more advantage. Once you create the storyline right and connect the dots, you don&apos;t have to worry about your notes anymore.&lt;/p&gt;
&lt;h2&gt;Never Read From Your Notes...&lt;/h2&gt;
&lt;p&gt;Unless you&apos;re rehearsing or you&apos;re such a professional speaker that people won&apos;t recognize that you&apos;re reading.&lt;/p&gt;
&lt;p&gt;For example, newscasters read the news from a prompter, but we rarely notice. If you&apos;re not that professional, never read from your notes, regardless if your talk is in-person or online.&lt;/p&gt;
&lt;p&gt;If you really need your notes, have a few keywords or short notes under your hand as a reminder.&lt;/p&gt;
&lt;p&gt;In a well-prepared talk, you shouldn&apos;t need any notes at all. You have to build that confidence, and that requires rehearsal.&lt;/p&gt;
&lt;h2&gt;Rehearse, Rehearse, and Rehearse Once More&lt;/h2&gt;
&lt;p&gt;Rehearing is the best way to improve your presentation. There is no magic; &lt;strong&gt;practice makes it perfect.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I learned a few common rehearsal techniques from stage performers, which can also help you have effective rehearsals.&lt;/p&gt;
&lt;p&gt;I remember we were preparing for a theatre play years ago. We first read the whole script with everyone reading their lines when their turn came. Then, we started working on small sections of the play and tried to improve that part (only that part) while still reading from the script. But we never did a full rehearsal before practicing sub-sections at least once or twice.&lt;/p&gt;
&lt;p&gt;When it was time for the whole play rehearsal, we never stopped. We made mistakes and called them out but didn&apos;t take it from the top; we just kept going. We had to see the whole play to understand how to change or improve a single part without disrupting the theme or the main message. We did this again and again, and again and again—first, parts, then the whole.&lt;/p&gt;
&lt;p&gt;Use the same while preparing for your talk. Start small—practice sub-sections of your talk. Once you&apos;re ready with all sub-sections, do a full rehearsal. While doing it, never stop in the middle and start from the top. Take note when you make a mistake and finish the rehearsal. Return to that mistake later, fix it, practice that subsection, and do another full rehearsal. Your rehearsal goal is to see and improve how the subsections help to build the key message.&lt;/p&gt;
&lt;p&gt;In stage performances, people do a dress rehearsal: an all-in rehearsal with their stage dressings and all decor right before the show starts. Often while the audience is waiting at the door—do the same. Right before your show, do a dress rehearsal.&lt;/p&gt;
&lt;p&gt;Now, it&apos;s understandable that there is so much you can do. You might feel overwhelmed, but you don&apos;t have to do it all at once. Actually, &lt;a href=&quot;/newsletter/mektup-52/&quot;&gt;you shouldn&apos;t make all improvements at once&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;One Step At A Time&lt;/h2&gt;
&lt;p&gt;Like every skill, improving public speaking &lt;a href=&quot;/newsletter/mektup-50/&quot;&gt;takes time and a lot of practice&lt;/a&gt;. Your first preparation will take longer, but the next preparation will take less time once you learn the fundamentals. &lt;a href=&quot;/faucets-and-bad-ideas/&quot;&gt;You will have many bad presentations but don&apos;t give up&lt;/a&gt; and focus on &lt;a href=&quot;/newsletter/mektup-41/&quot;&gt;one and only one improvement each time&lt;/a&gt;. After a few talks, you&apos;ll already be much better than the majority.&lt;/p&gt;
&lt;p&gt;Don&apos;t forget; if you make &lt;a href=&quot;/bias-towards-action/&quot;&gt;one improvement&lt;/a&gt;, you&apos;re already taking one step further than most of the population. And your first step should be deciding on the key message of your talk. The next steps are easier to follow.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/what-i-learned-about-getting-better-at-giving-talks-and-presentations/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/what-i-learned-about-getting-better-at-giving-talks-and-presentations/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On The Purpose of Life</title><link>https://candost.blog/on-the-purpose-of-life/</link><guid isPermaLink="true">https://candost.blog/on-the-purpose-of-life/</guid><description>Finding a purpose in life is a difficult journey. Is the journey itself the purpose of life? Or is it something else? Well, I continued searching for why we exist, or at least, why I exist.</description><pubDate>Tue, 27 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Finding a purpose in life is a difficult journey. Is the journey itself the purpose of life? Or is it something else? Well, this is the Mediation, and I continued searching for why we exist.&lt;/p&gt;
&lt;p&gt;These days, whoever I talk to splits into two sides. One group has no idea what to do with their lives, and the other group is busy with their kids, so they have no time or energy to think about what to do with their lives. I&apos;m in the former group, even though I want to join an invisible third group—a group full of people who found their purpose in life. Maybe even there is a fourth one that consists of people living in peace without a purpose while life takes them wherever it wants.&lt;/p&gt;
&lt;p&gt;Let&apos;s stop here for a second. I don&apos;t aim to explain those groups (as &lt;a href=&quot;/goals-and-existence/&quot;&gt;I wrote about them before&lt;/a&gt;), but I want to discuss the fundamentals of belonging to any of these groups. I probably won&apos;t arrive at any conclusion, but I will leave you with something to think about.&lt;/p&gt;
&lt;p&gt;The problem is in the dichotomy between having a good life and not knowing what to do with it (which, in turn, makes life &lt;em&gt;feel&lt;/em&gt; meaningless). Take me as an example. I have a good life (I think). I know I am very privileged and have a good income and comfort. I have a happy marriage, good health, and social life. Yet, I still don&apos;t know what to do with all of these. It feels like I should do something with it. I tried various things like helping others (which mostly made me happier), sharing what I learned, and a few more things that there is no need to mention here. But none was sticky enough to form a new road in my life. The only thing I can shape my life around is work, which takes more than eight hours a day. And that&apos;s sad.&lt;/p&gt;
&lt;p&gt;I work to have a good life, but this good living is not fully satisfying and doesn&apos;t give my life meaning. I know I&apos;m not alone in this. We&apos;re all stuck, looking for something. Something we don&apos;t know. The search is killing us.&lt;/p&gt;
&lt;p&gt;But I wonder, is the life that search itself? Is this quest the goal, the purpose of life? Are we going to spend our whole life in search? Or is it better to have a kid and simply ignore the search?&lt;/p&gt;
&lt;p&gt;Or should we sit under a tree as &lt;a href=&quot;https://www.worldhistory.org/Siddhartha_Gautama/&quot;&gt;Buddha did and wait for days until we find enlightenment&lt;/a&gt;? In his enlightenment, he explains how suffering in life comes from cravings (for a &lt;em&gt;better feeling&lt;/em&gt;). For example, if we want to be successful, we won&apos;t be happy until we can feel successful (which is not easy). He teaches us how to get rid of these cravings to eliminate suffering.&lt;/p&gt;
&lt;p&gt;Accepting that suffering is part of life and walking life&apos;s road without craving looks like the way. Or is it?&lt;/p&gt;
&lt;p&gt;I want to follow my own path instead of Buddha&apos;s. But I look for what others say.&lt;/p&gt;
&lt;p&gt;In one of his talks, &lt;a href=&quot;https://en.wikipedia.org/wiki/Jiddu_Krishnamurti&quot;&gt;Krishnamurti&lt;/a&gt; says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When the mind is free from all conditioning, then you will find that there comes the creativity of reality, of God, or what you will, and it is only such a mind, a mind which is constantly experiencing this creativity, that can bring about a different outlook, different values, a different world.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Krishnamurti tells us to eliminate all conditioning we put ourselves in. Do we want &lt;em&gt;something&lt;/em&gt; because someone else has it and we don&apos;t? Do we judge ourselves because we simply want to become better than who we are now? Do we not like ourselves as we are? If we want to know ourselves, we must go deep, he says, remove all conditions we created around our minds and hearts and look at ourselves without judgment, conditioning, evaluation, comparison, or condemnation.&lt;/p&gt;
&lt;p&gt;It looks like the cravings that Buddha talked about comes from conditioning in our minds. Is getting rid of all these conditioning the way to find purpose in life? Will removing conditioning also remove the confusion of what to do with our lives?&lt;/p&gt;
&lt;p&gt;In his other talk, Krishnamurti says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Can you and I be free of all this turmoil and confusion? What is confusion? ... Confusion exists only when there is the fact plus what I think about the fact: my opinion about the fact, my disregard of the fact, my evasion of the fact, my evaluation of the fact, and so on. If I can look at the fact without the additive quality, then there is no confusion. ... &lt;strong&gt;Confusion arises only when I think or insist that the road leads somewhere else—and that is actually the state that most of us are in.&lt;/strong&gt; Our opinions, our beliefs, our desires, ambitions, are so strong, we are so weighed down by them, that we are incapable of looking at the fact. ... Being confused, to acknowledge to oneself that one is confused requires, not courage, but a certain clarity of thought, clarity of perception. ... When a confused mind acts, it can only produce further confusion; but a mind that is aware that it is confused and understands this whole process of confusion need not act because that very clarity is its own action.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;How can we see the fact that shows where our lives are going without our opinion about the fact? If the confusion arises only when we insist that the road leads somewhere else—other than where our lives would go—then how do those with purposes in their lives &lt;em&gt;know&lt;/em&gt; that their road leads to a place (but not somewhere else)?&lt;/p&gt;
&lt;p&gt;I want to learn from one of those people who had a purpose in their lives—the third group. Let&apos;s take Wangari Maathai, the first African woman and environmentalist, to win the Nobel Peace Prize.&lt;/p&gt;
&lt;p&gt;Wangari Maathai fought against a colonial culture that exploited agriculture and destroyed the ecosystem in Kenya. Colonial forces planted the most profitable plants that didn&apos;t belong to the habitat. She sought to resurrect the ecosystem and culture by planting local trees and training local communities that voluntarily worked in plantations. She knew that Kenyans must follow their own journey, not a dictated one. She dedicated her life to this purpose.&lt;/p&gt;
&lt;p&gt;In her &lt;a href=&quot;https://en.wikipedia.org/wiki/Unbowed:_A_Memoir&quot;&gt;memoir&lt;/a&gt;, she wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What I have learned over the years is that we must be patient, persistent, and committed. When we are planting trees, sometimes people will say to me, &quot;I don&apos;t want to plant this tree because it will not grow fast enough.&quot; I have to keep reminding them that the trees they are cutting today were not planted by them but by those who came before. So they must plan the trees that will benefit communities in the future. I remind them that like a seedling, with the sun, good soil, and abundant rain, the roots of our future will bury themselves in the ground, and a canopy of hope will reach into the sky.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Should we persistently and patiently remove all the conditioning from our lives and expect a road to be visible over time? Maybe.&lt;/p&gt;
&lt;p&gt;Is the tree we&apos;re planting today actually the action of thinking about it? Possibly.&lt;/p&gt;
&lt;p&gt;And how long could this road be? Maathai answered in the same memoir:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I have always believed that, no matter how dark the cloud, there is always a thin, silver lining, and that is what we must look for.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It looks like dark clouds are our conditionings, cravings, and confusions that result in suffering. We need to learn how to find that silver lining.&lt;/p&gt;
&lt;p&gt;When Maathai said, &lt;em&gt;&quot;We need to honor the past but look to the future,&quot;&lt;/em&gt; she perhaps meant honoring the past is observing it but not creating conditions from it. If we have a good life &lt;em&gt;now&lt;/em&gt;, maybe we shouldn&apos;t condition ourselves that life needs to lead somewhere. Perhaps stopping the search is actually looking to the future.&lt;/p&gt;
&lt;p&gt;In his novel Castle, Kafka said, &quot;If a man has his eyes bound, you can encourage him as much as you like to stare through the bandage, but he&apos;ll never see anything.&quot; Perhaps, our search for meaning is our bandages. Maybe, we&apos;ll see our future when we stop looking for it.&lt;/p&gt;
&lt;p&gt;Maybe Krishnamurti is right.&lt;/p&gt;
&lt;p&gt;Maybe Kafka is right too.&lt;/p&gt;
&lt;p&gt;Maybe the journey itself is part of the experience.&lt;/p&gt;
&lt;p&gt;Maybe the solution is stopping the search of why we&apos;re on this road and looking around to see where the road leads.&lt;/p&gt;
&lt;p&gt;Maybe looking back at the road we took so far and honoring it but opening ourselves for a brand new step without any conditioning we built from our previous steps will help us to new journeys.&lt;/p&gt;
&lt;p&gt;Maybe one of those journeys will be the one. The one that is not created around cravings. The one we didn&apos;t expect, search, and want.&lt;/p&gt;
&lt;p&gt;Perhaps, we have to live this through to reach what we seek. Not to search for it, not to have a goal for finding it but to simply pass the stage in our lives at least to see where it leads.&lt;/p&gt;
&lt;p&gt;I didn&apos;t expect to find something when I began writing this. These thoughts were already inside me. There are a lot of maybes and perhaps above. But I have more clarity than before. &lt;em&gt;Perhaps&lt;/em&gt; these ambiguities will slowly fade away.&lt;/p&gt;
&lt;p&gt;This is a journey that I &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;started discovering a few years ago&lt;/a&gt;. It &lt;a href=&quot;/what-hades-the-game-had-taught-me/&quot;&gt;taught me different things&lt;/a&gt;. It has &lt;a href=&quot;/being-morally-good-in-the-war-of-life/&quot;&gt;ups&lt;/a&gt; and &lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;downs&lt;/a&gt;, and I often &lt;a href=&quot;/goals-and-existence/&quot;&gt;write about it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I hope I somehow take you on this journey as well and give you something to think about.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/on-the-purpose-of-life/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/on-the-purpose-of-life/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Reflexive Psychology to Learn More About Yourself</title><link>https://candost.blog/notes/46f/</link><guid isPermaLink="true">https://candost.blog/notes/46f/</guid><pubDate>Mon, 26 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In a dinner with a colleague, we talked about psychology in leadership. They were going to therapy and told me the impact of group therapy (I never had one): you see yourself through the eyes and stories of others. When you listen to someone else, it makes you think about yourself and how you relate to their story and how you had similar experiences in your life, and how you interpret your own stories. Reflexivity is a known concept of psychology and is widely known in the scientific community.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;1: Why do we bother to write?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4/&quot;&gt;4: Monitoring Work of Direct Reports&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44l/&quot;&gt;44l: Be part of the conversation and also the manager while receiving feedback&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pass your words from three doors before you speak</title><link>https://candost.blog/notes/52e/</link><guid isPermaLink="true">https://candost.blog/notes/52e/</guid><pubDate>Mon, 26 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Before you speak (or write a message to someone), pass your message from three gates that ask these questions, as Rumî said, &quot;Is it true? Is it necessary? Is it kind?&quot;
The first door eliminates the things your mind makes up.
The second door eliminates the thoughts that arise without a filter, the thoughts you have but don&apos;t contribute to the common good.
The third door ensures you don&apos;t break hearts with your words because once a heart is broken, it&apos;s impossible to repair it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/13/&quot;&gt;13: Be Kind at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;17: Public Speaking and Improving Skills&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/52e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/52e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Sometimes, it just needs to be felt right</title><link>https://candost.blog/notes/41d/</link><guid isPermaLink="true">https://candost.blog/notes/41d/</guid><pubDate>Tue, 20 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When &lt;a href=&quot;https://kingkiller.fandom.com/wiki/Auri&quot;&gt;Patrick Rothfuss wrote about Auri&lt;/a&gt;, he didn&apos;t tell a story. He defined a person. Auri is still a mystery and will always be. She figured things out in her world away from everyone, and she often understood how things should be. Everything has a purpose. Not every nice thing has to be used and owned by someone. Some things belong where they are, but finding exactly where they belong takes energy and time. When Auri finds something new, she spends good thinking about giving it to the right place where that thing can serve a purpose even though nobody knows the purpose; that thing just &lt;em&gt;feels&lt;/em&gt; right to stay at that place. That&apos;s perhaps how things should be. We just need to &lt;em&gt;feel right&lt;/em&gt; where we are or where we belong without explaining why we feel right.&lt;/p&gt;
&lt;p&gt;&amp;lt;details&amp;gt;
&amp;lt;summary&amp;gt;Background story&amp;lt;/summary&amp;gt;
When Auri found a new room and inside a drawer full of clean and high-quality sheets, I loved how she didn&apos;t touch them. Because she knew that it was going to corrupt her and break her spirit, some things were supposed to be that way—choosing not to own every beautiful thing while knowing you would definitely benefit from it.
&amp;lt;/details&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;1: Why do we bother to write?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30/&quot;&gt;30: Scientific Thinking and Fact-Checking for A Better Life&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/62/&quot;&gt;62: Energy Management at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/65/&quot;&gt;65: Learning and Understanding&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Slow_Regard_of_Silent_Things&quot;&gt;The Slow Regard of Silent Things&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/41d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/41d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why don&apos;t they leave the software to software engineers?</title><link>https://candost.blog/why-dont-they-leave-the-software-to-engineers/</link><guid isPermaLink="true">https://candost.blog/why-dont-they-leave-the-software-to-engineers/</guid><description>Leaders often guide problem-solving in the software and involve themselves in every decision. Instead, they should clarify the goal and bring transparency to problems.</description><pubDate>Fri, 16 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every time I see an engineer gets headroom to make some improvements in the system, I get worried. Even though they can turn &lt;a href=&quot;https://thecynefin.co/about-us/about-cynefin-framework/&quot;&gt;complex tasks into complicated ones and solve them&lt;/a&gt;, they often struggle with freedom. Even though they know exactly where the problems are or where the team needs to improve, they get lost easily without guidance. I have seen this many times, and as an engineer, I also was the same. When I became a leader, I learned that the problem is not with the engineer. Whenever I see an engineer focus on something wrong or try to over-engineer something these days, my worry comes from me not doing my job.&lt;/p&gt;
&lt;p&gt;When an engineer tries to over-engineer something, they appear to lack some skills, such as not identifying the most pressing tech debt. &lt;strong&gt;They look for what &lt;em&gt;they want to change&lt;/em&gt; instead of what needs to be changed.&lt;/strong&gt; I also did the same: there was a new technology that I wanted to use, and I tried it at the first chance I found. It was often neither required nor needed. It was me &lt;em&gt;learning something new&lt;/em&gt;, which was cool and totally okay. However, the problem was precisely here: &quot;&lt;a href=&quot;/newsletter/mektup-27/&quot;&gt;I tried it &lt;em&gt;at the first chance I found&lt;/em&gt;.&lt;/a&gt;&quot; And the chances were not always aligned with the biggest problems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Identifying the most significant problems on the codebase requires analytical thinking and finding a way in ambiguity, and I thought most engineers lacked these skills.&lt;/strong&gt; They &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;couldn&apos;t prioritize&lt;/a&gt; which issue was the most pressing one and &lt;a href=&quot;/newsletter/mektup-45/&quot;&gt;couldn&apos;t tell when exactly that issue could become a blocker and a real pain for development&lt;/a&gt;. I started helping engineers to find these issues by listening to them, &lt;a href=&quot;/questioning-vs-asking/&quot;&gt;asking questions to help them approach better&lt;/a&gt;, and understanding the technical challenges. Although it initially helped, it didn&apos;t solve the root cause. To make things worse, &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;&lt;strong&gt;I thought it was my job (as a leader)&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;to hand-hold &lt;em&gt;all&lt;/em&gt; engineers in these situations and help them figure out why they should avoid over-engineering or solving the wrong tech debt.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That &lt;a href=&quot;/newsletter/mektup-37/&quot;&gt;guidance mindset&lt;/a&gt; is dangerous. In hindsight, it looks like something that a leader should do. It is tempting to guide engineers because that is the shortcut that brings quick solutions and leads to better outcomes in the short term. However, it limits engineers&apos; autonomy. At some point, it only satisfies the leader&apos;s ego. In the worst case, it leads to micro-management.&lt;/p&gt;
&lt;p&gt;The problem appears to be on the engineer, but it is actually on the leader. &lt;strong&gt;If the team doesn&apos;t have clarity around where they want to go, what they need to build, and why they need to build that, they will struggle.&lt;/strong&gt; They will build unnecessary solutions that only bring joy to engineers and have no use now or in the future. They will over-engineer things or take very opinionated approaches, which will create conflicts or cause complaints from the next developer. All of this will lead to the &quot;everything needs to be rewritten&quot; conversations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If the leadership lacks strategy and clarity on the goals and fails to communicate them with the most junior engineer, there is nothing an engineer can do besides over-optimizing wrong things&lt;/strong&gt;. If that&apos;s the case, the team needs a lot of hand-holding, and that&apos;s why they don&apos;t leave the software to software engineers.&lt;/p&gt;
&lt;p&gt;Leaders should seek clarity in the team&apos;s goals and ensure everybody understands why and what so that engineers can focus on how. &lt;strong&gt;If any leader finds themselves involved in the how part of the work a lot, that means the leaders are doing something wrong.&lt;/strong&gt; When that is the case, the leader should start by NOT leaving the software to software engineers. The leader&apos;s job is to ensure the team is building the right things. However, they shouldn&apos;t stop there.&lt;/p&gt;
&lt;p&gt;Most problems occur when the leader stops there and falls into &quot;always guiding mode,&quot; where they help the team with every single problem. Even though they should not leave the software to software engineers in the first place, they never change that behavior. They don&apos;t work on creating strategy and clarity. They get stuck in organizational work and don&apos;t extract themselves, and never help people learn how to navigate within &lt;em&gt;some&lt;/em&gt; ambiguity. Although this looks like a problem for the team&apos;s leader, the problem often goes up in the leadership chain.&lt;/p&gt;
&lt;p&gt;Leaving the software to engineers requires a good amount of work from the organization. Not a single leader can do it alone in their teams. If the organization doesn&apos;t provide transparency, clarity, and a &lt;a href=&quot;/communicating-decisions-in-the-organizations/&quot;&gt;good communication&lt;/a&gt; culture, the leader can do only so much. Even though the front-line leader may or may not succeed depending on the organization&apos;s culture, they should still seek to bring clarity to the goals.&lt;/p&gt;
&lt;p&gt;Of course, leaving the software to software engineers won&apos;t work all the time. Junior engineers need that guidance to learn where to keep the balance. In these cases, senior engineers should provide this guidance. And for senior engineers to do that, they have to have autonomy. It&apos;s like a rolling ball; clarity and transparency start from the top leadership in the company and roll down to the most junior person.&lt;/p&gt;
&lt;p&gt;In the end, engineers can&apos;t be left alone to decide the software&apos;s destiny unless they know exactly where they are going. &lt;strong&gt;The last thing any leader wants is people working on the wrong things.&lt;/strong&gt; That&apos;s why leaders involve themselves a lot in every process. However, they should aim to bring transparency, clarity, and good communication and leave the software to engineers. If none of these exist, the software won&apos;t be left to software engineers.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/why-dont-they-leave-the-software-to-engineers/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/why-dont-they-leave-the-software-to-engineers/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Task-Relevant Maturity</title><link>https://candost.blog/notes/53e/</link><guid isPermaLink="true">https://candost.blog/notes/53e/</guid><pubDate>Mon, 12 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Task Relevant Maturity is a concept that helps the leader to understand how much they should monitor their subordinate and guide them.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;How often you monitor should not be based on what you believe your subordinate can do in general, but on his experience with a specific task and his prior performance with it — his task-relevant maturity... as the subordinate&apos;s work improves over time, you should respond with a corresponding reduction in the intensity of the monitoring.&quot; —Andy Grove, High-Output Management&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One of the mistakes I made (not a big one but an operational mistake) was giving one of the team members work they had never done before and leaving them alone there while thinking that they were working as senior engineers and should be able to work autonomously and drive the project forward. Even though they delivered projects before, their task-relevant maturity (TRM) was low. They never worked on projects with ambiguous business analyses. Most of the things they worked on were clearly defined and scoped, and all they had to do was ensure it got done; most of the tasks were on the technical implementation, not on figuring out the business rules. In the new project, their TRM was low, and they needed more guidance from me, their manager. Yet, I didn&apos;t adjust my working style according to this and let them struggle. At first, this was unclear to me as we still get to know each other. However, there were many signs that told me to be more involved.&lt;/p&gt;
&lt;p&gt;My learning from this situation is to adjust your involvement according to the TRM of the person. If they are the master of similar work and have done it many times, then I don&apos;t need to be involved. However, if the work is new to them, I should try handholding in the beginning and reduce the amount of involvement later on.&lt;/p&gt;
&lt;p&gt;There is no one-size-fits-all approach at any given time to lead team members. Instead, careful planning considering people&apos;s TRM is a must. The leader should play on people&apos;s strengths, give them tasks that they are using those strengths, and occasionally give them work where their TRM is low and ensure that they get good support while learning it. Playing to people&apos;s strengths will help with morale, and they will better learn and grow.&lt;/p&gt;
&lt;p&gt;The last piece of the puzzle is adjusting one-on-ones. When people&apos;s TRM is low, handholding requires more frequent one-on-ones and changing the content of the one-one-one to a more guiding mode. If the TRM is medium on the task the engineer is working on, the one-one-one frequency can be much lower, conversations can go more bidirectional, and the emphasis can be on support and mutual reasoning. When the TRM is high, the manager&apos;s involvement should be minimal, and the engineer can do most of the talking while the manager helps to establish objectives and how to monitor goals.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4/&quot;&gt;4: Monitoring Work of Direct Reports&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/5/&quot;&gt;5: Managing Promotions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;12: Engineer Autonomy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/14/&quot;&gt;14: Experiences are like compound interest on money&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;56: Structuring Teams in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/61/&quot;&gt;61: What to delegate?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/newsletter/mektup-53/&quot;&gt;Mektup #53&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://getlighthouse.com/blog/management-concept/&quot;&gt;Task Relevant Maturity Management Concept Great Leaders use&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/53e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/53e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Maximizing Personal Growth by Understanding Feedback You Get</title><link>https://candost.blog/maximizing-personal-growth-by-understanding/</link><guid isPermaLink="true">https://candost.blog/maximizing-personal-growth-by-understanding/</guid><description>Even the best of us make mistakes. Taking feedback well is aimed at building a healthy growth habit, identifying the best growth path, and keeping the balance while walking down that road.</description><pubDate>Thu, 08 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In 2014, Douglas Stone &amp;amp; Sheila Heen, from the Harvard Negotiation Project and the authors of Difficult Conversations, came together and published a book called Thanks for The Feedback. In 309 pages, they talked about how to receive feedback well. They didn&apos;t focus on software engineers or any specific profession. But they doubled down on receiving aspect of feedback.&lt;/p&gt;
&lt;p&gt;A while ago, I &lt;a href=&quot;https://www.youtube.com/watch?v=K-RHkk67eCQ&quot;&gt;gave a talk&lt;/a&gt; about how to receive feedback to maximize your growth based on their book. And today, I want to write down what I talked about to answer three questions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why should we focus on receiving feedback?&lt;/li&gt;
&lt;li&gt;Why do we become defensive when faced with negative feedback, and how can we lower our walls?&lt;/li&gt;
&lt;li&gt;How do we understand the feedback we get? And what to do with it?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why is receiving feedback more important than giving feedback?&lt;/h2&gt;
&lt;p&gt;I have never met a person who wants to stay as it is. Everyone wants to change a thing or two and knows &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;there is no better way than to get constructive feedback&lt;/a&gt;. However, what constructive means changes from person to person. Also, focusing on how to get feedback well is not everyone&apos;s trait, as it&apos;s uncomfortable: &lt;strong&gt;&lt;em&gt;we prefer telling people what they should do instead of hearing what we should be doing.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Receiving any kind of feedback is hard—positive and negative. When we get a compliment, we often don&apos;t know what to say besides thank you. We deny it and stay humble even though we like the words we hear, and we deeply know that we deserve them. On the other hand, when we hear any feedback that aims at altering our behavior, we see it as a threat, and somewhere in our chest, anger/sadness/frustration pop up. Our mind tells us to calm down, but it&apos;s challenging to push back these negative feelings.&lt;/p&gt;
&lt;p&gt;Due to this discomfort, we focus more on giving feedback. The responsibility for improvements is not on our shoulders anymore. It&apos;s the other side who has to deal with it; it&apos;s the other person who has to change their behavior.&lt;/p&gt;
&lt;p&gt;If everyone focuses on giving feedback and nobody tries to get better at receiving feedback, how can the given feedback be effective? If everybody talks exceptionally well, but nobody listens, what&apos;s the purpose of talking? What thrives groups or communities is valuable confrontation and mastering the feedback-receiving skills or even finding the feedback even when there is no one giving feedback.&lt;/p&gt;
&lt;p&gt;As it&apos;s promoted in many ways in the business books and behavioral psychology, feedback drives our learning. When we focus on receiving feedback, our curiosity grows with every word we hear. Extracting the best from any negative feedback feeds the growth. The growth mindset looks for feedback but easily builds up walls when we hear criticism.&lt;/p&gt;
&lt;p&gt;Even though we need feedback, seek it, and ask for it, we go behind the fence when faced with a harsh one. We can learn how to grow only when we lower our walls and break down fences. Only then can we understand what we lack or do wrong. But why do we put up walls or build fences around ourselves in any criticism we hear?&lt;/p&gt;
&lt;h2&gt;Why do we become defensive when facing negative feedback?&lt;/h2&gt;
&lt;p&gt;Because we have an inner voice that never stays silent. Whenever we hear negative feedback, it lights up and starts firing back. Something triggers these blocks and prevents feedback from going through. According to Douglas and Sheila, three triggers erect these walls and block feedback: truth, relationship, and identity.&lt;/p&gt;
&lt;h3&gt;Truth&lt;/h3&gt;
&lt;p&gt;We build walls when the other side is—simply put—wrong. For example, we get feedback that says we didn&apos;t take responsibility when there was a failure. In fact, we took responsibility and did a great amount of work to recover from failure, yet, they didn&apos;t see. So, the other side is wrong; there actually is no feedback. But still, the other person thinks that they give us feedback. So, what&apos;s happening there?&lt;/p&gt;
&lt;p&gt;To uncover the case, we need to understand three different kinds of feedback:&lt;/p&gt;
&lt;h4&gt;Three Kinds of Feedback&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;/three-types-of-feedback/&quot;&gt;I wrote about these three kinds of feedback before&lt;/a&gt;. In short:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Appreciation:&lt;/strong&gt; It&apos;s the feedback we love when it&apos;s authentic and given on time. Examples:
&quot;Great job!&quot;
&quot;I appreciate the feedback you gave last week. I was able to improve thanks to it.&quot;
&quot;You&apos;re a great team player.&quot;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Evaluation:&lt;/strong&gt; The feedback is to evaluate our skills, align expectations, and clarify consequences. Examples:
&quot;We increased your compensation by 30% because you did an amazing job on the last project.&quot;
&quot;You exceeded our expectations last year.&quot;
The goal is to rate against standards and expectations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Coaching:&lt;/strong&gt; The feedback is to give direction. It aims to help us learn, grow, or change. Examples:
&quot;You should work on your debugging skills.&quot;
&quot;To improve your communication, please read these two books.&quot;
The coach is aimed at fixing a problem.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We need all three of them. But &lt;strong&gt;&lt;em&gt;we feel disappointed or become defensive when we expect one but receive the other&lt;/em&gt;&lt;/strong&gt;. In the example above, we got evaluation feedback that indicates we didn&apos;t meet the expectations while we were waiting for the appreciation feedback.&lt;/p&gt;
&lt;h4&gt;How to Understand The Differences&lt;/h4&gt;
&lt;p&gt;As we expect something and get something else, there is a mismatch. It&apos;s often caused by differences in behavior and intention.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Behavior&lt;/strong&gt; and &lt;strong&gt;intention&lt;/strong&gt; are two sides of the coin. We see someone else&apos;s behavior, but the intention is often invisible. On the contrary, we always know &lt;em&gt;our&lt;/em&gt; intention and aren&apos;t often very careful about how we reflect it to the other side. If someone is taking the time to give us feedback, they have an intention we must uncover. How they give feedback (their behavior) might trigger unpleasant feelings on our side, but we must actively listen to understand their intention.&lt;/p&gt;
&lt;p&gt;Instead of getting into defensive mode and responding with, &quot;That&apos;s not true,&quot; we must hold the thrust in our internal drive and approach with, &quot;Tell me more.&quot; We should insist on asking clarifying questions and getting more information until the person giving feedback has nothing left to say.&lt;/p&gt;
&lt;p&gt;A very unintuitive thing to talk about when the truth triggers are working is talking about the purpose of the feedback and figuring out the type of feedback. If they wanted to give appreciation feedback, but it turned into coaching feedback, we can explain these three types of feedback and ask them if they wanted to give coaching feedback or appreciation feedback. Making it explicit and talking about it also helps the feedback giver deliver it correctly.&lt;/p&gt;
&lt;p&gt;This was about the truth that blocks feedback from reaching its destination. We also have two more triggers that prevent us from growing. Let&apos;s look at the relationships.&lt;/p&gt;
&lt;h3&gt;Relationship&lt;/h3&gt;
&lt;p&gt;Sometimes, feedback doesn&apos;t reach us because our relationship gets in the way, even though what the other person says is true (most of the time, it&apos;s true). When we hear negative feedback from someone we care about (or someone we&apos;re frustrated with), we get defensive. We react to who they are, not what they say. What we think about the person and how they treat us causes us to build defense walls.&lt;/p&gt;
&lt;p&gt;When our parents told us, &quot;You never tidy up your room,&quot; we often said (or thought), &quot;That&apos;s my room; stop putting your nose into my life.&quot; Our reaction was based on our relationship. Our room was probably a mess, but what we understood was not about that; it was about them intervening in our lives.&lt;/p&gt;
&lt;p&gt;At work, when one of our peers we&apos;re frustrated with tells us, &quot;Your code is not working,&quot; we answer, &quot;Well, it&apos;s your problem. It works on my machine. 🤷&quot; It becomes their lack of skill that they can&apos;t figure it out. What triggers us to react this way is not the feedback but &lt;strong&gt;how we set up our relationship&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;While the feedback is about the code not working, we move the discussion to the relationship and push the responsibility to the other side. We switch the track we&apos;re on.&lt;/p&gt;
&lt;h4&gt;Don&apos;t Switch The Track You&apos;re On&lt;/h4&gt;
&lt;p&gt;When our moms tell us that we never tidy up our room, it&apos;s about our room. When our colleague tells us our code is not working, it&apos;s about our code. But our response is about how our mom always interferes with our lives and how our colleagues cannot run the code. We change the track we&apos;re on. Our colleague wanted to discuss code, but we moved the discussion to their incapability. When we change the track, we immediately create conflict because that&apos;s not what our colleague meant. They then have to explain themselves with frustration or get into defensive mode.&lt;/p&gt;
&lt;p&gt;Getting out of this cycle requires us to take three steps back and figure out the relationship system we are in.&lt;/p&gt;
&lt;h4&gt;Understand The Relationship System&lt;/h4&gt;
&lt;p&gt;There are three elements in every relationship: two people and the relationship itself. We often forget the last one. To lower our defense walls for feedback to pass through, we need to take three steps back to uncover three elements of the relationship.&lt;/p&gt;
&lt;p&gt;The first step back is uncovering two elements: us and the other person. We each have our unique personalities that can create conflict when working with different personalities. In the first step, we should identify how each of us contributes to the problem.&lt;/p&gt;
&lt;p&gt;The second step is understanding the relationship: the role clashes. We have our roles in the team and organization. Many role definitions are largely invisible, even if they are well-defined. These invisible boundaries are the hidden source of conflicts. After understanding our roles, we can take the third step.&lt;/p&gt;
&lt;p&gt;The third step is looking with a bird-eye view: the big picture in the organization. We should identify how other people, project and hierarchical structures, work processes, and other relationships influence and constrain decisions and affect the outcomes we get.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Side note:&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;Understanding the relationship system also helps to correct our tendency to absorb blame. For more detail, you can read&lt;/em&gt; &lt;a href=&quot;/learning-cone-and-blame-spiral-the-case-of-blame-absorbers/&quot;&gt;&lt;em&gt;this post&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The first two triggers (truth and relationship) were focused on both sides of the feedback. There is a third, and the most fundamental one, that not only causes us to take a stance against feedback but also pushes us to go offensive—identity.&lt;/p&gt;
&lt;h3&gt;Identity&lt;/h3&gt;
&lt;p&gt;Imagine getting feedback that says, &quot;You are always late to the meetings.&quot; If punctuality is part of our identity, this feedback will be threatening. As a result, we will feel it in our bones and create walls to mitigate the pain. Or we accept it and dodge the feedback with an answer, &quot;Yes, that&apos;s who I am.&quot;&lt;/p&gt;
&lt;p&gt;While even the best of us makes mistakes and do things that don&apos;t match how we define ourselves, how do we prevent the feeling of threatening our identity? How can we lower our guard and accept the feedback?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Side note:&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;This part requires a lot of self-reflection and work on ourselves more than any other situation we talked about above.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We start with learning ourselves and our story.&lt;/p&gt;
&lt;h4&gt;Know Yourself and Find Feedback Footprint&lt;/h4&gt;
&lt;p&gt;Learning ourselves is a tricky process. But without it, we cannot comprehend the feedback we receive. We must understand our thoughts and feelings and don&apos;t hang up on stories we built for ourselves. Instead of living in the past or focusing on the future, we can take feedback at that moment.&lt;/p&gt;
&lt;p&gt;When someone gives us feedback, we shouldn&apos;t tie it to our past. When we respond to feedback with, “I was always like that, and I don&apos;t think I will change,” we get stuck in our past.&lt;/p&gt;
&lt;p&gt;On the other hand, we also shouldn&apos;t focus on the future. If someone says, “You don&apos;t know how to behave in a meeting,” we shouldn&apos;t think in our heads, “I will never learn to work in a team,” which focuses on our future selves who, in five years from now, still don&apos;t know how to behave in a meeting.&lt;/p&gt;
&lt;p&gt;Instead, we need to take the feedback at that exact moment. To do that, we must discover how we react to feedback, which requires asking ourselves questions and finding our feedback footprint.&lt;/p&gt;
&lt;p&gt;Our reactions to feedback define how the feedback giver perceives our feedback-receiving skills. When we surprisingly react with anger or cry in facing harsh feedback, it creates a picture of how we cannot handle the feedback. These various behaviors are the feedback footprints that are unique to the individual. Many people are unaware of their &lt;em&gt;feedback footprint&lt;/em&gt; and are not ready to face harsh feedback. Asking ourselves, &quot;How do I typically behave when I receive feedback?&quot; is a good strategy to help us learn our unintentional behaviors. If the answer is crying, then explaining this to the other side can help with the whole situation and the perception we leave on others. After learning our reactions, it will be easier to prepare for any kind of feedback, easily handle difficult situations, and embrace a growth mindset.&lt;/p&gt;
&lt;h4&gt;Embrace A Growth Mindset&lt;/h4&gt;
&lt;p&gt;Whenever we build a growth mindset, we see negative feedback as less threatening and more of an opportunity. The growth mindset means looking for cues to learn, finding opportunities to improve, and being open to change. For example, instead of saying, &quot;I am a procrastinator,&quot; we can embrace more complexity in our lives by saying, &quot;I try not to procrastinate if I can,&quot; and be open to changing our identities.&lt;/p&gt;
&lt;p&gt;When we build this growth mindset, we begin taking the extra mile and start looking for cues to learn, even when there is nothing around. We will begin &lt;em&gt;pulling feedback&lt;/em&gt; even if there is no feedback at all. This mindset creates a path for us to grow.&lt;/p&gt;
&lt;p&gt;So far, we talked about learning how to receive feedback instead of building walls and acting on it to grow. We haven&apos;t talked about the other side of the medallion yet, and it&apos;s as crucial as accepting feedback.&lt;/p&gt;
&lt;h2&gt;Drawing Boundaries to Block Feedback Intentionally&lt;/h2&gt;
&lt;p&gt;Sometimes, we get too much feedback than we can handle. Or we get the feedback at the wrong time. It doesn&apos;t mean we should push ourselves to improve on many fronts, which can have a detrimental effect. If we cannot take feedback anymore, it&apos;s also okay to draw boundaries and acknowledge feedback and gently deny it. Not every feedback is correct or on time. If we understand the feedback but have no time or energy to take action, we must be clear with the other person, explain why it&apos;s not the right time, and thank them for the feedback and the time they spent on it.&lt;/p&gt;
&lt;p&gt;Here is an example answer to the feedback we can&apos;t take at that moment:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Thanks a lot for the feedback. I appreciate you taking the time to consider it and give me this feedback. However, I&apos;m currently not in the best position to act on it. I have to figure out &lt;em&gt;some other things&lt;/em&gt; that currently require my attention. When I&apos;m done, I will consider your feedback and approach you to talk about it. I hope it&apos;s okay for you. Once again, thank you so much.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Learning how to take feedback well is a delicate and complex process. However, once we know the basics, it&apos;s much easier to handle any feedback and grow as a person. Even the best of us make mistakes; nobody is perfect. Taking feedback well is not aimed at becoming a perfect person; it&apos;s aimed at building a healthy habit of growth, identifying the growth path, and keeping the balance while walking down that road.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/maximizing-personal-growth-by-understanding/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/maximizing-personal-growth-by-understanding/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>DDIA: Consistency and Consensus in Distributed Systems</title><link>https://candost.blog/books/consistency-and-consensus-in-distributed-systems/</link><guid isPermaLink="true">https://candost.blog/books/consistency-and-consensus-in-distributed-systems/</guid><description>Linearizability and its trade-offs, ordering guarantees, sequence number ordering, consensus, and coordination services in distributed systems.</description><pubDate>Tue, 23 May 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article is part of my notes from Chapter 9 of &lt;a href=&quot;https://dataintensive.net/&quot;&gt;Designing Data-Intensive Applications by Martin Kleppmann&lt;/a&gt;. You can read other chapter notes as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;Chapter 2: Data Models and Query Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;Chapter 3: Data Storage and Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;Chapter 4: Encoding, Decoding, Schemas, and Data Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Chapter 5: Data Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;Chapter 6: Database Partitioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Chapter 7: Transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;Chapter 8: The Trouble with Distributed Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;Chapter 9: Consistency and Consensus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chapter 10: Batch Processing&lt;/li&gt;
&lt;li&gt;Chapter 11: Stream Processing&lt;/li&gt;
&lt;li&gt;Chapter 12: The Future of Data Systems&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;What we discussed so far has built our understanding of consistency and consensus. In this chapter, we learn how to build fault-tolerant systems. We&apos;ll assume all troubles and problems we mentioned in the last chapter can occur, try to find ways to prevent them, and sometimes let the system fail. That&apos;s why we need to understand what is possible and what&apos;s not. We will learn our limits to provide consistency and learn how to build consensus (it&apos;s sometimes better if everyone agrees that things are wrong).&lt;/p&gt;
&lt;p&gt;So far, we heard about different consistency levels, such as eventual consistency. In this chapter, we&apos;ll learn stronger consistency models and their trade-offs.&lt;/p&gt;
&lt;h2&gt;Linearizability&lt;/h2&gt;
&lt;p&gt;The idea behind the linearizability is to make the system appear as if there is only one replica without any replication lag, even though there are multiple replicas behind the scenes. There are subtle details or nuances that impact how linearizability works, but the main idea is that once one client has seen a new value, all other clients should also see that new value and never the old one. Hence, wherever two clients concurrently request data from different replicas, they should see the same data.&lt;/p&gt;
&lt;p&gt;Situations such as selecting a leader in a single-leader system demand linearizability. When [discussing](/books/the-trouble-with-distributed-systems/#The Truth Is Defined By The Majority) single-leader systems, we mentioned that leaders acquire a leader&apos;s lock. There shouldn&apos;t be any two nodes acquiring the leader&apos;s lock simultaneously. All replicas should accept the node which acquires the lock first as their leader.&lt;/p&gt;
&lt;p&gt;Other use cases include choosing a unique username in a user system, selecting seats in a theatre, or booking a seat on a plane. Although these situ­ations are based on one channel (e.g., one service), there can be cross-channel timing dependencies that require linearizability, such as saving an image and using a message queue to resize it to get a thumbnail in parallel (full-size image must be stored before requesting it to resize) to show in the user creation process.&lt;/p&gt;
&lt;p&gt;One confusion is quorums. Quorums in &lt;a href=&quot;/books/data-replication-in-distributed-systems/#Leaderless-Replication&quot;&gt;leaderless replication&lt;/a&gt; seem linearizable, but they are not. If we use a quorum of two (within three nodes), one client can write a new value to node-1, and another client can read from the other two nodes (node-2 and node-3, satisfying quorum of two) concurrently while the writer is processing writes in node-2 and node-3. When a client reads, they see the old value. Quorum is satisfied, but linearizability is not.&lt;/p&gt;
&lt;p&gt;Multi-leader systems are by nature non-linearizable (they concurrently process write operations).&lt;/p&gt;
&lt;h3&gt;The Trade-Off of Linearizability&lt;/h3&gt;
&lt;p&gt;If we want linearizability, we have to understand its cost. When we think about keeping data in multi-data centers, we must consider network delays between the data centers. If everything runs smoothly, we can offer linearizability (with synchronous cost). If we use a multi-leader approach, linearizability can be provided from each data center, even if the connection between them is interrupted. Each data center can synch data asynchronously once the connection is restored.&lt;/p&gt;
&lt;p&gt;If we use a single leader, we have more problems because the leader can be in the other data center (not in the one the client sends the request). We must return an error because linearizable read and write operations will require the leader. If clients can get data directly from followers, we won&apos;t provide linearizability.&lt;/p&gt;
&lt;p&gt;The CAP theorem is often mentioned with linearizability with its &lt;em&gt;availability&lt;/em&gt; property. But picking two out of three doesn&apos;t work; the real solution is &quot;either consistent or available when partitioned.&quot; A system can either provide availability or consistency (linearizability), not both. But also partitioning is different in the CAP theorem. It refers to network faults, which is something we cannot avoid at all.&lt;/p&gt;
&lt;p&gt;Additionally, not many systems provide linearizability, not because of availability but because of performance. Even when network delays are insignificant and have a reliable network, it is still costly in performance to provide linearizability.&lt;/p&gt;
&lt;h2&gt;Ordering Guarantees&lt;/h2&gt;
&lt;p&gt;We have seen &lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;the ordering&lt;/a&gt; and &lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;learned&lt;/a&gt; &lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;about concurrency&lt;/a&gt; in many places across the book. The information about which operation happened before another helped us to offer &lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;different levels of guarantees&lt;/a&gt;. This happened-before is a &lt;em&gt;comparison operation&lt;/em&gt;. When we want to put everything in total order, we should be able to &lt;em&gt;compare&lt;/em&gt; certain things somehow. Yet, not everything is comparable.&lt;/p&gt;
&lt;p&gt;For example, two mathematical sets are incomparable: how can we compare {a, b} and {b, a}? We can only say they are partially ordered and can think about causally ordering them. So what&apos;s different between total order and causality?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The total order is linearizability&lt;/em&gt;. One thing happens after another. &lt;strong&gt;There are no concurrent operations.&lt;/strong&gt; &lt;em&gt;Causality is having causally related operations&lt;/em&gt;; we can order them but can&apos;t compare them whether they are concurrent or not.&lt;/p&gt;
&lt;p&gt;That shows that there are different ordering guarantees. In linearizability, there is no concurrency (it&apos;s a stricter consistency than causal consistency). Also, linearizability implies causality: if everything is in total order, it&apos;s causally correct.&lt;/p&gt;
&lt;p&gt;So, how can we implement these ordering guarantees?&lt;/p&gt;
&lt;h3&gt;Sequence Number Ordering&lt;/h3&gt;
&lt;p&gt;It&apos;s difficult to track ordering operations and identify causality. If we track every operation and determine which ones are causally dependent on another, we would create a large performance overhead. Instead, we can use sequence numbers and timestamps to bring &lt;em&gt;total order&lt;/em&gt; to the operations in the system.&lt;/p&gt;
&lt;p&gt;If each operation is assigned a unique number, we can use these numbers to order operations. For example, if the system has a single leader, this leader can assign each operation a sequence number or timestamp and use these numbers to order operations. In multi-leader or leaderless systems, &lt;em&gt;each node&lt;/em&gt; can assign a number together with a unique node id to make these operations uniquely identifiable. However, we still have the problem of ordering (or causally relating two operations) across nodes if the system doesn&apos;t have a single leader.&lt;/p&gt;
&lt;p&gt;Before we solve the problem across nodes, let&apos;s look at non-causal sequence number generators. Imagine we have two nodes: one can generate and assign odd numbers, and the other even numbers. This way, we can get unique numbers for each operation, but one node can be used more, and the other node&apos;s number can stay behind. Thus, it still doesn&apos;t tell us which operation came first. Another method is using timestamps generated by a time-of-day clock. However, it&apos;s subject to clock skew, as &lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;we learned before&lt;/a&gt;. Another method is using preallocated numbers in each node (e.g., node A uses 1-1000, node B uses 1001-2000). But again, same as even-odd numbering, using preallocated numbers doesn&apos;t ensure a causal relationship.&lt;/p&gt;
&lt;p&gt;To solve all these issues, we have Lamport timestamps. Lamport timestamps are presented as (counter, node-id). As the pair will always be unique, Lamport represents the total order. If the counters are equal, the higher node-id will be greater. As this structure is the same with even/odd numbering, the system uses an extra parameter to satisfy causality requirements. Every node and every client keeps track of the maximum counter it has seen so far and includes the maximum on every request sent.&lt;/p&gt;
&lt;p&gt;Although using Lamport timestamps brings total order and makes a system consistent with causality, it doesn&apos;t solve the problems such as choosing a unique username. Even if we can decide who came first, we can only tell after the order is &lt;em&gt;finalized&lt;/em&gt;. If the order is not finalized yet, we cannot tell if a client making a username request can/should succeed. And for that, we need a total order broadcast.&lt;/p&gt;
&lt;h3&gt;Total Order Broadcast&lt;/h3&gt;
&lt;p&gt;Total order broadcast is, as the name tells itself, ensuring operations are executed in order across partitions and nodes. Using total order broadcast makes a system act like it has a single partition with a single-core CPU. Systems provide this guarantee with two qualities: &lt;strong&gt;reliable delivery&lt;/strong&gt; (&lt;em&gt;no matter what happens, every node gets the message&lt;/em&gt;) and &lt;strong&gt;total order delivery&lt;/strong&gt; (&lt;em&gt;no matter what happens, every node gets the messages in the same order&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;In total order broadcast, the message order is fixed at the time messages are &lt;em&gt;delivered&lt;/em&gt;; no node can intervene and retroactively insert a message in between if the subsequent messages have already been delivered. We can think of delivering messages like creating logs (transaction logs, write-ahead logs, etc.): we append any incoming messages to the end. As all nodes have to deliver the same messages in the same order, the nodes can get the logs and process the same message sequence.&lt;/p&gt;
&lt;p&gt;Linearizability and total-order broadcast are related but not the same. Total order broadcast guarantees that messages will be delivered in order but &lt;strong&gt;doesn&apos;t guarantee when they will be delivered&lt;/strong&gt;. In contrast, linearizability is a recency guarantee: a read operation is guaranteed to see the latest written value. We can implement linearizable storage using total order broadcast and total order broadcast using linearizable storage. Actually, both solutions are equivalent to a consensus that we were building upon. If we solve one of these problems, we can build another solution using similar (or sometimes the same) techniques.&lt;/p&gt;
&lt;h2&gt;Distributed Transactions and Consensus&lt;/h2&gt;
&lt;p&gt;Until now, we learned about transactions, replication, system models, linearizability, and total order broadcast. These were useful to know before tackling the consensus problem, which seems simple on the surface but more complicated when diving deep. Consensus is important in especially a few cases, such as leader election and atomic commit. If there is no consensus in the leader election (meaning, two leaders accept writes in a single-leader configured system), the data becomes inconsistent.&lt;/p&gt;
&lt;h3&gt;Atomic Commit and Two-Phase Commit (2PC)&lt;/h3&gt;
&lt;p&gt;Two-phase commit (2PC) separates from single-node transactions by providing atomicity by implementing two phases: prepare and commit. A transaction manager (or coordinator) manages this process to ensure all nodes are either committed or aborted. The 2PC process starts with all nodes reading or writing data as normal. When nodes are ready to commit, the coordinator sends a &quot;prepare&quot; message and asks nodes if they can commit. If all nodes answer &quot;yes,&quot; then the coordinator sends another message (the second phase) and tells them to commit. If any node says &quot;No&quot; to the prepare request, the coordinator aborts the process and sends an abort message to all nodes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How does the system work in detail?&lt;/strong&gt;
After reads and writes (like in a single-node transaction), the coordinator asks if all nodes can commit. When a participant says &quot;Yes,&quot; it has to wait. The node waives all abort rights by saying, &quot;Yes.&quot; This is a critical point of no return. Until the node receives the commit message, it has to wait in an uncertain or in doubt state. Once all nodes say yes, the coordinator decides to commit/abort by appending a log message to the transaction log on disk. Right after the log is on disk, it sends a commit/abort message to all nodes. If the commit/abort message fails, the coordinator must retry it forever. If a participant fails at any time, it will commit when it recovers. That log on disk is another critical decision point; there is no turning back. So, in reality, 2PC is actually an atomic transaction &lt;em&gt;in the coordinator&lt;/em&gt;.
&lt;strong&gt;What happens if the coordinator fails?&lt;/strong&gt;
If the coordinator fails before sending the &quot;prepare&quot; message, all nodes can safely abort the transaction. But once the participants receive the &quot;prepare&quot; message and vote &quot;yes,&quot; they cannot abort unilaterally until they hear back from the coordinator. If the coordinator fails at this point, the participants have to wait for the coordinator to recover. This is why the coordinator must write the decision to its transaction log before sending a commit/abort message. Once the coordinator recovers, it checks its transaction log. If there are any transac­tions without commit messages, it aborts all.&lt;/p&gt;
&lt;h3&gt;Distributed Transactions In Practice&lt;/h3&gt;
&lt;p&gt;Distributed transactions have a mixed reputation due to their impact on performance and causing operational problems. Much of the performance problems come from disk syncing that&apos;s required for crash recovery and extra network round trips. On the other hand, they provide safety features that are hard to reach otherwise. Although performance is usually what we optimize for, we still have things to learn from distributed transactions.&lt;/p&gt;
&lt;p&gt;There are two types of distributed transactions.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Database-internal&lt;/li&gt;
&lt;li&gt;Heterogeneous.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In database-internal distributed transactions, databases implement accor­ding to their needs and use protocols as they wish. Distributed tran­sactions are used for data replication and partitioning, and databases use the same software or protocol across the whole database. Database-internal transactions work well as they don&apos;t need to be compatible with other systems. We face most challenges in heterogeneous distributed transactions.&lt;/p&gt;
&lt;p&gt;In heterogeneous distributed transactions, systems use different soft­ware and, sometimes, systems are also not databases, such as message brokers. Here, distributed transactions must ensure commits are atomic within this variety.&lt;/p&gt;
&lt;p&gt;The most important piece in heterogeneous distributed transactions is atomicity. Let&apos;s say we have a message broker that sends a message to a service. The message can only be acknowledged if and only if the database transaction, which is processing the message, was successfully committed. The system must ensure these two operations (acknowledgment and database write) are successful by using atomic commit. If any of them fails, the transaction is aborted, and the message broker can send the message again. If there is no atomic commit, every retry can cause side effects. For example, if we&apos;re using an email delivery service, every retry can send an additional email. Distributed transactions ensure the side effects of a message happen if and only if both operations (ack and database write) are successful.&lt;/p&gt;
&lt;h4&gt;XA Transactions&lt;/h4&gt;
&lt;p&gt;X/Open XA (eXtended Architecture) is not a protocol but simply a C API for interfacing with a transaction coordinator. Participants of a distributed transaction offer XA API.&lt;/p&gt;
&lt;p&gt;The application that needs distributed transactions uses an XA transaction coordinator living in the same process or machine as the application. The coordinator can ask participants to prepare and commit/abort via a client library or network driver that the participants implement for XA with its XA API.&lt;/p&gt;
&lt;p&gt;The major problem is if the coordinator dies (e.g., the process is killed or the machine crashed), all the participants will be stuck in a locked state waiting for the coordinator. When the coordinator recovers, it can read the logs for transaction decisions. The database holds locks at the whole row that the transaction will write, preventing dirty writes (we talked about it in read-committed). Also, if a transaction includes reading and we want serializable isolation, then the database will hold locks for read transactions as well, practically blocking all other transactions that want to access that data. These locks will stay until the coordinator recovers or is manually resolved by an admin.&lt;/p&gt;
&lt;p&gt;When the coordinator fails and its recovery logs are corrupted or lost for any reason, the admin must look at all the partici­pants and check if anyone committed the transaction. Then the admin must decide and apply the decision to all participants. Many XA implementations have an escape hatch called heuristic decisions: a unilateral decision by the participant of a transaction to decide on commit or abort. As the participant decides, the heuristic decision breaks atomicity. Thus, these cases are intended for catastrophic situations only.&lt;/p&gt;
&lt;h4&gt;Limitations of distributed transactions&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;If the coordinator is not replicated but runs on a single machine, it becomes a point of failure.&lt;/li&gt;
&lt;li&gt;Many server-side apps are stateless these days and save their states in a database. However, when the coordinator is part of the server, the server becomes stateful as it should keep coordinator logs on the state and should recover from failures by using these logs.&lt;/li&gt;
&lt;li&gt;XA cannot detect deadlocks across systems and is incompatible with Serializable Snapshot Isolation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Fault-Tolerant Consensus&lt;/h3&gt;
&lt;p&gt;Consensus means getting several nodes to agree on something. Formally, one or more nodes may propose values, and the consensus algorithm decides on one of the proposed values. Any consensus algorithm must satisfy the following properties:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Uniform agreement:&lt;/strong&gt; No two nodes decide differently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrity:&lt;/strong&gt; No node decides twice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validity:&lt;/strong&gt; If a node decides value v, then v was proposed by some node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Termination:&lt;/strong&gt; Every node that does not crash eventually decides on some value.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first two values are the basics of consensus; everyone decides on the same value, and you cannot change your mind later. Integrity property rules out trivial cases, such as an algorithm cannot decide on a value not proposed by a node. The last property, termination, is there to formalize fault-tole­rance. Also, it prevents having dictatorial setups where only one node decides on everything. The termination property ensures that if any node fails (and assumes that it won&apos;t come back online), the system can continue making decisions. (that&apos;s also why 2PC is not a consensus algorithm; it requires every node to be online, including the coordinator. If the coordinator fails, the system comes to a halt.) Of course, there is a limit to failures. Any consensus algorithm requires at least the majority of nodes to be functioning (have a quorum). However, most consensus algorithms ensure that the first three properties are always met, even if most nodes are crashed. This way, the system may not process requests, but it cannot corrupt the consensus system by making invalid decisions.&lt;/p&gt;
&lt;p&gt;The most known fault-tolerant consensus algorithms actually don&apos;t make decisions on a single value in each round, but they agree on a sequence of values, which makes them total order broadcast, as we learned earlier in the chapter.&lt;/p&gt;
&lt;p&gt;Total order broadcast requires messages to be delivered to all nodes exactly once, in the same order. This strategy is equal to several rounds of consensus. All nodes decide to deliver the same messages in the same order (agreement). Messages are not duplicated (integrity). Messages are not corrupted or created out of thin air (validity). Messages are not lost (termination).&lt;/p&gt;
&lt;h4&gt;Epoch numbering and consensus&lt;/h4&gt;
&lt;p&gt;The consensus algorithms we talked about above don&apos;t guarantee that there will &lt;strong&gt;always&lt;/strong&gt; be a single leader. However, they guarantee a single leader for each epoch (a round), a number defined by a protocol, and it&apos;s monotonic and ever-increasing.&lt;/p&gt;
&lt;p&gt;Each time a leader is dead, a new selection starts. This election is given an epoch number, and there can be only one leader with this epoch number. If there is another leader (maybe a node remained from the last round but was thought dead), a higher epoch number wins.&lt;/p&gt;
&lt;p&gt;Before doing anything, the leader checks if there is another leader with a higher epoch number. However, it cannot decide on that itself. Thus, it requires a quorum of nodes&apos; votes. For every value leader proposes, the leader sends the value to a quorum of nodes. A node accepts the proposed value only if it knows no other nodes with higher epoch numbers exist.&lt;/p&gt;
&lt;p&gt;We have two rounds of voting: one round for selecting the leader and another for voting on the leader&apos;s proposal. The key is the attending nodes on two rounds must overlap: there has to be at least one node that is present in both rounds, even though quorums can consist of different nodes. This rule ensures that there is no other leader in the process.&lt;/p&gt;
&lt;p&gt;The algorithms we discussed look similar to Two-Phase Commit (2PC) but are different. 2PC requires all nodes to vote &quot;yes&apos;&apos; while consensus demands a &lt;em&gt;quorum&lt;/em&gt;. Also, 2PC is not fault-tolerant like consensus algorithms, and the 2PC coordinator is not elected.&lt;/p&gt;
&lt;h4&gt;Limitations of consensus&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Voting on a proposal process is very similar to synchronous replication. The committed data can be lost, as we saw earlier chapter.&lt;/li&gt;
&lt;li&gt;The consensus requires a strict majority of nodes to operate (as we learned quorums in &lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;the data replication chapter&lt;/a&gt; before). If we have three nodes, we can tolerate one node&apos;s failure; in five nodes, two failures. If any network failure happens, the non-majority can be blocked.&lt;/li&gt;
&lt;li&gt;Adding and removing nodes to the system is difficult. Consensus requires a fixed set of nodes (There is dynamic membership, but it&apos;s not well understood in the industry.).&lt;/li&gt;
&lt;li&gt;The consensus relies on timeouts to detect failed nodes. &lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;Unbounded delays&lt;/a&gt; can cost performance due to frequent leader elections.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Membership and Coordination Services&lt;/h3&gt;
&lt;p&gt;Zookeeper and etcd are eventually key-value stores, databases that fit into memory (but still write to disk for durability). However, they implement consensus algorithms. What makes them useful is the features they provide, even though application developers rarely interact with them directly (they are used indirectly; e.g., Kafka and HBase use Zookeeper). They provide an interesting set of features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linearizable atomic operations:&lt;/strong&gt; Atomic compare-and-set operations allow implementing a lock: if several nodes try to write, only one will succeed. The consensus comes into play and guarantees that the ope­ration is atomic and linearizable even in node failures (leases are used in locks).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total ordering of operations:&lt;/strong&gt; With &lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;fencing tokens&lt;/a&gt;, Zookeeper prevents clients from conflicting with each other. Zookeeper uses total ordering and assigns each operation a monotonically increasing transaction ID and version number.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failure detection:&lt;/strong&gt; There are periodic heartbeat checks between Zookeeper and the client. If heartbeats fail above timeout time, the client is considered dead (it&apos;s called an ephemeral node in Zookeeper).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Change notifications:&lt;/strong&gt; Clients can subscribe to changes in Zookeeper instead of requesting information regularly, so they can be notified when a new client joins the cluster.
Even though only linearizable atomic operations require a consensus algorithm, combining these features makes Zookeeper worthwhile.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, Zookeeper can be used to allocate work to nodes. While partitions can join and leave the cluster, they can register or be declared dead on Zookeeper. Using the combination of features listed above, we can automatically implement mechanisms to recover from failures without human intervention. However, this implementation is complex and difficult. That&apos;s why Zookeeper and etcd are often used for service discovery. This service discovery doesn&apos;t require consen­sus. However, leader election requires consensus, and knowing the leader (discovering) becomes important, and other services can discover the leader via Zookeeper. Hence, some consensus systems support read-only caching replicas. They do not participate in voting and asynchronously receive the all decision log of the consensus algorithm and serve read requests that are not needed to be linearizable.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/consistency-and-consensus-in-distributed-systems/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Resilience comes from recovery</title><link>https://candost.blog/notes/62a/</link><guid isPermaLink="true">https://candost.blog/notes/62a/</guid><description>Understanding how we can increase our resiliency</description><pubDate>Sun, 21 May 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Resilience comes with recovery, not endurance. You won&apos;t build resilience when you push for one more time if you&apos;re already exhausted. Your productivity will be depleted. Resilience comes from recharge and recovery. Professional athletes (like LeBron James) spend extra time on recovery, and the best ones consider it part of their training. Recharge doesn&apos;t mean resting. If you dive into politics on your phone while lying down on your bed, you&apos;re not recovering. You need to spend time with friends (not talking about work), meditate, watch a movie, or do other activities you enjoy in your life. That&apos;s how you build resilience, by keeping your energy level in control so you can push more exactly when needed. Otherwise, you burn out.&lt;/p&gt;
&lt;p&gt;We can see the same in weightlifting. If you need to do three sets of ten repetitions, you must choose a weight that you can lift thirty times with a break in between. You can&apos;t lift it without a break. Also, choosing a weight is important too. If you add heavier weight, you probably can only lift it ten to fifteen times, not thirty. You need to build the muscles in time to increase your weight.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/11/&quot;&gt;11: How to move to the next level&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/28/&quot;&gt;28: Mental Health for Professionals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/65/&quot;&gt;65: Learning and Understanding&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://hbr.org/2016/06/resilience-is-about-how-you-recharge-not-how-you-endure&quot;&gt;Resilience is about how you recharge, not how you endure&lt;/a&gt; &amp;amp; Calm App&apos;s Lessons: Train Your Mind - Vol. II with LeBron James&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/62a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/62a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Bet on things that won&apos;t change</title><link>https://candost.blog/notes/29a/</link><guid isPermaLink="true">https://candost.blog/notes/29a/</guid><description>&apos;Bet on things that won&apos;t change rather than predicting how things will change.&apos; — Jason Cohen</description><pubDate>Sat, 20 May 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&quot;Bet on things that won&apos;t change rather than predicting how things will change.&quot; — Jason Cohen&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Many experts fail to predict the future because many things change constantly. However, there are a few things that never change, and we know that they will always be there. For example, customers will always want low prices and high-quality customer service (that&apos;s what Amazon bets on). Find what doesn&apos;t change on your product, domain, or even life, and bet on them. Be strong on that front and follow what life brings you, and adapt to changes.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/9c/&quot;&gt;9c: Simple Ideas Prevent Complicated Problems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/11/&quot;&gt;11: How to move to the next level&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/14/&quot;&gt;14: Experiences are like compound interest on money&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/28/&quot;&gt;28: Mental Health for Professionals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/65/&quot;&gt;65: Learning and Understanding&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Understanding what changes and what doesn’t requires &lt;a href=&quot;/notes/9c1/&quot;&gt;thinking about the whole picture correctly and adjusting the thinking model more accurately&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://longform.asmartbear.com/predict-the-future/&quot;&gt;Navigating the unpredictability of everything&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/29a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/29a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Love the Constraints</title><link>https://candost.blog/love-the-constraints/</link><guid isPermaLink="true">https://candost.blog/love-the-constraints/</guid><description>Constraints are everywhere. We live and work with them. There is no other way than to love them. Otherwise, they will chase us and pull us down.</description><pubDate>Tue, 16 May 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I look back at the topics I covered in &lt;a href=&quot;/mektup/&quot;&gt;Mektup&lt;/a&gt;, I wrote about energy and time management, habits, multitasking, mentoring, remote work, process thinking, and many more. If I take one step back, a challenge becomes visible: I&apos;m in the middle of all, trying to navigate, mediate and negotiate within some constraints to find my way. That&apos;s why I renamed my newsletter to &lt;a href=&quot;/newsletter/&quot;&gt;&lt;em&gt;Mediations&lt;/em&gt;&lt;/a&gt; (not &lt;em&gt;Medi&lt;strong&gt;t&lt;/strong&gt;ations&lt;/em&gt;), and on this post, I want to talk about how to understand and work with constraints in our work life.&lt;/p&gt;
&lt;p&gt;If we look at constraints from a higher perspective, time, people, and money are the biggest ones. Whatever we want to do, we are dependent on time and other people. We all have working hours (constrained by how much money we earn, less money = less time) to achieve a goal. How much a team achieves in these hours decides the team&apos;s success. Moreover, anyone in the team is also constrained by others to deliver their work in collaboration. Thus, we must find ways to understand these constraints and find an optimal solution, just like we do in software engineering.&lt;/p&gt;
&lt;p&gt;While building any software, we have limitations, such as memory, CPU power, the maximum number of parallel processes, accumulated tech debt, network latency, programming language limitations, and many more. If we make a pass at building anything, we must consider all of these constraints. For a mobile application, battery consumption is a concept we must consider and plan not to consume too much. For a backend application, we must decide the size of the database and not waste money by buying the biggest machine (and sometimes, they are also not enough). If the aim is to serve a million requests in a second, we have to find ways to eliminate failures and increase the resiliency of the system. It doesn&apos;t stop there. The same applies to organizational design.&lt;/p&gt;
&lt;p&gt;Deciding how many engineers are needed for a project is one of the most fundamental challenges. Amazon uses the &lt;a href=&quot;https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/two-pizza-teams.html&quot;&gt;two-pizza team analogy&lt;/a&gt; (two pizzas should be enough to feed the team), while startups don&apos;t have this chance to hire that many people. The companies in between two scales (startups &amp;lt;-&amp;gt; &lt;a href=&quot;https://scripbox.com/pf/maang-companies/&quot;&gt;MAANG&lt;/a&gt;) struggle with finding the right balance. I&apos;ve worked in teams with sizes ranging from two to ten. In almost all teams, hiring is a big topic because there are always more things to do than we can handle with the existing team size. We never have enough engineers on the team (even with ten people), and projects are always late or delivered on time with accumulated tech debt.&lt;/p&gt;
&lt;p&gt;Organizations still add more engineers to already-full teams by thinking that the delayed project will go faster, the accumulated &lt;a href=&quot;https://en.wikipedia.org/wiki/No_Silver_Bullet&quot;&gt;accidental complexity&lt;/a&gt; will be resolved, and everything will be alright. And this mindset always proves wrong and often makes things even worse.&lt;/p&gt;
&lt;p&gt;The team culture and health of its members will face troubles when there are more than ten engineers on the team. It&apos;s challenging to agree on anything with ten people; any small change in working agreements needs to be followed up with everyone, the number of meetings increases (while productive meetings decrease), unhealthy conflicts emerge, and solving them becomes much more difficult. Eventually, leading the team to a halt instead of speeding up the delivery. There is one (but not the only one) reason behind adding one more engineer to the team.&lt;/p&gt;
&lt;p&gt;We were taught the economy of scale: the more, the merrier. Especially industry evolving from manufacturing taught us the bigger the capacity, the less cost of producing an item. However, in software engineering, it&apos;s the contrary; we have a &lt;a href=&quot;https://en.wikipedia.org/wiki/Diseconomies_of_scale&quot;&gt;diseconomy of scale&lt;/a&gt;. The bigger the organization, the bigger the cost of delivering anything. Startups can deliver products and features with light speed, while MAANG takes years to produce anything. The bigger the team, the quicker the software complexity increases. Once the software is big, it takes more time to add new features due to its complexity. Thus, reduces the delivery speed. There is one way to calm our minds in this complicated world and put all constraints into a picture.&lt;/p&gt;
&lt;p&gt;We can think about everything we do as a system that operates independently. The global economy is a system in the same way a country&apos;s economy or a company is a system. Each system is part of a bigger system, has its subsystems, and, at the same time, works semi-independently of other systems.&lt;/p&gt;
&lt;p&gt;A software engineering team is also a system. It has its own processes, projects, working style, resources, &lt;a href=&quot;/newsletter/mektup-35/&quot;&gt;people&lt;/a&gt;, rhythm, and limitations. The output of this system is what the team delivers. Adding one more engineer to an already-full team will increase only one parameter—the number of engineers. However, it &lt;em&gt;may&lt;/em&gt; or &lt;em&gt;may not&lt;/em&gt; increase delivery capacity due to increased complexity in processes, communication, and team rituals.&lt;/p&gt;
&lt;p&gt;Many organizations assume they will operate well if they hire more people. I believe this thinking is flawed. If a team has enough engineers, the constraints are somewhere else. If the team is staffed, they will still have many other challenges in delivery.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Having “enough” engineers for a project is usually a terrible idea; you want to be constrained, you want to have to make hard decisions about where to spend your time and where to invest development cycles.&quot; — &lt;a href=&quot;https://charity.wtf/2022/10/03/every-achievement-has-a-denominator/&quot;&gt;Charity Majors&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The increasing communication overhead will balance the system and prevent growth in delivery. Understanding the system, its inputs, outputs, and parameters impacting these inputs and outputs helps us understand our constraints. Yet there is one more caveat: the constraints change all the time.&lt;/p&gt;
&lt;p&gt;Changes in the economy after the pandemic altered &lt;a href=&quot;https://newsletter.pragmaticengineer.com/p/wartime-vs-peacetime&quot;&gt;companies&apos; strategies (link paywalled)&lt;/a&gt;. The desired growth mindset left its place for financial stability and profitability, leaving teams working with a different set of constraints. There is no more adding another engineer to the team, growing teams, and splitting them into multiple. Instead, there are new strategies (but not so new; the world economy always had ups and downs) to increase delivery with fewer people. Adaption to new constraints is now mandatory.&lt;/p&gt;
&lt;p&gt;In the post&apos;s title, I said, &quot;Love the constraints&quot; because these constraints drive creativity. Adapting to a different economy and life demands dealing with various challenges. As these challenges are evolving, we have to find other ways. Finding new paths is a creative process. &quot;Best&quot; practices to increase delivery with limited staff and resources have been there for decades (The Goal by Eliyahu Goldrat is a great book to read for understanding bottlenecks and throughput relationships). We only need to find which practices fit our situation, the people on the team, and the company culture and strategy.&lt;/p&gt;
&lt;p&gt;There is no other way than to love all these changing constraints if we want to lead people to success in turbulent times. Any leader (or aspiring leader) must spend time finding out the constraints (albeit they won&apos;t find all, some black boxes need to stay as black boxes). Once the constraints are visible, creating a strategy and driving the team to success is much easier. Knowing them is like seeing the path and obstacles clearly in a hurdle. We might not become the winner and get a gold medal in every race, but we can definitely complete the race without falling.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; I recommend reading Thinking in Systems by Donella Meadows to learn more about how systems work and how to understand them and not be victims.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.P.S.&lt;/strong&gt; After two and a half years and 53 issues, &lt;a href=&quot;/newsletter/&quot;&gt;Mektup&lt;/a&gt; says goodbye to its readers. Mediations will be the only newsletter from now on (including occasional book notes). The archive of Mektup is always available.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;There&lt;/em&gt; are &lt;em&gt;no separate systems&lt;/em&gt;. The &lt;em&gt;world&lt;/em&gt; is a &lt;em&gt;continuum&lt;/em&gt;. Where to &lt;em&gt;draw&lt;/em&gt; a &lt;em&gt;boundary around&lt;/em&gt; a &lt;em&gt;system depends&lt;/em&gt; on the &lt;em&gt;purpose&lt;/em&gt; of the &lt;em&gt;discussion&lt;/em&gt;.
— Donella Meadows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/love-the-constraints/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/love-the-constraints/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why Inspectional Reading?</title><link>https://candost.blog/notes/64/</link><guid isPermaLink="true">https://candost.blog/notes/64/</guid><description>Inspectional reading helps us to learn more about the book before we spend hours on it.</description><pubDate>Thu, 27 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The questions that we need to answer after inspectional reading shows how much we need to get to know or understand the book. I say get to know because some books cannot be understood in the first reading and demand analytical reading. However, the majority of the books require only part of the inspectional reading—systematic skimming. Looking at the title, subtitle, preface, table of contents, index, publisher&apos;s blurb, and reading a few pages here and there (the chapters pivotal to arguments) can already help us understand what kind of book it is, what the book as a whole about and what&apos;s the structural order of author&apos;s ideas and how they are presented. When this is not enough, we need to read the book quickly from cover to cover. There are also not so many books that require reading even once. When we read, we shouldn&apos;t stop and ponder on arguments; just continue and finish to get to know the book as a whole.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/65/&quot;&gt;65: Learning and Understanding&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; How to Read A Book Book&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/64/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/64/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Sometimes Saying Nothing Tells Everything</title><link>https://candost.blog/sometimes-saying-nothing-tells-everything/</link><guid isPermaLink="true">https://candost.blog/sometimes-saying-nothing-tells-everything/</guid><description>We need to know when to shut up and learn when to talk with a few words that we plant like seeds (not too close to each other, but not too far).</description><pubDate>Tue, 25 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We were having dinner with a friend, and in the middle of it, he said, “Candost, why are you so silent?” I was confused because we were in the middle of a conversation, and I was actively participating. When he clarified that he meant silent in life in general, I was yet surprised again. Because I always considered myself someone who talks too much.&lt;/p&gt;
&lt;p&gt;Then I remembered &lt;a href=&quot;https://www.youtube.com/watch?v=Gh9Vo-skVCI&amp;amp;t=10s&quot;&gt;one scene from a Turkish movie&lt;/a&gt; where this exact question is asked. And I gave the exact same answer to dismiss the question. I said, “I talked too much. I didn’t see any benefit. So, I stopped.” I wasn’t ready to go into a deep conversation, and I needed to observe myself and reflect. Even though my friend was clearly unsatisfied with my answer, he let it go. But, in my mind, I couldn’t. And this was around four years ago.&lt;/p&gt;
&lt;p&gt;Over the years, I wondered why my friend and I saw my behavior differently. Why do I consider myself talking too much, meanwhile others perceive me as silent? And how it reflects in my professional life as a leader?&lt;/p&gt;
&lt;p&gt;I thought about the early years of my career. I remember talking too much with my limited knowledge. I assumed I knew things. The more I learned, the more I realized how much I didn’t know, and I started to listen and only talk when needed. Isn’t it the same in life? The children talk too much, but the adults listen. As we grow, we get more silent. It’s fascinating to see the same trend in professional life.&lt;/p&gt;
&lt;p&gt;Reducing my over-talkativeness tremendously helped me learn more because others had space to share their thoughts and experiences. When I &lt;a href=&quot;/the-must-have-skill-for-every-leader-listening-with-empathy/&quot;&gt;started listening&lt;/a&gt;, I also realized many smart people are often invisible because of the loud voices (in my early career, that was me) getting the most attention.&lt;/p&gt;
&lt;p&gt;When I became a manager, I had to learn how to stay silent to make invisible people visible, hear all voices, and create space for discussion without actively participating in it. People expected me to create that space &lt;em&gt;for them&lt;/em&gt; to talk, not for me. However, this expectation was unintuitive for me. All my professional life as an engineer, people expected me to talk and give input, but now they want me to shut up—quite literally. I had to let go of all my instincts, urges, and learned behavior.&lt;/p&gt;
&lt;p&gt;It was not easy. However, once I did, the world became more peaceful, and I finally felt that I was helping people. It was so controversial; how could I help people while saying almost nothing?&lt;/p&gt;
&lt;p&gt;I brought this question to my manager back then and asked how I could balance staying silent and giving the right direction or coaching to people. That’s when he said, “Sometimes, saying nothing tells everything.”&lt;/p&gt;
&lt;p&gt;My mind quickly responded with, “What bullshit.”&lt;/p&gt;
&lt;p&gt;But I reminded myself that I needed to listen. And I actually wanted to learn. What could I lose if I tried?&lt;/p&gt;
&lt;p&gt;Oh boy, I was wrong.&lt;/p&gt;
&lt;p&gt;It took me a while to figure out how, but once I did, it was magical. People solved their problems when we were talking, and the only thing I did was say less than ten words and mostly ask a question within these ten words.&lt;/p&gt;
&lt;p&gt;There were awkward silences, for sure. In any of these moments, I counted up to ten (or, rarely, up to twenty) within me. Silently. People usually started talking when I was around five or six. They either brought up an extremely valuable insight that I was missing, revealed what they honestly thought about a situation, or just thought out loud and solved their problems without me saying a word.&lt;/p&gt;
&lt;p&gt;That first four seconds gave people time to digest what we were talking about and light up new thoughts in their minds. While I was keeping my mind busy by counting up to ten, people usually &lt;a href=&quot;https://www.inc.com/james-sudakow/the-science-behind-why-awkward-silence-works.html&quot;&gt;couldn’t resist the awkward silence&lt;/a&gt; after that four seconds.&lt;/p&gt;
&lt;p&gt;I had to bite my tongue and not fill that silence even though how much difficult it was. That silence was an investment in people’s growth (as I learned from the book &lt;a href=&quot;https://boxofcrayons.com/the-coaching-habit-book/&quot;&gt;The Coaching Habit&lt;/a&gt;), and I had to make that investment. When I did, I finally understood what my manager meant.&lt;/p&gt;
&lt;p&gt;There is a big word at the beginning of the title that I haven’t talked about yet. And that is: “Sometimes.”&lt;/p&gt;
&lt;p&gt;While staying silent is unintuitive and challenging, learning when to shut up is even tougher. You can’t just stay silent when you are expected to give input, and you definitely shouldn’t talk at every chance you find.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Oysters open completely when the moon is full; and when the crab sees one it throws a piece of stone or twig into it and the oyster cannot close again so that it serves the crab for meat. Such is the fate of him who opens his mouth too much and thereby puts himself at the mercy of the listener.
—Leonardo da Vinci, 1452–1519&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Learning when to talk is a long experiment, and I’m still progressing because it also changes from situation to situation and person to person. Especially in our one-on-ones with people who report to me, I feel more comfortable with awkward silences because &lt;a href=&quot;/effective-1-on-1-meetings-own-your-one-on-one-meeting/&quot;&gt;I’m not facilitating the one-one-one meetings; the ownership is on the other side&lt;/a&gt;. So, if there is an awkward silence, they usually bring up the next topic, and I often talk last.&lt;/p&gt;
&lt;p&gt;In group meetings that I’m facilitating, it’s also not really challenging because I’m in that &lt;a href=&quot;/newsletter/mektup-24/&quot;&gt;facilitator’s seat&lt;/a&gt;, and the responsibility of the moderator is moderating the meeting. The biggest challenge is when we discuss a problem or brainstorm solutions with a group.&lt;/p&gt;
&lt;p&gt;That’s where my software engineer brain plays its tricks. &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;The years of education and cemented behaviors of I-share-my-knowledge-and-contribute-to-the-discussion-and-work-hands-on kick in and push me to talk more.&lt;/a&gt; Whenever I feel this compulsive need to take action, I try remembering how my previous leaders &lt;a href=&quot;https://candost.substack.com/p/sw-21-intent-based-leadership-with-david-marquet&quot;&gt;didn’t jump in and gave me space&lt;/a&gt; to share my perspective when I was an engineer (lucky me). However, it’s challenging as a leader because I see two things as my job: doing (&lt;a href=&quot;/bias-towards-action/&quot;&gt;making things happen&lt;/a&gt;) and being (observing and reflecting)—as Michael Watkins put it right in the book The First 90 Days.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Effective leaders strike the right balance between doing (making things happen) and being (observing and reflecting). But it is challenging...to let yourself &quot;be&quot;...and the pressure to &quot;do&quot; almost always comes from inside the leaders than from outside forces; it reflects a lack of confidence and a consequent need to prove yourself.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have that lack of confidence in me (hello, &lt;a href=&quot;https://candost.substack.com/p/17-banish-your-inner-critic-with-638&quot;&gt;my inner critic&lt;/a&gt;). That insecurity is my main urge. When I recognize this urge, I try to remember Watkins’s recommendation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Remember: simply displaying a genuine desire to learn and understand translates into increased credibility and influence.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In general, I have a huge desire to learn and understand. That’s where I leverage it: I wait to hear all opinions first and then, only then, try a few things.&lt;/p&gt;
&lt;p&gt;I play devil’s advocate. It’s one of the most useful things I learned while reading &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;The Culture Map&lt;/a&gt; by Erin Meyer. If you have a controversial idea or want to challenge people, just tell them, “Let me play the devil’s advocate here,” and continue, “So we discover other options. How about we do X? What would be the consequences?” Once people hear that I’m &lt;a href=&quot;https://candost.substack.com/p/sw-21-intent-based-leadership-with-david-marquet&quot;&gt;not approaching with authority&lt;/a&gt; but a discovery mindset, they often show a healthy debate attitude and can clearly tell me why my idea sucks. Playing the devil’s advocate helps to reach a better result.&lt;/p&gt;
&lt;p&gt;Another thing I learned from &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt; was telling people, “I’m thinking out loud; here is where we need to be and why,” and I encourage them to think out loud with worries, concerns, and thoughts. This approach not only creates a debate environment but also &lt;a href=&quot;/speaking-writing-and-high-quality-ideas/&quot;&gt;helps me learn what I actually think&lt;/a&gt;. When I think one solution is better than the other and I want to bring it up, I use this approach and end the sentence with a question to others (e.g., “What is missing or what you see wrong?”), so they can also correct &lt;em&gt;me&lt;/em&gt; on the way if I misunderstand something.&lt;/p&gt;
&lt;p&gt;Meanwhile, there are a few necessities for any kind of silence to work. It won’t help you if &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;the trust is not built in&lt;/a&gt; or nobody knows you yet. So, you shouldn’t be a mysterious person, and people shouldn’t be hesitant to talk to you because they have no idea what you think. This staying silent only works after people get to know you and trust you.&lt;/p&gt;
&lt;p&gt;As we don’t—and shouldn’t—have the authority of the French King Louis XIV, we have to learn the balance.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ministers and nobles would spend days debating on the state’s issues and finally arrive at a moment to present two different sides to Louis XIV. They were also spending a lot of time on how to best present, wordsmithing every sentence and deciding on what time of the day to approach Louis. Once they present, Louis would only say, “I shall see,” and walk away. Nobody would hear anything about the issue from him for days, sometimes weeks, and they would only see the results when he came to a decision to act.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Acting like Louis is not an option for me and, I strongly believe, for other leaders in software companies. Silence is a balance to find, and it’s challenging. However, after you have the relationship built in and &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;have trust&lt;/a&gt;, leveraging the silence and creating room for others both in team meetings and in one-on-ones get easier.&lt;/p&gt;
&lt;p&gt;Lastly, whenever you talk, choose your words wisely. Because their impact is almost always invisible to you.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Words should be scattered like seed; no matter how small the seed may be, if it has once found favourable ground, it unfolds its strength and from an insignificant thing spreads to its greatest growth. Reason grows in the same way; it is not large to the outward view, but increases as it does its work. Few words are spoken, but if the mind has truly caught them, they come into their strength and spring up. Yes, precepts and seeds have the same quality; they produce much, and yet they are slight things. Only, as I said, let a favourable mind receive and assimilate them. Then of itself the mind also will produce bounteously in its turn, giving back more than it has received.&quot; — Seneca, Letters from A Stoic, p. 218&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Remember, “Sometimes, saying nothing tells everything.”&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. I heard the French king’s story from the book &lt;a href=&quot;https://en.wikipedia.org/wiki/The_48_Laws_of_Power&quot;&gt;The 48 Laws of Power&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/sometimes-saying-nothing-tells-everything/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/sometimes-saying-nothing-tells-everything/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Learning and Understanding</title><link>https://candost.blog/notes/65/</link><guid isPermaLink="true">https://candost.blog/notes/65/</guid><description>When we learn something, does it mean we understand it? How can we say we understand?</description><pubDate>Sun, 23 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we come across information, we mistakenly think we have learned something new. However, we just learned that that specific piece of information exists. We didn&apos;t learn what that information tells us. To understand the information, &lt;a href=&quot;/notes/68a/&quot;&gt;we have to actively think about it&lt;/a&gt; and apply it if it&apos;s applicable. When we read a newspaper, it increases our information level but rarely changes our understanding of anything. Reading for understanding requires being ignorant or having a little bit of information about a topic. It demands active engagement with the topic. It&apos;s where most people stop. Once they receive information, &lt;a href=&quot;/notes/7c/&quot;&gt;they consider that they have learned something new&lt;/a&gt;. Actively engaging with the topic requires us to ask questions and try to answer them with the information we receive. Once we&apos;re informed (read/watched/listened to a piece of information), we need to take these extra steps to understand it. Once we do, we become enlightened. To differentiate between an informed and enlightened state, consider yourself in a classroom where a teacher is explaining one topic. When learning by instruction (that&apos;s what the teacher does), we&apos;re only informed. We need to take the next step and learn by discovery: that&apos;s when we try answering questions that come after instructions and solving problems that the teacher has asked.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;1: Why do we bother to write?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40/&quot;&gt;40: Understanding the Feedback You Receive&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30/&quot;&gt;30: Scientific Thinking and Fact-Checking for A Better Life&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; How to Read A Book Book&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/moving-to-substack/&quot;&gt;Moving to Substack&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/how-to-get-to-the-end-of-a-pile-of-unread-books/&quot;&gt;How to Get to The End of a Pile of Unread Books&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/65/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/65/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>My Experience Living Without Social Media</title><link>https://candost.blog/my-experience-living-without-social-media/</link><guid isPermaLink="true">https://candost.blog/my-experience-living-without-social-media/</guid><description>How I stopped using Twitter, LinkedIn, Mastodon for 2+ months.</description><pubDate>Thu, 13 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;On January 23rd, 2023, I started an experiment and stopped all my social media usage. I didn’t read anything on Twitter, Mastodon, and LinkedIn. I occasionally checked my automated article sharing to see if they had been posted correctly, and during that checks, I read LinkedIn and Twitter messages from people I knew in real life.&lt;/p&gt;
&lt;p&gt;The experiment lasted until April 1st, but I’m happy to say that I don’t think I will use any social media as I was using before. And I am quitting any consumption on Twitter.&lt;/p&gt;
&lt;p&gt;Before I get to the results and the decisions that will somehow affect my life, I want to explain why I tried this experiment and how I approached it.&lt;/p&gt;
&lt;h2&gt;Why?&lt;/h2&gt;
&lt;p&gt;For a while, I’ve been trying to reduce distractions such as emails, SMS, and notifications. They occupy many moments in my life, interrupting my real-life conversations and resulting in moving my focus to my phone in the middle of a chat in a café. As I get irritated when people look into their phones while we talk, I also want to stop doing the same myself—&lt;a href=&quot;https://www.oxfordreference.com/view/10.1093/oi/authority.20110803120656806#:~:text=It%20means%20putting%20your%20words,Social%20sciences%20%E2%80%94%20Business%20and%20Management&quot;&gt;walk the talk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Besides, I was spending hours on social media without realizing it at all. I was not under control. In a blink of an eye, I easily spent one hour scrolling through my feeds endlessly. This behavior cost me a lot, and I started sacrificing important things such as family time, reading, writing, and music. However, there is a much bigger reason for me to reconsider social media.&lt;/p&gt;
&lt;p&gt;As social media gave voice to everyone (including me), it became overwhelming. We never had this in our lives for thousands of years; we lived in much, much smaller circles. We valued our community’s opinion within that circle and wanted to belong. When social media entered our lives, we also applied the same behavior there. Now, we value the opinions of people we don’t know and follow. Whenever a jerk makes us feel bad, we feel it in our bones even though we don’t know the person and don’t want to hear (or read) what they say. For me, I only want to talk to people who are kind (not jerks) and don’t draw my energy.&lt;/p&gt;
&lt;p&gt;As much as I want to hear diverse thoughts in my life, I definitely don’t want to hear a lot of voices I see there. Also, diversity is terribly represented in social media, and the whole experience creates &lt;a href=&quot;https://en.wikipedia.org/wiki/Filter_bubble&quot;&gt;filter bubbles&lt;/a&gt; instead of promoting diverse opinions. That’s why we also never get what we expect.&lt;/p&gt;
&lt;p&gt;Meanwhile, I can’t deny that there are also people that I got to meet on social media, such as &lt;a href=&quot;https://twitter.com/mjwhansen&quot;&gt;Michele&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/RaVitillo&quot;&gt;Roberto&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/nickytonline&quot;&gt;Nick&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/raae&quot;&gt;Benedicte&lt;/a&gt;, and &lt;a href=&quot;https://twitter.com/fatihacet&quot;&gt;Fatih&lt;/a&gt;, whom I have never met in real life, and they are always great to talk to. Social media also gave me a chance to meet with people (also in real life) who read what I write, such as &lt;a href=&quot;https://twitter.com/baristure_&quot;&gt;Baris&lt;/a&gt;, Kemal, and Daniela. As I was lucky to form new kinds of relationships with these people and many others, my real-life relationships were ebbing and getting shallow.&lt;/p&gt;
&lt;p&gt;I have good friends that I don’t know what they value in their lives even though we talk regularly. We only send each other tweets and interesting threads but don’t talk about deep topics in our lives at all. We’re just considering each other and have a touch base over social media. Of course, it’s not a big issue to have a few of these friends. However, I realized that more of my relationships were evolving in that direction while I was seeking high-quality relationships in real life.&lt;/p&gt;
&lt;p&gt;Furthermore, my real-life relationships started becoming shallower because all of my life started to evolve around social media. When we met to have a coffee, we started asking questions like, “Have you seen this post?” or just showing each other funny posts. I’m not diminishing the effect of creating shared language or experience; however, I’m questioning the quality of that shared moments. Whenever we conversed with my friends without involving any technology, I had the most fulfilling and thoughtful conversations.&lt;/p&gt;
&lt;p&gt;Last but definitely not least, I realized that my ideas were becoming more shallow. When I saw a spontaneous tweet from a random person, that tweet was in my mind for a while, and I was thinking about what this person said. Probably, even the person didn’t think about what they wrote as much as I did. As Twitter’s motto is “What’s happening now,” it promotes an always-on and being-liked culture through its algorithms. Instead of writing quality ideas, I also fell into the trap of getting involved and tweeting more controversial and interesting tweets, even though it’s definitely not my style. Therefore, I had inner conflicts.&lt;/p&gt;
&lt;p&gt;I sought to &lt;a href=&quot;/speaking-writing-and-high-quality-ideas/&quot;&gt;think deeply and share what I found&lt;/a&gt; (the reason why this blog exists). Although these ideas can still be shrunk to 280 characters, they never stayed on the platform and were only read by people who were online. What I have written so far is now deep in my profile, and I can’t even find what I said two years ago. This “popular” and “happening now” is an awful combination that creates hype, which I’m &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;trying to avoid&lt;/a&gt; everywhere.&lt;/p&gt;
&lt;p&gt;All these struggles led me to take a few actions over the last few years, even before starting this last experiment. I reduced my following count to prevent endless scrolling, deleted my Instagram and Facebook accounts, and turned off all social media emails and notifications. The time came to pull the band-aid off.&lt;/p&gt;
&lt;h2&gt;How? (The Setup)&lt;/h2&gt;
&lt;p&gt;All the struggles I explained were present for the last two years, and I was already &lt;a href=&quot;/newsletter/mektup-50/&quot;&gt;discovering&lt;/a&gt; what I &lt;a href=&quot;/newsletter/mektup-48/&quot;&gt;could do&lt;/a&gt; differently. In my research, I found good books and articles and followed a few authors who helped me build the setup I will explain below. Cal Newport, James Clear, and Shane Parish are the most impactful ones. Cal’s books &lt;a href=&quot;https://oku.club/book/deep-work-by-cal-newport-NnJIW&quot;&gt;Deep Work&lt;/a&gt;, &lt;a href=&quot;https://oku.club/book/digital-minimalism-by-cal-newport-K5jhA&quot;&gt;Digital Minimalism&lt;/a&gt;, &lt;a href=&quot;https://oku.club/book/a-world-without-email-by-cal-newport-24goO&quot;&gt;A World Without Email&lt;/a&gt;, his &lt;a href=&quot;https://www.thedeeplife.com/listen/&quot;&gt;podcast&lt;/a&gt;, and James Clear’s &lt;a href=&quot;https://oku.club/book/atomic-habits-by-james-clear-xGPM2&quot;&gt;Atomic Habits&lt;/a&gt; fundamentally affected how I changed my environment and created the setup.&lt;/p&gt;
&lt;h3&gt;Environment Design&lt;/h3&gt;
&lt;p&gt;I learned that designing our environment in a way that will nudge us to act in the way we want has more impact than searching for motivation or having discipline. So, instead of waiting for motivation, we change our environment. For example, if the television is always visible and on reach, we’ll open the TV more often. If we have the Twitter app on our phone’s main screen, we will open the app whenever we look at our phone. If we see it, we do it. If we don’t see it, we forget it.&lt;/p&gt;
&lt;p&gt;That also applies to behaviors we want to build. For example, my bass guitar was sitting in its case for years. I pulled it out and put it in the middle of the room. Every time I entered the room, I saw my bass guitar. Eventually, I started picking it up and practicing more. Another example was building a reading habit. To read more, I put books in every corner of the apartment. Wherever I sat down, I had a book within arm’s reach. Seeing books reminded me to read more, and eventually, I grabbed books one by one and read 1-2 pages here and there until &lt;a href=&quot;/how-to-get-to-the-end-of-a-pile-of-unread-books/&quot;&gt;my habit was formed&lt;/a&gt;. While forming these habits, I started very small.&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;https://oku.club/book/one-small-step-can-change-your-life-by-robert-maurer-hbKa2&quot;&gt;One Small Step Can Change Your Life&lt;/a&gt;, Robert Maurer talks about the small steps to build lasting habits. For instance, all my young age, I never flossed my teeth. At the end of my 20s, I really wanted to build this habit. In the book, Maurer recommends starting as small as possible so that you cannot avoid doing it; not doing it would be silly. For example, I started flossing only one tooth. I couldn’t procrastinate because it was so small that I couldn’t convince myself to not do it. &lt;em&gt;Saying the procrastination word out loud took more time than flossing one tooth.&lt;/em&gt; Once you start that small and build the habit, it’s easier to add the second tooth. After 8 months of gradually increasing the number of flossed teeth, I’m now fully flossing my teeth every day.&lt;/p&gt;
&lt;p&gt;I tried the same strategy in lowering my social media usage. Instead of dropping instantly, I’ve reduced my following count and muted people and keywords one by one. I now have a long list of muted words on Twitter (e.g., eth, bitcoin, NFT, Recep Tayyip Erdogan, football). Designing the platform in the way I want to use helped me a lot to reduce my overall usage. However, Twitter and LinkedIn allow you to a certain extent. Their algorithms are still in place to feed you with new content all the time. That’s why I needed to take many more extra steps and design my environment.&lt;/p&gt;
&lt;h3&gt;Apps and Devices Setup&lt;/h3&gt;
&lt;p&gt;I looked for tools and systems to design my digital environment better suited to my needs.&lt;/p&gt;
&lt;p&gt;First and foremost, I removed all social media apps from my phone, including Twitter, Mastodon, LinkedIn, Discord, and Polywork (I had already deleted my Facebook and Instagram accounts in June 2020). I also logged out from all these accounts on my mobile and desktop browsers. Once the apps were gone, I didn’t see anything related to social media when I picked up my phone. Whenever I wanted to log in to social media, I had to use the browser. I logged in, checked the feed, and logged out every single time. I also set up two-factor authentication (2FA), and that also made logging in difficult whenever I tried. When small things require extra effort, it gives the brain time to reconsider the action. I actually changed my mind many times during the 2FA process and just killed the tab on the browser.&lt;/p&gt;
&lt;p&gt;I wanted to take that environment design one step further and suppress my urges. I was already using &lt;a href=&quot;https://freedom.to/&quot;&gt;Freedom App&lt;/a&gt; for a while to focus and block certain websites during &lt;a href=&quot;/navigating-the-writing-challenge-every-day/&quot;&gt;my writing time&lt;/a&gt;. This time, I set up a daily recurring session that blocks all social media on my phone. Freedom works remarkably well, and once enabled, you cannot bypass it (in its Locked Mode) in any way. Freedom helped me to break my habit of reaching social media without recognizing my own behavior. Later, I extended Freedom to cover my personal and work laptops but with less strict rules.&lt;/p&gt;
&lt;p&gt;Freedom App and removing social media apps didn’t help with certain things, such as notifications. I actually wanted to reduce my phone addiction simultaneously with my social media usage. I was often getting distracted by notifications from various apps (other than social media). That’s why I turned off all possible notifications (except calendar notifications, Telegram, WhatsApp, and a few other apps that I use for habits, health, and finance). On my Apple Watch, I turned off all notifications except calendar and on-call pager notifications. I’m living by my calendar; it’s not a chance for me to turn off calendar notifications. The on-call notifications are also not random; I only get them when I’m called for production incidents. I must admit that turning off notifications is probably one of the best decisions I have made in my life so far. It’s so revealing not to have any notifications coming in (and I’m considering turning off ALL notifications, but I will come to that in another post).&lt;/p&gt;
&lt;p&gt;All said, I still wanted to share my blog articles on social media. Hence, I set up automation using &lt;a href=&quot;https://zapier.com&quot;&gt;Zapier&lt;/a&gt; to send a tweet and post a LinkedIn message when I publish a new article. That’s why I logged in to the platforms from time to time during the last two months to check if the posts were displayed correctly. (Twitter character limit was often the problem. If you’re following me on Twitter, you might have seen some tweets with broken links.)&lt;/p&gt;
&lt;h3&gt;Supporting my FOMO&lt;/h3&gt;
&lt;p&gt;I was still curious to hear from people I follow and didn’t want to miss out. I reduced my following count a year ago to the max. 100. So, I only followed the people I personally knew or valued what they shared. Right before the experiment, I checked whom I was following and if they had blogs. If anyone had a blog, I subscribed to their blog (with &lt;a href=&quot;https://netnewswire.com/&quot;&gt;RSS if possible&lt;/a&gt;) and unfollowed them on social media. That made me sure that I still heard from them at the time I wanted to hear, not at the time decided by algorithms. I also unfollowed them because I cared about &lt;em&gt;them as a person&lt;/em&gt;, not what they were doing at that exact moment. I know not everyone writes on their blogs regularly, and they often tweet something rather than blog about it. However, I was fine with this limitation, and I thought if something important happens I would definitely learn from other mediums (e.g., word of mouth) anyway (Edit: I followed on this with &lt;a href=&quot;/embracing-the-joy-of-missing-out/&quot;&gt;JOMO, Joy of Missing Out&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;Results and Discussion&lt;/h2&gt;
&lt;p&gt;Since I lifted the restriction, I have been logging in to either Twitter or LinkedIn not more than once a day. Checking them doesn’t come to my mind. And whenever I do, it usually takes me 1-3 minutes to scroll my Twitter feed as I only follow a handful of people, and the majority of them don’t even send a single tweet in months. Therefore, I can safely say that I broke the social media habit. (Edit: Later I realized, &lt;a href=&quot;/social-media-impaired-my-learning/&quot;&gt;it also impaired my learning&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;After the experiment, I thought about deleting my Twitter account. I’m still thinking about it because from now on, I will probably rarely tweet something other than automated tweets of my articles. And Twitter never likes links and doesn’t promote these tweets to anyone. Yet, when I look at the statistics of my articles, I see a few people are reaching out to articles from Twitter. Hence, I’m intended to keep the account and only share links to my articles and occasionally check my inbox for new messages without consuming my feed. (Edit: I deleted my Twitter account in December 2023)&lt;/p&gt;
&lt;p&gt;Meanwhile, LinkedIn is a nightmare. There is no control mechanism on it at all. I tried to unfollow people on LinkedIn, and, oh boy, LinkedIn literally doesn’t want you to unfollow people without notifying them. I can see my connection list, but it doesn’t give me an option in that list to unfollow people while staying connected. I don’t want to remove connections with people; I want to unfollow them so I don’t see them in my feed (I don’t care about the posts they liked or found insightful). I can only unfollow them if I go into their profiles and LinkedIn sends the notification “Candost viewed your profile” when I do that. It looks like it will be a constant effort on LinkedIn to unfollow people whenever I see anything from them. Considering I have above 1000 connections, it will take time. I accepted my defeat on this front, but I won’t close my LinkedIn account as I use it for “professional” reasons. (Edit: &lt;a href=&quot;/living-without-algorithms/&quot;&gt;I found a way to work with Linkedin&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Up to Mastodon. As I was still &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;new on Mastodon&lt;/a&gt;, I don’t think I will build a habit of posting regularly on Mastodon or consuming anything there. I follow a handful of people who are only on Mastodon, and my feed is not that dynamic. Also, I have control over my feed—unlike Twitter and LinkedIn—and it gives me confidence that I can manage easily and not become addicted to it. That’s why I decided to keep Mastodon as my main social media platform.&lt;/p&gt;
&lt;p&gt;Within all, if I consider &lt;a href=&quot;https://en.wikipedia.org/wiki/Dunbar%27s_number&quot;&gt;the Dunbar number&lt;/a&gt;, I want to keep how many people I follow as little as possible. However, I don’t think setting a concrete number is a good idea anymore. I only want to follow people I either personally know and want to learn more about what they think at that moment or people who share knowledge that adds value to my life. I know even this definition is vague and can consist of thousands of people. Also, the question, “What adds value to my life?” is a challenging one to answer correctly. I want to take this thought with every person I follow. If I even begin to doubt that someone doesn’t add value to my life, I will unfollow them. It’s not personal; I like a lot of people in real life more than on social media.&lt;/p&gt;
&lt;p&gt;For example, seeing an old colleague in real life makes me happy, but I don’t want to see what they like on social media every day. It’s better to spend one hour over a drink or dinner, maybe even once a year, rather than spending 10 seconds every day on what they liked on the platform without them knowing. I want to reduce these unidirectional relationships and convert them to bidirectional ones where possible.&lt;/p&gt;
&lt;p&gt;There are a lot of deep thoughts and perspectives behind what I wrote above. I believe that this post can easily become a booklet or even a book. These thoughts didn’t form within two months; they were shaped within the last few years and &lt;a href=&quot;/concluding-my-struggle-with-note-taking-systems-and-apps-finally/&quot;&gt;supported&lt;/a&gt; &lt;a href=&quot;/newsletter/mektup-50/&quot;&gt;by&lt;/a&gt; &lt;a href=&quot;/books/make-time-book-summary-review-and-notes/&quot;&gt;other&lt;/a&gt; &lt;a href=&quot;/how-to-get-to-the-end-of-a-pile-of-unread-books/&quot;&gt;surrounding&lt;/a&gt; &lt;a href=&quot;/newsletter/mektup-4/&quot;&gt;actions&lt;/a&gt; &lt;a href=&quot;/the-power-of-ritualization-rituals-vs-routines/&quot;&gt;and&lt;/a&gt; &lt;a href=&quot;/newsletter/mektup-47/&quot;&gt;techniques&lt;/a&gt;. Thus, I will pause here and maybe share each topic more deeply in the future.&lt;/p&gt;
&lt;p&gt;By the way, how is your relationship with social media?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. Meanwhile, if I unfollowed you on social media, again, it’s not personal. It’s not you; it’s me.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/my-experience-living-without-social-media/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/my-experience-living-without-social-media/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Moving to Substack</title><link>https://candost.blog/moving-to-substack/</link><guid isPermaLink="true">https://candost.blog/moving-to-substack/</guid><description>Why and What it Means</description><pubDate>Mon, 10 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I started Mektup on Substack. Right after the first issue, I migrated to ConvertKit, where I hosted Mektup for 36 issues, and then moved it to Ghost, where I hosted my blog to merge everything into one place. Ghost was a great host providing enough flexibility for me to be creative on the website using templates. At the same time, it took care of many things I didn’t want to deal with, such as infrastructure, emailing, security, and spam.&lt;/p&gt;
&lt;p&gt;I have been using Ghost Pro since December 2021. I have seen its development, direction, and growth. Although it has been great—and I’m sure it is still great for many people—it’s not working for me. I realized I don’t fit into their audience, and the new features are going toward content creators with big audiences.&lt;/p&gt;
&lt;p&gt;Also, the freedom in the design of the website brought me a lot of burdens that I didn’t want to deal with anymore. I am okay not working on customizing my home page, footer, or website font. I often found myself working on my website’s UI while I actually wanted to do something else. That moment has passed, and I want to focus on writing.&lt;/p&gt;
&lt;p&gt;Therefore, &lt;strong&gt;I moved to Substack today&lt;/strong&gt;, where I fit into their target audience, “independent writers and podcasters.”&lt;/p&gt;
&lt;p&gt;I also renamed my online space to “&lt;strong&gt;&lt;em&gt;Mediations with Candost&lt;/em&gt;&lt;/strong&gt;.” For a long time, I realized that I’m trying to mediate the multiple aspects of my life that are pulling me in many directions. Every day, I debate with myself and try to find common ground where I can satisfy multiple aspects of my life, such as work, writing, leadership, software engineering, health, music, family, friends, reading, etc., which all have importance, and I want to get better in each front. So, “Mediations” is a better name that reflects my life.&lt;/p&gt;
&lt;p&gt;Meanwhile, &lt;em&gt;Mektup&lt;/em&gt; and &lt;em&gt;Software World with Candost&lt;/em&gt; will keep their names, and I will keep writing &lt;em&gt;Mektup&lt;/em&gt; in the same way.&lt;/p&gt;
&lt;p&gt;In theory, this move shouldn’t change anything for you. However, there are limitations of Subsctack and, thus, consequences for all of us.&lt;/p&gt;
&lt;p&gt;Due to Substack’s setup, &lt;strong&gt;all my mailing lists (that you’re part of it) will start receiving every post I write as an email.&lt;/strong&gt; And Mektup is now an additional newsletter. You may have subscribed to either Mektup or podcast or each blog post only previously on my website. You will also start receiving other posts I write even though you didn’t subscribe to receive every post. &lt;strong&gt;You will get all emails regardless of your previous subscription&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I’m sorry, but Substack doesn’t allow me to subscribe you to the right newsletter list, but &lt;strong&gt;YOU CAN&lt;/strong&gt;. &lt;strong&gt;&lt;em&gt;Click the unsubscribe button at the bottom of this email to unsubscribe from lists you don’t want emails for.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are four email lists to which I will distribute:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://candost.substack.com/&quot;&gt;Mediations with Candost&lt;/a&gt;
This section includes all posts I write (excluding Mektup and book notes).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/newsletter/&quot;&gt;Mektup&lt;/a&gt;
This is the bi-weekly newsletter that I send as casual letters reflecting my learnings and thoughts about software engineering leadership and life, arriving every second Tuesday.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/&quot;&gt;Book Notes&lt;/a&gt; (BRAND NEW)
I decided to separate book notes from my main articles and created a new section on my newsletter that you can subscribe to separately.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/podcast/&quot;&gt;Software World with Candost&lt;/a&gt; (podcast)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;I don’t think I will send more than two emails per week overall; mostly, it will be once a week.&lt;/strong&gt; Feel free to unsubscribe from any list you want. By default, you’re subscribed to all of them.&lt;/p&gt;
&lt;p&gt;Thank you for staying with me through different journeys.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. If you see any broken links in any article, please let me know.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/moving-to-substack/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/moving-to-substack/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #53: Was Tuckman Wrong?</title><link>https://candost.blog/newsletter/mektup-53/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-53/</guid><description>My previous teams performed because of the ownership, autonomy, inclusive environment, people-first and full-of-feedback culture, and no over-time and no over-commitment policies we had.</description><pubDate>Tue, 04 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I read &lt;a href=&quot;https://onbelay.co/articles/2017/5/5/tuckman-was-wrong&quot;&gt;Tuckman Was Wrong by Doc Norton&lt;/a&gt;. It&apos;s an old piece (yes, 2017 is old now).&lt;/p&gt;
&lt;p&gt;The article talks about how teams don&apos;t go from one stage to another in the order Tuckman defined: forming, storming, norming, and performing. The research that&apos;s been done over 50 years showed that teams instead jump from one stage to another, not in any particular order, skip one stage entirely, or consistently show elements of one stage, and are much more dynamic; sometimes, it&apos;s even impossible to tell which stage the team is in. Then Doc talks about team stability and the power of fluidity.&lt;/p&gt;
&lt;p&gt;I am one of the Tuckmanites in terms of using team stages as a tool, and I always leaned toward stable teams as a software engineer (although I must admit I never got it). The problem was that the most stable teams I had changed their members often. After I became a manager, one of the biggest challenges I faced was other managers pushing for fluidity. It was unintuitive for me because of the required context switch and the time and money investment (such as great onboarding, documentation, knowledge sharing, etc.) we had to make for people changing teams to become effective.&lt;/p&gt;
&lt;p&gt;When I think about my previous teams, it wasn&apos;t the stability that made them perform well. It was the ownership, autonomy, inclusive environment, people-first, and full-of-feedback culture. It was the no over-time and no over-commitment policies we had.&lt;/p&gt;
&lt;p&gt;That&apos;s where I agree with Doc Norton. Doc says,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&quot;Stable teams creates a constraint that limits the bad behavior of over allocation and multiple assignments. If we don&apos;t have this bad behavior, we don&apos;t need the constraint of stable teams.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&apos;s easy for leaders to think that the team consists of experts in their domains and that their throughput should be really high. They want faster teams and more and more features to be delivered. Well, it doesn&apos;t really work when the team cannot choose what to work on or differentiate what is more important than the other and cannot keep their focus.&lt;/p&gt;
&lt;p&gt;Doc adds in the article,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;...companies are discovering that allowing people the autonomy to move from assignment to assignment and from team to team, is not only increasing productivity, it is accelerating learning, and improving retention.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&apos;s true that autonomy brings a lot of advantages and actually improves retention (people leaving the organization is one of the highest costs). When people clearly know what&apos;s important and can decide what to work on for that important thing, they are more engaged with the work and create higher-quality products.&lt;/p&gt;
&lt;p&gt;Although I agree with Doc on the fluidity of teams and people, I still think that stages are a useful mental model. This is where Doc tries to convince me to change my mind.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you&apos;re a Tuckmanite, right now, you&apos;re probably searching your mental reserves for a way to accept this new information AND hold onto your belief that Tuckman&apos;s is correct or at least correct enough to still be useful. That&apos;s cool. Rationalization is one of our brain&apos;s defense mechanisms when our truth comes into question.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even though I normally change my mind quickly, this time, I will stick to my mental model but with some adjustments. I am not saying that Tuckman is correct. From my experience, not necessarily a team does have to follow these stages one after another. It&apos;s the culture that follows these stages. The culture has these stages, but it&apos;s also not in sequence. The autonomy, accountability, ownership, feedback, inclusivity, and lack of overcommitment drives teams to the performing state. If the team culture is norming, adding a new member or removing one can alter everything. However, if the culture is strong and stable, a new team member can easily adapt and start performing with the team.&lt;/p&gt;
&lt;p&gt;I also still think that people go through these stages by themselves when they face something new. When anyone joins a new team, they start learning things (forming). After some time, they either accept without deeply understanding and critically judging (a dangerous thing) and jump into the norming state, or they ask questions and challenge the status quo and move into a storming state. Once they learn things around, they start performing. And anyone in the team can (and will) go into the storming state anytime. That&apos;s where I still want to keep the mental model alive.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-53/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-53/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Measure What Matters Book Review, Summary, and Notes</title><link>https://candost.blog/books/measure-what-matters-by-john-doerr-summary-review-and-book-notes/</link><guid isPermaLink="true">https://candost.blog/books/measure-what-matters-by-john-doerr-summary-review-and-book-notes/</guid><description>John Doerr explains OKRs (Objective and Key Results) with many examples from Gates Foundation to Bono and how OKRs help organizations succeed.</description><pubDate>Thu, 30 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How Strongly I Recommend:&lt;/strong&gt; 6/10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How Likely I Will Gift It To Somebody:&lt;/strong&gt; 4/10&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What is the book about? (summary)&lt;/h2&gt;
&lt;p&gt;The book is about OKRs (Objective and Key Results) developed by legends at Intel. OKRs are effective business measurement systems to improve performance and job satisfaction, resulting in better company achievements.&lt;/p&gt;
&lt;p&gt;The book first explains the OKRs and talks about its superpowers: focus and commitment, teamwork, accountability, and having stretch goals. Then it ties OKRs to individual performance, career growth, and company culture to close the loop.&lt;/p&gt;
&lt;p&gt;In short, having transparently defined three-to-five objectives and each objective with 3-5 key results provide everyone clarity around the most important thing for the company. Once the goal is clear, people can align their own teams around the goals to achieve better results. When the teams cannot reach their key results, they mark them as yellow (at risk) or red (cannot achieve). The difference between OKRs and other goal systems is reds and yellows are welcomed in OKRs. If all OKRs are green, it shows they were not great OKRs. OKRs should stretch the goals and the team but still be attainable.&lt;/p&gt;
&lt;p&gt;All these work-around OKRs cannot succeed without having great personnel management and strong leadership. When compensation is tied to feedback and achievements (OKRs), the culture won&apos;t allow OKRs to thrive. The compensation has to be separated from OKRs and how much the teams achieve OKRs. Individual performance feedback cycles should be shortened and also disconnected from compensation. Managers must have one-one-one conversations with their direct reports to track their career progress, help them unblock and move forward at their work, and bi-directionally coach each other. This culture will &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;build trust and transparency at work&lt;/a&gt;. Once we have the environment right, OKRs can thrive.&lt;/p&gt;
&lt;h2&gt;The Review&lt;/h2&gt;
&lt;p&gt;OKRs are great on paper. And the book is enthusiastically written. There is a lot of marketing within the book to sell the idea. Although the idea is simple, the application takes a lot of time and effort. As also explained in the book many times, every company will apply OKRs a bit differently than each other, and it&apos;s okay. There is no right way to use OKRs; everyone must adapt to themselves.&lt;/p&gt;
&lt;p&gt;However, reading this book cover to cover is a waste of time. I&apos;m glad that I skimmed most stories instead of reading them. Stories showed me that the marketing of OKRs is strong in this book. The language is like fuck-up night: we failed, but hook how we got it right. I understand why these stories are there, but anyway.&lt;/p&gt;
&lt;p&gt;OKRs are not a silver bullet, and it&apos;s impossible to apply 100% correctly, much like any other metric system. Building the OKR culture demands much more work than using OKRs.&lt;/p&gt;
&lt;p&gt;Another problem comes up if the company is really big. The coordination work and team alignment becomes messy, and more than one team will be working on the same or similar projects to contribute to company-level OKRs. Identifying these cases is possible, but eliminating them or making two teams work together is challenging. Therefore, I would say OKRs are more suitable for smaller companies. Yet, they have their place in big companies, too; I just don&apos;t keep my expectations too high and use them as a tool to understand what&apos;s important and what has priority.&lt;/p&gt;
&lt;h3&gt;Who Should Read It?&lt;/h3&gt;
&lt;p&gt;Anyone who works with OKRs or wants to work with OKRs.&lt;/p&gt;
&lt;h3&gt;Why should you read it? (Why I recommend it)&lt;/h3&gt;
&lt;p&gt;I don&apos;t recommend reading this book cover to cover. If you&apos;re curious about OKRs, take this book and skim over it. Once you understand what the OKRs are about, only read the book if you are sure you&apos;ll implement it. Even then, don&apos;t read cover to cover. Just get your hands dirty with OKRs and read the book for certain points (you can use the table of content and index at the back to find what you&apos;re looking for).&lt;/p&gt;
&lt;h2&gt;Chapter Notes (Summary by Chapter)&lt;/h2&gt;
&lt;h3&gt;Introduction&lt;/h3&gt;
&lt;p&gt;OKRs are not a silver bullet. If you have strong leadership, creative culture, and sound judgment, OKRs can only lift you up.&lt;/p&gt;
&lt;p&gt;Goal setting is not new, but studies have found that when the goals are not used well, they are recipes for disaster. However, once the goals provide clarity and are clear and freely shared with everyone, they create job satisfaction and motivation.&lt;/p&gt;
&lt;h4&gt;So, What is OKR?&lt;/h4&gt;
&lt;p&gt;OKR stands for Objective and Key Results.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt; What will be achieved: concise, clear, action-orien­ted, and inspirational. Destroys fuzzy thinking and execution.
&lt;strong&gt;Key Results (KRs):&lt;/strong&gt; Answers the question, &quot;How do we know we reached the objective?&quot; It is &lt;em&gt;measurable&lt;/em&gt;, &lt;em&gt;time-bound&lt;/em&gt;, &lt;em&gt;aggressive&lt;/em&gt;, and &lt;em&gt;realistic&lt;/em&gt;. There&apos;s no grey area in KR; you achieve it or not. If all KRs are completed, the objective is achieved.&lt;/p&gt;
&lt;p&gt;There shouldn&apos;t be more than three to five OKRs at the company level; less than five OKRs are always better. OKRs shouldn&apos;t be top-down but bottom-up. There shouldn&apos;t be any dictating: after agreeing on an objective, key results should become contracts between people.&lt;/p&gt;
&lt;p&gt;Company and teams should be flexible: if the environment changes, OKRs can charge as well. People should be open to failure. OKRs are a tool, not a weapon. Everyone (especially leaders) should be patient; adapting to OKRs and leveraging them takes time and practice.&lt;/p&gt;
&lt;h3&gt;How do OKRs Help Teams?&lt;/h3&gt;
&lt;p&gt;OKRs have four superpowers that help any team increase performance and bring trust.&lt;/p&gt;
&lt;h4&gt;Focus &amp;amp; Commit to Priorities&lt;/h4&gt;
&lt;p&gt;OKRs provide focus and commitment to the right priorities. To &lt;a href=&quot;/newsletter/mektup-5/&quot;&gt;figure out the priority&lt;/a&gt;, leaders should ask, &quot;what are the most important things we have to focus on in the next three months?&quot; The answer will be the objective.&lt;/p&gt;
&lt;p&gt;A leader&apos;s job is to make the most important thing—the objective—clear and communicate it with everyone clearly. Everyone in the company must clearly understand the top-level leadership&apos;s perspective—goals and what they mean. Leaders have no chance but to repeat and communicate both what is important and why that objective is important until everyone gets it. (commitment)&lt;/p&gt;
&lt;p&gt;Key Results are the measurable part of OKRs. They are the measurement against the objective. They can be defined yearly at first when organizations transition from hierarchical goals to OKR goal setting. Also, there is no one-size-fits-all approach; every company is different, and everyone can define their OKRs in a different cadence. Keep OKR cycles short to keep receiving feedback on long-term goals. As there is no one-size-fits-all timeframe, ex­periment with cadence and find your own rhythm. The aim is to get early feedback on the goals. Therefore, monthly, 6-weekly, or quarterly OKRs are usually good ideas.&lt;/p&gt;
&lt;p&gt;There should be three to five key results for each objective, and we need to be careful about them. Some KRs can be taken alone and optimized while keeping the quality out of sight. Therefore, KRs should have matching quality KRs. For example, if one of the KRs is to have 30 sales calls in a month, there should be a matching quality KR that will indicate the quality of these sales calls.&lt;/p&gt;
&lt;p&gt;Moreover, focus means fewer OKRs; the number of OKRs should be minimum. When there are many OKRs, nobody understands what matters the most. That&apos;s why saying no, having fewer OKRs is better to focus everyone and have them commit to the OKRs.&lt;/p&gt;
&lt;p&gt;Commitment means leaders must ensure people understand what the OKRs are and why they are there (instead of other OKRs that are left out). Leaders must also follow up with people (sometimes even chase them) so that everyone not only creates their own OKRs but also keeps them up-to-date and uses them daily. One way is making OKRs public: even the individual OKRs the leaders have on their own.&lt;/p&gt;
&lt;h4&gt;Align and Connect for Teamwork&lt;/h4&gt;
&lt;p&gt;Transparent OKRs create alignment. When goals are hidden, people don&apos;t know the most important objectives, and they work on the wrong things. That&apos;s the worst thing that can happen to any business.&lt;/p&gt;
&lt;p&gt;Having visibility prevents people from going off-track. The most important becomes visible. While defining ours, we need a healthy mix of a top-down and bottom-up approach. There is no one way to implement the mix; it will be based on trial and error in the process. If we only follow the top-down OKR setting, we break agility and flexibility, and it becomes difficult to connect cross-department work and make front-line contributors speak up. This micromanagement shuts down ideas and feedback that should flow from first-line contributions to leadership. When there is a healthy level of bottom-up, people become more engaged and align their OKRs to very top-level OKRs. They bring feedback that makes us more adaptive to changes happening around business. This way, people can also achieve their goals already aligned with top-level OKRs. So, everyone wins.&lt;/p&gt;
&lt;p&gt;Moreover, since the OKRs are transparent, departments and teams can check what others are doing, offer help, or identify whether they are working on the same thing and decide to abandon or merge. Transparent OKRs help teams to foster better collaboration.&lt;/p&gt;
&lt;h4&gt;Track for Accountability&lt;/h4&gt;
&lt;p&gt;OKRs bring accountability. Scoring OKRs publicly and telling everyone how much the OKRs are achieved (or at risk) brings accountability into the game. Scoring OKRs are usually measured by how much is achieved in the KR, but no mathematical rule exists. Scoring the OKR as 0.9 out of 1.0 while completing the target by 70% is possible. That judgment makes the scoring effective. It&apos;s not about how much we reached the target; it&apos;s about the quality and effectiveness (as it&apos;s also mentioned before, quality is important). We can reach the target 100%, but if the results are ineffective, we can rate it by 0.7 out of 1.0.&lt;/p&gt;
&lt;p&gt;Accountability also has another side: reflection. This judgment element and also alignment in an action-oriented OKR system demands reflection. After every OKR cycle, we need to look back and ask ourselves what contributed to our success and what obstacles we&apos;ve seen. If we would rewrite the goal, what would we change, and what did we learn that can change our approach in the next cycle? This reflection will help in every OKR cycle to get better at not only defining the goals but learning how we work, our delivery speed, and our missing capabilities.&lt;/p&gt;
&lt;h4&gt;Stretch for Amazing&lt;/h4&gt;
&lt;p&gt;OKRs shouldn&apos;t be comfortable to reach and not easy to complete. The well-chosen metrics and high-quality OKRs ensure we look at the right thing. However, we also need to understand and make it clear how we look at that thing. &quot;OKRs should be uncomfortably exciting.&quot; They shouldn&apos;t be kept conservative. They should stretch to a level where the goal is still attainable, but it pushes everyone to their limit. They should create excitement in people, and the team should clearly follow them. If they are too stretched, the team loses their belief and &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;trust in leadership&lt;/a&gt;. An OKR can be 70% reachable; in certain situations, we can consider it successful if it&apos;s reached 70%.&lt;/p&gt;
&lt;p&gt;The leaders should be comfortable with having yellow or red OKRs in their OKR list and should never hesitate to stretch the goals (while being informed by their people and ensuring the goal is still attainable).&lt;/p&gt;
&lt;h3&gt;Continuous Performance Management: OKRs and CFRs&lt;/h3&gt;
&lt;p&gt;CFR stands for Conversation, Feedback, and Recognition.&lt;/p&gt;
&lt;p&gt;Having yearly performance cycles doesn&apos;t really work because most of the actions have passed, and the feedback doesn&apos;t provide value. Many people get good performance reviews but not good enough compensation. The whole process creates disappointments, and people leave the company. The main problem is that the feedback is not timely and tied to compensation. We need constant &lt;strong&gt;Conversation&lt;/strong&gt;, consistent and timely &lt;strong&gt;Feedback&lt;/strong&gt;, and &lt;strong&gt;Recognition&lt;/strong&gt; of great accomplishments.&lt;/p&gt;
&lt;p&gt;The first action is disconnecting performance review feedback from compensation. The compensation changes should occur once a year (or every six months), while feedback and recognition should be part of daily work. &lt;a href=&quot;/effective-1-1-meetings-one-on-one-meeting-template/&quot;&gt;It all starts with one-one-one conversations between the manager and the direct report.&lt;/a&gt; Research shows that regular (weekly or bi-weekly) one-on-one meetings save time for the direct report (each hour saves two weeks from employees). These meetings should be aimed at the direct report. &lt;a href=&quot;/effective-1-on-1-meetings-own-your-one-on-one-meeting/&quot;&gt;It&apos;s their meeting, not the manager.&lt;/a&gt; The manager should talk to the max. 10% of the time. These meetings should be used for goal setting and reflection, ongoing progress updates, two-way coaching, career growth, and lightweight performance reviews.&lt;/p&gt;
&lt;p&gt;As we ditch &lt;a href=&quot;/newsletter/mektup-19/&quot;&gt;yearly performance reviews&lt;/a&gt;, we need &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;consistent positive and negative&lt;/a&gt;, &lt;a href=&quot;/three-types-of-feedback/&quot;&gt;timely, specific, and clear feedback&lt;/a&gt;. It should be 360: between manager and direct report, between peers, and between cross-collaborations.&lt;/p&gt;
&lt;p&gt;The last missing part is recognition; we need to recognize smaller achievements—&lt;a href=&quot;/have-the-first-win-to-build-team-spirit/&quot;&gt;shout-outs of simple things&lt;/a&gt;—so that people get pride in their work. It contributes to team performance as a positive reinforcement. The recognition shouldn&apos;t always come from the manager but also peer-to-peer. There can be stories in recognition, too; they provide authenticity and relatedness. Recognition should be frequent, authentic, and tied to company goals and strategies.&lt;/p&gt;
&lt;h3&gt;Culture&lt;/h3&gt;
&lt;p&gt;The culture of the company is crucial to make OKRs work. If people&apos;s hearts are not in the right place, if there isn&apos;t trust and transparency, and if accountability and responsibility are not present with vulnerability, then nothing will work. Use CFRs to build the culture, positivity, enthusiasm, and daily improvements. Promote peak performance and stretch thinking with collaboration. Only then start using OKRs to boost the performance.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/measure-what-matters-by-john-doerr-summary-review-and-book-notes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/measure-what-matters-by-john-doerr-summary-review-and-book-notes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Get to The End of a Pile of Unread Books</title><link>https://candost.blog/how-to-get-to-the-end-of-a-pile-of-unread-books/</link><guid isPermaLink="true">https://candost.blog/how-to-get-to-the-end-of-a-pile-of-unread-books/</guid><description>I cannot read every book. I buy more books than I can read. I&apos;m not counting my wish list even. I have enough books to keep me reading for the next five years. But how do I get to the end of this pile?</description><pubDate>Sat, 11 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Reading books is an attractive concept that nobody teaches, but everybody somehow knows how to do it. I started reading books at the university around 2010. It&apos;s been more than ten years. During this whole time, I read whatever people or online algorithms and bookstores recommended. After getting into the habit and embedding reading into my life, I always struggled to drop the book if I didn&apos;t like it.&lt;/p&gt;
&lt;p&gt;In some cases, it also had a huge impact on my reading habit. When I didn&apos;t like the book, I forced myself to continue reading it. I don&apos;t know who put this idea in my mind that &quot;you have to read every book you started, cover to cover,&quot; but I became miserable and even stopped reading for a while to accept that I was not going to return to the book. I&apos;m not counting the psychological burden it had on me: not completing a task and regretting every day, blaming myself that I couldn&apos;t finish a thing.&lt;/p&gt;
&lt;p&gt;After having these struggles, I learned a method that solved this fundamental problem: cross-reading—reading multiple books simultaneously. I usually read 3-6 books; picking up whatever I&apos;m in the mood for helps me read more and keep the habit. I put these books in different places in the apartment to have a book at reach at any time. Keeping this strategy for a while boosted my reading habit, and suddenly, I started picking up books more than ever. Yet, this habit also created its own problem.&lt;/p&gt;
&lt;p&gt;After some time, I formed another pile of books: currently reading. Three books became fifteen. When I didn&apos;t like the book, I simply switched to another, and the boring book stayed in &quot;currently reading&quot; mode in one corner of the apartment. I was back where I started, with an additional toll because I was still not &quot;finishing&quot; what I had started.&lt;/p&gt;
&lt;p&gt;During this whole time, I learned the obvious—I cannot read every book. I buy more books than I can read. I&apos;m not counting my wish list even. I have enough books to keep me reading for the next five years.&lt;/p&gt;
&lt;p&gt;This comes with a drawback of psychological burden. I want to read the books I buy, and I&apos;m overwhelmed by the number of books I want to read. To overcome this, I decided to learn how to read books properly, as it&apos;s something that nobody taught me. When I realized that school only teaches reading, but not reading books, I looked for where I could learn it.&lt;/p&gt;
&lt;p&gt;I found the famous &quot;How to Read A Book&quot; by Mortimer Adler. In one section of the book, the authors talk about Inspectional reading, which I want to emphasize here and leave out other parts of that book (although they are equally helpful) because Inspectional Reading is what helps me most to get the idea of a book, to decide if I need to spend hours reading the book cover to cover, to clean up my to-read pile, and to abandon books that don&apos;t need cross-reading.&lt;/p&gt;
&lt;h2&gt;Inspectional Reading&lt;/h2&gt;
&lt;p&gt;Inspectional reading is the high-level reading before giving the book a full read. Understanding the book as a whole and digesting its ideas is not the aim. The goal is to understand what the book is about, its argument, and if it is worth reading or not.&lt;/p&gt;
&lt;p&gt;Inspectional reading consists of Systematic Skimming and Superficial Reading.&lt;/p&gt;
&lt;h3&gt;Systematic Skimming&lt;/h3&gt;
&lt;p&gt;Systematic skimming is the part where you look closer at the book in multiple steps. In my previous struggle with not finishing books, I skipped this step and dove into the book that I regretted quickly and, as a result, wasted a lot of time trying to finish it or abandon it with shame. Once I learned systematic skimming, I was relieved. The stages of systematic skimming below help me understand if I want to read a book with my full attention and spend my time on it or not.&lt;/p&gt;
&lt;p&gt;How do I do Systematic Skimming:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Read the title page, preface, and foreword:&lt;/strong&gt; Try understanding the book&apos;s goal. What problem does it solve, and what is its value?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Study the table of contents:&lt;/strong&gt; Try understanding how the book solves that problem. Does it use an inductive or deductive approach? What are the sections that present the book&apos;s core arguments? Which chapters look more interesting than others?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check the index:&lt;/strong&gt; Look for the most used words, phrases, and terminology to understand how the book can connect various terminology with the titles in the table of contents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read the publisher&apos;s blurb:&lt;/strong&gt; It&apos;s often pure marketing but sometimes gives some insights from others. It also gives some information on how to relate to others&apos; opinions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read the introduction:&lt;/strong&gt; It&apos;s the part where the author actually introduces the book and its arguments. Try understanding the author&apos;s writing style and high-level arguments. Look for clues indicating something new for you or contradictory to your knowledge. Can the book bring value to your life?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Look at the chapters that seem pivotal to the book&apos;s argument:&lt;/strong&gt; Turn the pages slowly. Read here and there, a paragraph or two, a page or two, not more than that. Look for understanding arguments and how the author supports them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read the conclusion (or the last 2-3 pages):&lt;/strong&gt; Almost authors summarize the book in a conclusion chapter or the last few pages. They recap what they have talked about and mention the most important parts so the ideas will stick with the reader. Read to close the loop in the arguments.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After completing these seven steps, I usually have a broad understanding of the book and its arguments. It helps me decide if I want to read the book. You may think it destroys the narrative author tried so hard to put into the book. To me, it doesn&apos;t; it simply helps me decide if I want to spend many hours studying the ideas and arguments in the book. Tell you what, many books can&apos;t pass this stage, and that&apos;s okay. There are millions of books, and nobody can read them all. You have to choose what you read carefully. And this is the major test any book has to pass. If a book doesn&apos;t pass this test, it goes to my bookshelf and becomes either a reference book or just part of my small library.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One thing I&apos;m currently trying is writing down my notes after each stage. Reading with a pen in hand is the habit I&apos;m trying to build. It&apos;s challenging, but I will update here once I get the habit up and running. My goal is to ask myself four questions after systematic skimming: 1) What is this book about as a whole? 2) What&apos;s being said (as much detail as possible)? 3) Is the book true, in whole or part? 4) What of it? (Why does the author think it is important to know these things?)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For example, Lencioni&apos;s Five Dysfunctions of a Team book didn&apos;t pass this test. Not that the book is bad. The framework in the book is great, but I grasped its message and ideas within thirty minutes without reading the whole book. It didn&apos;t make sense to spend hours on it and study the book. Even though the book is short, I didn&apos;t need to read every word. I counted it as read and moved on. I got its value out.&lt;/p&gt;
&lt;p&gt;As most books cannot pass the systematic skimming test, I count them as read and move them from my to-read to done list.&lt;/p&gt;
&lt;p&gt;Another advantage of systematic skimming is that I can do it in a bookstore even before buying the book. Many bookstores have seats or chairs to dig into the book, and this technique usually takes less than 30 minutes to complete. Once I&apos;m done, I don&apos;t need to read the book anymore.&lt;/p&gt;
&lt;p&gt;Systematic skimming made the whole difference. Suddenly, I stopped feeling guilty that I didn&apos;t finish a book. It was about perspective: I counted the book as read and moved on.&lt;/p&gt;
&lt;h3&gt;Superficial Reading&lt;/h3&gt;
&lt;p&gt;If the book passes the systematic skimming test, it is worth spending some time on it. That&apos;s where superficial reading comes into play: reading the book without going back and pondering the arguments. This is the first read to understand the holistic picture, the book&apos;s structure, and its arguments.&lt;/p&gt;
&lt;p&gt;I&apos;m learning the book. In the first reading, I don&apos;t stop to look up things I don&apos;t understand. I keep going. I know I will have time to think about the arguments when I return. You can think about it like watching a movie: if you see the movie for the first time, you never stop in the middle of it and think about it; you watch it from the beginning to the end. Once you see the messages it gives you and the feelings it transfers, you want to watch it again (or not).&lt;/p&gt;
&lt;p&gt;There is much to say about reading speed in detail, but I don&apos;t want to clutter this post. In superficial reading, your reading speed should vary depending on the book and chapter. Some books require reading fast while others demand slow reading. Also, within the same book, some chapters demand slowing down, and some can be read quickly. You should be able to adjust your speed according to the text. There is only one rule: don&apos;t look back. If you don&apos;t understand an argument, keep going. You will probably read the book again. This reading is just the get the idea and structure of the book. Without seeing the book holistically, it&apos;s not possible to understand it.&lt;/p&gt;
&lt;p&gt;Although Adler recommends superficial reading a bit differently, I adapted it to myself and now use it as a second test. I read books with superficial reading and take chapter notes as much as what&apos;s left on my mind. I still don&apos;t look back while reading or taking a note; I don&apos;t quote but use my own words while taking notes (that&apos;s why Kindle never works for me, highlighting is great, but note-taking is painful).&lt;/p&gt;
&lt;p&gt;In the end, I have a few pages of notes that help me understand what the book is about. After that, I can make up my mind to give a more thoughtful and careful read. Many books can&apos;t pass this stage and don&apos;t require another read. Their ideas and arguments are not very deep and don&apos;t demand pondering.&lt;/p&gt;
&lt;p&gt;Inspectional reading (systematic skimming and superficial reading) helps me reduce my to-read pile. Not all books need to be read thoroughly. The majority deserve little time, and the minority demand reading them with complete understanding and pondering on their arguments. Having multiple stages of reading and eliminating books in each stage to get the most out of them in my limited time has worked for me so far.&lt;/p&gt;
&lt;p&gt;Reading non-fictional books is an interesting concept that nobody teaches. Much like any other process, the ideal way of reading is still far away, and my current process needs improvements. Yet, it&apos;s enough for most books and helps me figure out how I want to spend my time on books.&lt;/p&gt;
&lt;p&gt;Thanks to this process, I finally learned to make peace with a book when I got everything I wanted from it. It helped me to mark books as &quot;finished&quot; or &quot;read&quot; after skimming them systematically and not reading them cover to cover and word by word.&lt;/p&gt;
&lt;p&gt;I will probably keep using this process and improve it at any chance.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-to-get-to-the-end-of-a-pile-of-unread-books/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-to-get-to-the-end-of-a-pile-of-unread-books/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Chesterton&apos;s Fence</title><link>https://candost.blog/chestertons-fence/</link><guid isPermaLink="true">https://candost.blog/chestertons-fence/</guid><description>Chesterton invites us to think about the rationale behind an earlier decision and take action only after we understand why there was a decision in the first place.</description><pubDate>Fri, 10 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h4&gt;(Looking at the picture below)&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;What (the hell) is that fence doing here? It serves nothing. Let’s remove it.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/notes/chestertons-fence.jpeg&quot; alt=&quot;https://commons.wikimedia.org/wiki/File:2011-10-15_Useless_Fence.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That’s what many people agreed on without asking a straightforward question: Why is there a fence here in the first place? What’s the rationale behind putting a fence?&lt;/p&gt;
&lt;p&gt;That fence is called Chesterton’s Fence. If you remove it, Chesterton will cry. Less jokingly, &lt;a href=&quot;https://en.wikipedia.org/wiki/G._K._Chesterton&quot;&gt;Chesterton&lt;/a&gt; (writer and philosopher who died in 1936) invites us to think about the rationale behind an earlier decision and take action only after we understand why there was a decision in the first place. It goes even beyond and encourages us to practice second-order thinking: thinking about the consequences of the consequences of our decisions. (it’s not a typo, yes, consequences of consequences of decisions).&lt;/p&gt;
&lt;p&gt;Everyone can do the first-order thinking: if I do X, the result will be Y. Only a few considers the consequences of Y because that consideration often requires greater effort, and we don’t have time.&lt;/p&gt;
&lt;h3&gt;What can we do as leaders?&lt;/h3&gt;
&lt;p&gt;While making a decision that is not minor, we can stop momentarily and practice second-order (or even third-order) thinking. This strategy helps us to learn why a specific (and seemingly stupid) decision is made earlier, and then, only then, we can safely change it or conclude that they were wrong.&lt;/p&gt;
&lt;p&gt;Want to learn more? &lt;a href=&quot;https://fs.blog/chestertons-fence/&quot;&gt;Read this article&lt;/a&gt; or grab the book &lt;a href=&quot;https://fs.blog/tgmm/&quot;&gt;Great Mental Models Volume 1&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/chestertons-fence/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/chestertons-fence/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #52: Multitasking hides design flaws and lowers the quality</title><link>https://candost.blog/newsletter/mektup-52/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-52/</guid><description>When I wrote you the last time about the myth of multitasking, I talked about our attention limit having a value of only one cognitive task. Today, I want to double-click on that attention-demanding creative task and connect it to the quality of results.</description><pubDate>Tue, 07 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I &lt;a href=&quot;/newsletter/mektup-41/&quot;&gt;wrote you the last time about the myth of multitasking&lt;/a&gt;, I talked about our attention limit having a value of only one cognitive task. Today, I want to double-click on that attention-demanding creative task and connect it to the quality of results.&lt;/p&gt;
&lt;p&gt;In Mythical Man-Month book, Brooks talks about the importance of execution in software engineering. Much like in any other creative task (writing, painting, etc.), an idea has full of hidden flaws until the execution. Software engineers don&apos;t realize the inconsistencies in their proposals before implementing or at least writing the approach down. Without the execution, the flaws in system design will never surface. The discrepancies in component design will only come out with the coding. It&apos;s especially true with legacy systems. The majority of us work with codebases or projects we didn&apos;t develop. We design new components that fit into systems we cannot 100% comprehend. That&apos;s where I want to take Brook&apos;s statement one step further. Multitasking conceals all the design flaws even deeper.&lt;/p&gt;
&lt;p&gt;While reviewing our peer&apos;s code, we remember one thing that needs to be done and jump to it. We fix a bug in a meeting; we refine the next ticket while listening to the all-hands meeting. A Product Manager asks for something urgent that needs to be done &lt;em&gt;now&lt;/em&gt;. We pick up multiple tasks with the intention of gaining a more holistic view. With a high workload, it often looks like we have no time and no choice. That&apos;s also what&apos;s expected from experienced engineers, right? Join meetings, finish tasks, drive initiatives, mentor others, and do more simultaneously. Within all this absurdity, we try to move our focus from one component to another, jump from meeting to meeting, and have three-four tasks assigned to us that are currently &quot;in progress.&quot; But if our mind is everywhere, it&apos;s actually nowhere.&lt;/p&gt;
&lt;p&gt;&quot;How can I do less while the business expects more from me?&quot; I hear you say. Here is the misunderstanding: organizations want you to achieve more, not to do more. &lt;strong&gt;The more you do, the less you achieve. Not output, the outcome.&lt;/strong&gt; You may finish a small thing here and there while listening to a meeting, but it can only be a small output while the actual outcome awaits.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We can differentiate the outcome from the output by looking at the results.&lt;/strong&gt; In multitasking, you will definitely produce some work, so your output will be high. And that is the main confusion point. As the output is high, you&apos;re inclined to &lt;em&gt;assume&lt;/em&gt; you&apos;re doing a great job. Only when we look at the results of outputs can we understand the impact you make.&lt;/p&gt;
&lt;p&gt;If we forbid multitasking, you have to choose one task while the others await. This selection forces you to understand the expected result; hence the task that gives a better outcome precedes the tasks with minor impact. We see these effects only by looking with second-order thinking: instead of &quot;I will do X, and Y will happen,&quot; ask, &quot;what will be the consequence of Y?&quot; to think beyond. Ask yourself why that task matters and what would be the expected outcome. This strategy has another consequence we often overlook and sacrifice for speed: quality.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Multitasking lowers the quality of the work you produce.&lt;/strong&gt; Software engineering demand understanding tiny details, seeing their effect, planning a solution, and ensuring that the solution works. Because of a high cognitive load, working with multiple contexts in parallel, and shallow focus, multitasking hits hard in every single step, resulting in bugs, poorly written and unmaintainable code, and piled-up technical debt that becomes clutter in the backlog as leftovers.&lt;/p&gt;
&lt;p&gt;If we go back to Brook&apos;s argument, the wrongly-gained holistic knowledge results in learning fewer details. That turns out to be missing the intricacies of bad design. &lt;strong&gt;The more parallel work you take, the greater the loss of quality on the finished product.&lt;/strong&gt; While growing in careers, many folks make a mistake and take more stuff on them in parallel. It seems reasonable, but it&apos;s not.&lt;/p&gt;
&lt;p&gt;Within all the complexity Brooks discussed, &lt;strong&gt;we have no choice but to do things in order&lt;/strong&gt;. When we stop and try to &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;single-task&lt;/a&gt;, we &lt;a href=&quot;/newsletter/mektup-5/&quot;&gt;begin to focus&lt;/a&gt;, increase quality and outcomes and start growing. It&apos;s hard, true. And yes, it requires &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;saying no&lt;/a&gt; and demands better stakeholder management. And that&apos;s one of the reasons why software engineers are in high demand, and not everyone can do this job without dedicated training, focus, and discipline.&lt;/p&gt;
&lt;p&gt;Until next time,
Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. What I&apos;m doing &lt;a href=&quot;/now/&quot;&gt;now&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-52/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-52/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>These (damn) Annoying Tenure Engineers</title><link>https://candost.blog/these-annoying-tenure-engineers/</link><guid isPermaLink="true">https://candost.blog/these-annoying-tenure-engineers/</guid><description>How should you deal with annoying tenure engineers and get unstuck? Blocking tenure engineers should become counselors of innovation and development.</description><pubDate>Fri, 03 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Many tenure engineers get frustrated with various small things if they have stayed in the same team or done the same job for a long time. They start getting annoyed by new people bringing not-so-new ideas that were already proved wrong two years ago. They had seen the projects put into the trash and, after three years, brought up like they were brand-new innovative ideas. They had been frustrated and demotivated and started creating a lot of friction in those projects. Or they are left behind and moved to another team because they create conflicts. The whole situation results in lost knowledge and the organization making the same mistakes again. I was one of them, and I knew I was never alone. Now, I want to talk about the case with &lt;em&gt;Annoying Tenure Engineers&lt;/em&gt;™️.&lt;/p&gt;
&lt;p&gt;These engineers are annoyed because they have seen various things: they have experienced how a system is developed, and maintained, witnessed the (good and bad) decisions made, contributed to them, and how the system evolved to the point that it accumulated tech debt and accidental complexity and needed to be rewritten, but there was no time. They have seen projects succeed, fail, evolve, and pivot. Within the same organization, they have seen good leaders who elevated everyone and bad ones who &lt;em&gt;looked like&lt;/em&gt; good leaders but pulled everybody down. They worked with people who were frickin&apos; smart yet made such mistakes because they couldn&apos;t see why something was built in a certain way in the first place.&lt;/p&gt;
&lt;p&gt;You name it.&lt;/p&gt;
&lt;p&gt;They have seen a lot.&lt;/p&gt;
&lt;p&gt;But &lt;a href=&quot;/do-not-change-jobs/&quot;&gt;they still didn&apos;t leave&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;They are valuable assets because of their accumulated historical and domain knowledge. They are long-time supporters of the mission. They are the sense-makers and challengers for new decisions. Although organizations aim to have more tenures—having these people is a tremendous asset to the company—they can quickly become drawbacks because they have seen &lt;strong&gt;a lot&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;They can become blockers of innovation. If they just float around the same area without clear priorities, they prevent new things from developing and seeing the light. If you approach them to get their idea or learn why a particular feature of the product is built that way, they surface all the accumulated problems to your face and demotivate you. They suck the energy out of you by bringing up thousands of issues you couldn&apos;t foresee.&lt;/p&gt;
&lt;p&gt;Yes, you still learn why something has been built that way, but if these tenures are advocates for staying still instead of being consultants for sensible development, you have a hard time changing them. Once tenures are in their &lt;a href=&quot;/newsletter/mektup-14/&quot;&gt;comfort zone&lt;/a&gt;, getting them out is challenging. Moreover, when they get out, it is often not easy for them to &lt;a href=&quot;/the-real-difficulty-of-engineering-leadership/&quot;&gt;let old things go&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;I can&apos;t stay silent and ignore what&apos;s happening when people do all that stupid stuff to the services I designed and developed for years. I created them; these applications are my babies.&quot;&lt;/p&gt;
&lt;p&gt;— A random annoying tenure engineer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As their strong ownership attitude was appreciated for a very long time, it is challenging for annoying tenure engineers to let things go. That reinforced ownership easily becomes a pain for everyone. They frustrate everyone around them and cause others to leave the company. Or these tenures can also abandon ship and move on to their next job in another company when nobody listens to them anymore.&lt;/p&gt;
&lt;p&gt;Of course, not all tenure engineers are like that. Some will seek change and be open to letting others drive the ship they have built. When they want to change their position, team, or role, that&apos;s a great advantage for the company to keep their employees and leverage their knowledge in another functionality. This cross-boundary knowledge transfer can increase innovation and produce incredible results that nobody could think of. And that&apos;s the best scenario for tenures to become Counsel Tenure Engineers™️.&lt;/p&gt;
&lt;p&gt;Counsel Tenure Engineers are like your best lawyers. They tell you exactly what would work and what wouldn&apos;t while doing everything they can to win your case. They follow your dreams while pulling your feet to the ground.&lt;/p&gt;
&lt;p&gt;Leading tenures through change is a big challenge. When they say, &quot;It won&apos;t work; we have tried that before,&quot; or &quot;Why are we going around the same things again that we did two years ago?&quot; you, as their leader, have to stop and turn things around. You must show how things have changed since then and why you&apos;re not in the same environment anymore. &lt;a href=&quot;/newsletter/mektup-27/&quot;&gt;You must encourage them to see the holistic picture&lt;/a&gt;. Instead of coaching them with &quot;give it one more try,&quot; you should approach with &quot;let&apos;s use your knowledge and experience and figure out how to make it successful this time.&quot;&lt;/p&gt;
&lt;p&gt;Organizations must turn these engineers from advocates of endless stability to consultants for experimentation and counsels of innovation. Their accumulated knowledge must be extracted and used in cross-border domains. If the documentation is not that great (like most organizations), these people are the knowledge your organization has, and you have to treat them as historical non-fiction books, not historical novels; read them to learn what happened instead of getting stuck in a story.&lt;/p&gt;
&lt;p&gt;If these engineers changed their domains or moved to other projects, make them consultants to their old domain. Draw clear boundaries that the decisions are not on these tenure engineers anymore, and they are sitting in a consultant seat. You want their ownership attitude on the mission, not the services they have built.&lt;/p&gt;
&lt;p&gt;As a leader, it&apos;s on you to make annoying tenures counsel tenures. If you don&apos;t, they will be one of the most detrimental people to your organization, and you&apos;ll have to make decisions that nobody will like.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/these-annoying-tenure-engineers/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/these-annoying-tenure-engineers/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #51: There is still hope; there will always be hope</title><link>https://candost.blog/newsletter/mektup-51/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-51/</guid><description>Two earthquakes took the lives of thousands of people (40k+) and impacted millions in Turkey. And I want to talk about how it feels being here in Germany, far away from all of the impacts.</description><pubDate>Tue, 21 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;This Mektup is a personal one.&lt;/p&gt;
&lt;p&gt;You must have heard what happened in my home country, Turkey. &lt;a href=&quot;https://www.dw.com/en/turkey-syria-quakes-survivors-rescued-after-12-days/a-64749283&quot;&gt;Two earthquakes took the lives of thousands of people (40k+) and impacted millions.&lt;/a&gt; (just yesterday, &lt;a href=&quot;https://www.bbc.com/news/world-europe-64711228&quot;&gt;two additional earthquakes took another set of lives&lt;/a&gt;) Although my family and friends are physically healthy, nobody in Turkey feels good these days. Everybody tries to help in one way or another. We ended the search and rescue operations in most cities and saved thousands of people but also caused thousands of lives due to organizational failure in AFAD (Disaster and Emergency Management Presidency of Turkey), which couldn&apos;t reach the disaster area in the first 48 hours. Yet, we &lt;a href=&quot;https://www.dw.com/en/turkey-syria-quakes-survivors-rescued-after-12-days/a-64749283&quot;&gt;heard survivors coming out of the debris after 296 hours&lt;/a&gt; (that&apos;s ~12 days). We had hoped for weeks that we could save many, many more.&lt;/p&gt;
&lt;p&gt;We also hoped things changed after the &lt;a href=&quot;https://en.wikipedia.org/wiki/1999_%C4%B0zmit_earthquake&quot;&gt;1999 Gölcük earthquake that killed ~18k people&lt;/a&gt; in Turkey. Some things are changed; new legislations and taxes are introduced to take precautious steps. Earthquake insurance became mandatory if you want water and electricity at your home. Yet, we didn&apos;t consider the quality of monitoring of the legislation applied in practice. Corruption, nepotism, favoritism, and a one-man country were the reasons why these natural events became disasters/catastrophes.&lt;/p&gt;
&lt;p&gt;Now, &lt;strong&gt;I do not want to talk about problems that test our nerves and make us hopeless.&lt;/strong&gt; Thousands of people lost their lives, and millions won&apos;t be able to live in the same way anymore, and I can&apos;t change anything about it. 😔 That&apos;s why, instead, I want to focus on how it feels to be an ex-pat while one part of you is still in another place dealing with many struggles. I want to talk about how it feels being here, in Germany, far away from all of the impacts, how shameful we feel for our warm apartments, and—more specifically—why we feel this way. Not in a selfish way that moves focus to my problems in warm apartments but to think more about what we can do from here.&lt;/p&gt;
&lt;p&gt;When I first moved to Germany, I moved here to have a better future and support my family better in turbulent times. All these hopes and excitement of living abroad caused hiding all the challenges of starting a new life in a place where I know nobody and have no connections. Over the years, I got used to a new life, but one part was always missing.&lt;/p&gt;
&lt;p&gt;You can&apos;t just take your luggage and say, &quot;I&apos;m out of here,&quot; when you move out of a place you had spent your whole childhood and youth and still have people you love living. You always leave behind one part of your soul; you know that you will never become one again, especially when the culture you grew up in is not individualistic but a community-driven culture.&lt;/p&gt;
&lt;p&gt;In community-driven cultures, you feel the urge to help each other out. If someone else is in trouble, you rush to help them. When you need money, you first ask the closest people instead of going to a bank for a loan. When you want to do something on weekends, you don&apos;t do it alone. Alone activities are like sins. You do things with others. These behaviors are shaped by the tribal ancestors and organizational structures we had in history. Harmony precedes individualistic behaviors as it helped our ancestors to survive in harsh environments. Unlike individualistic cultures (many Western cultures), nobody promotes individualistic decisions. Everyone is urged to be part of a group and follow that group&apos;s decisions. And that&apos;s how I grew up in the middle of Anatolia.&lt;/p&gt;
&lt;p&gt;When moving to Germany, one of the fundamental problems I faced was tied to this cultural difference; having nobody to support me and trying to do everything alone. When I tried building friendships with locals, they all stopped at some point. It was extremely difficult to have a colleague moving from a working relationship to a friendship. &lt;strong&gt;Feeling alone within a crowd and not belonging is the story of the lives of many who move to Western countries.&lt;/strong&gt; However, recent events showed that we, actually, are not that alone.&lt;/p&gt;
&lt;p&gt;Seeing all the support from the country I immigrated to feels great. All the efforts in Germany to help Turkey and Syria are just extraordinary: teams were sent immediately, minutes of silence in the parliament and schools, lowering flags to half-staff, commemoration ceremonies, all the support campaigns by NGOs and companies (e.g., we have a donation-matching campaign in SumUp), airlifts from Germany to Turkey full of donations, and many, many more. I&apos;m simply proud and feel so much supported by the people of Germany. Thanks to all these efforts, I could participate in helping my country in one way.&lt;/p&gt;
&lt;p&gt;Not only Germany but seeing other countries that I least expected (due to decades-long conflicts) to send help, such as Israel, Armenia, and Greece, makes me feel not alone. Also, &lt;a href=&quot;https://news.sky.com/story/turkey-syria-earthquake-which-countries-have-offered-to-help-and-what-aid-are-they-providing-12805055&quot;&gt;many countries&lt;/a&gt; rushed to help, such as Japan, Mexico, Brazil, Austria, the UK, the US, and more. Albeit any support probably won&apos;t help with the long-term change we expect (learning how to live with earthquakes and building necessary infrastructure correctly), we at least don&apos;t feel alone and can bind up our wounds quicker. So, thank you.&lt;/p&gt;
&lt;p&gt;Thank you to all my friends, colleagues, companies, organizations, governments, and people who shared our feelings with us, who gave us a hand, a hug, or a shoulder, and support.&lt;/p&gt;
&lt;p&gt;You taught me one thing. As much as we often feel otherwise, we&apos;re not alone. Nobody is alone. There is still hope; there will always be hope.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; If you want to donate some money, you can use the &lt;a href=&quot;https://ahbap.org/disasters-turkey&quot;&gt;Ahbap organization&lt;/a&gt;—a trustworthy one.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-51/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-51/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Three Approaches to Decision-Making Styles</title><link>https://candost.blog/notes/19f/</link><guid isPermaLink="true">https://candost.blog/notes/19f/</guid><pubDate>Wed, 15 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There are three categories or approaches to decision-making styles in the world that encapsulate all the decision-making models.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ethical Reasoning&lt;/strong&gt; (Good-Evil/True-False/Right-Wrong)
It&apos;s conceptual reasoning. We have concepts in our minds that are formed over the years and impacted by people surrounding us, situations we&apos;ve been in, and our beliefs. We make decisions based on our feelings about what we think is right or wrong.
Ethical reasoning is mostly associated with religious thinking, but it&apos;s not limited to that. It&apos;s the ethical approach, and ethics can be independent of religion. People have opinions on what&apos;s right and wrong. It doesn&apos;t have to be religious thinking, but religion plays a good part.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tribal thinking&lt;/strong&gt; (Which group do I belong to, and how does that group think?)
People decide based on which group they belong to. They choose a group in which the person feels comfortable. Then they follow the group&apos;s decisions even if the decision is wrong. They don&apos;t consider or think about themselves; they follow where the group goes. They want to follow the tribe, not the issues; they don&apos;t move from tribe to tribe just because the tribe made a wrong decision. People have an emotional residence in the group. Once they place themselves in the tribe, they follow. This behavior came in evolution: the more I belong to a group, the higher the chance I can survive. Individual cultures (such as Americans) might not have strong tribal thinking, but it&apos;s more visible in community cultures like Asian. Western cultures believe more in individualism. They can change their groups if the group&apos;s decision is not aligned with theirs. However, in tribal thinking, people change their minds rather than changing their group. While deciding which group to join, tribal thinkers often implicitly ask themselves, &quot;Who do I want to be with as an operator in my life?&quot;
There is no right or wrong for individualistic vs. tribal thinking. None is better than the other; it depends on the context and the cultural background.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thinking with mental models&lt;/strong&gt;
This thinking style adapts thinking and decision-making strategy to the situation at hand. It is a more pragmatic approach.
Rao uses a world in science fiction and fantasy to define a mental model. There is a world and a story in that world in science fiction and fantasy literature. We learn the world while learning and following the story. The world is the mental model. Mental models allow us to make sense of stories efficiently.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;12: Engineer Autonomy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/14/&quot;&gt;14: Experiences are like compound interest on money&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30/&quot;&gt;30: Scientific Thinking and Fact-Checking for A Better Life&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/61/&quot;&gt;61: What to delegate?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/63/&quot;&gt;63: How cultures are shaped in the world&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=ycaRAWBMGws&amp;amp;t=39s&quot;&gt;Ventakesh Rao, The Knowledge Project Podcast#150&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How cultures are shaped in the world</title><link>https://candost.blog/notes/63/</link><guid isPermaLink="true">https://candost.blog/notes/63/</guid><description>The impact of modernization and colonization on Kenya</description><pubDate>Wed, 15 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It seems like the British had a devastating impact on Kenya.&lt;/p&gt;
&lt;p&gt;&quot;Modernization&quot; shows its evil face in many places. When people are forced, preached, evangelized, and convinced that their culture is not good and that they have to change, they go over dramatic problems—many of these problems last years, if not centuries.&lt;/p&gt;
&lt;p&gt;Kenya was a culture-rich country and still is, and Maathai was born into a family where she was the biggest girl of the second wife. The culture allowed men to take multiple wives. Back then, it&apos;s understandable that it was preferred because people needed a crowd to survive. They needed people to work in the fields. The man was responsible for the whole family, including all wives and children. The culture forced the man to take care of them. If the man didn&apos;t care about his family, he would be ostracized. So, the folk ensured that the patriarchy was beneficial to men and provided safety to women.&lt;/p&gt;
&lt;p&gt;How Maathai perceives her childhood and culture is impressive. It&apos;s often impossible to see others through their lenses in life, but she explains everything well with empathy. With empathy and truthfulness, she lies the environment in front of our eyes as it is. She enables us to see clearly.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Unbowed by Wangari Maathai&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/63/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/63/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Share pros and cons in announcements</title><link>https://candost.blog/notes/20c/</link><guid isPermaLink="true">https://candost.blog/notes/20c/</guid><pubDate>Thu, 09 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sometimes, leadership introduces something and doesn&apos;t explain what they consider to be the disadvantages of the change. They often talk about the pros of a new system without mentioning the cons clearly. This situation makes it very difficult to get the buy-in from people. When executive leadership and HR introduce new systems, they have to talk about disadvantages clearly so that people don&apos;t speculate on their importance. When it&apos;s not explained, people won&apos;t be able to weigh the costs properly as they don&apos;t either see the holistic picture or are not deep enough into the topic. Preventing people&apos;s speculations demands explaining both pros and cons together.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32b/&quot;&gt;32b: Communicating Organizational Changes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/sometimes-saying-nothing-tells-everything/&quot;&gt;Sometimes Saying Nothing Tells Everything&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #50: How to Build Habits That Last</title><link>https://candost.blog/newsletter/mektup-50/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-50/</guid><description>This is the 50th issue, and I thought it would be good to talk about habits and how I kept my writing habit to bring Mektup to you every second week.</description><pubDate>Tue, 07 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;I wrote the following paragraph two years ago in &lt;a href=&quot;/newsletter/mektup-1/&quot;&gt;the first Mektup&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Putting myself in front of many people is one of the hardest things I’ve ever done. Even though I’m a bit of an extrovert, it still frightens and excites me every time I start a live session, send a tweet, or publish a blog post. However, I want to keep going. This newsletter is my latest effort to share what I’ve learned, read, watched, and liked.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And I&apos;ve kept going. This is the 50th issue, and I thought it would be good to talk about habits and how I kept my writing habit to bring Mektup to you every second week.&lt;/p&gt;
&lt;p&gt;When Kahneman explained the two different systems our brains have in his ground-breaking research on how we think and make decisions, he was focused on breaking our automatic thinking to prevent mistakes and biases to make better decisions. Our brains&apos; conscious side (system one) and automatic side (system two) impact our lives more than we expect. Think about learning how to ride a bike or swim. At first, we focus on getting it right; our actions are in system one, requiring focus and continuous attention. When we learn, though, these actions become automatic because they move to system two; we can perform these activities without thinking. That aligns with our bodies&apos; physiological goal: preserve energy. The brain moves repeated activities to system two because system one is expensive—it demands constant attention and consumes a lot of energy. Then, why do we have such a hard time building habits if the brain is inclined to build automatic actions?&lt;/p&gt;
&lt;p&gt;Because of the delayed feedback. If we&apos;re learning how to ride a bike, we fall when we make a mistake. That&apos;s immediate feedback: the pain in our knees or hands shows what we did wrong. If we cycle for hundred meters, we understand what we make right. However, while building a reading, writing, or exercising habit, there is no instant feedback. If we don&apos;t read or exercise, nothing hurts at that moment. Moreover, when we consider our bodies&apos; goal of saving energy, we&apos;re already inclined to do nothing. To break this physiological need, we need to trick our brains by either getting rewards for the energy spent or reducing the energy we spend on habits.&lt;/p&gt;
&lt;p&gt;The good thing about these tricks is that they don&apos;t need to be substantial. Our brain only needs &lt;em&gt;something.&lt;/em&gt; That&apos;s why Seinfeld&apos;s &quot;Don&apos;t Break The Chain&quot; method works: putting a big red X on a calendar on the wall for every day completing the habit. Seinfeld moves the emphasis from performance and achievement to process. As long as he keeps putting marks, the chain continues. The longer the chain, the bigger the reward. As long as the process keeps going, the resistance to doing nothing shrinks.&lt;/p&gt;
&lt;p&gt;I broke my body&apos;s resistance by following Seinfeld—I have been using &lt;a href=&quot;https://dot-on.de/&quot;&gt;a dot-on calendar&lt;/a&gt; for the last three years to mark my habits. Every day, I have two dots (one for writing, one for exercising) to put on the calendar on the wall. Although I might have skipped some exercise days, I have successfully kept my writing habit since 2020. My goal is to put a dot on my calendar every day, not writing 750 words a day for a year or writing three days per week. I sit down, grab the pen, write as long as I can, and put that dot sticker on my calendar. Albeit having a writing habit for years now, I struggled a lot at first. My most significant struggle was finding an answer to the question, &quot;When?&quot;&lt;/p&gt;
&lt;p&gt;Whoever I talk to mentions that they have no energy in the evening to do anything. After hours of work, all of us want a nice dinner, relax and recover our drained energy for the next day. In busy schedules, creating time for habits is challenging. I first tried to start working at 7-8 am to leave work early, so I have more time for habits in the evening. But it didn&apos;t work. The only solution I could find was moving all my habits to morning.&lt;/p&gt;
&lt;p&gt;Once I realized I was really productive in the morning, I decided to use this time for myself. These days, I do my writing and exercise in the morning. Once they are done, I&apos;m ready for the remaining part of the day; I don&apos;t need to think about them anymore. This strategy helped me a lot to keep these habits consistent over time. You might not be a morning person to wake up early for habits. In this case, try attaching the habit to something you already do every day. For example, start by doing ten jumping jacks right after you close the working computer at home or directly go to the gym right after leaving the office. Attaching to existing habits work magically.&lt;/p&gt;
&lt;p&gt;The last thing I tried was never missing a habit for two days in a row. If I can&apos;t write one day, it&apos;s not a big deal. But I will make sure to write the next day. If I break the habit chain, I start a new one. In the beginning, my chains were shorter: three days of writing and one day of break. Later, these days increased to five, six, and seven and ten and fifteen days, and became a month, and three months, and... You got it. The goal is transformed: it&apos;s not writing every day anymore; it&apos;s keeping the chain longer.&lt;/p&gt;
&lt;p&gt;Once I learned that having shorter chains was completely normal in the habit-building process, I began to appreciate what I had achieved. The whole process boosted my motivation. Later I realized that when we change our behavior, we need time to adjust. At first, our well-being (happiness, energy levels, comfort, etc.) will plummet because of adapting to a change. Yet, after a while, it will start increasing faster and faster: it&apos;s a J-curve. That&apos;s why we need to give our habits a bit of time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/J-Curve-with-Experiment.jpg&quot; alt=&quot;J-Curve with Experiment Time&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When you start building a new habit, think about experimenting. Can you experiment for a few days, weeks, or months and see how it goes? You can define the time according to your habit and lifestyle. But keep the J-curve in mind and stay until the end of an experiment. If the experiment doesn&apos;t work, you can always return to the previous state and try another experiment. Use the techniques I shared above if you&apos;re starting from scratch, and let me know how the experiments go.&lt;/p&gt;
&lt;p&gt;That&apos;s it. I don&apos;t want to make this letter longer as it&apos;s already quite long. One more technique helped me a lot on my most unmotivated days. I will talk about that in another Mektup in the future.&lt;/p&gt;
&lt;p&gt;Talk soon.&lt;/p&gt;
&lt;p&gt;Don&apos;t forget to send this Mektup to one of your (work) friends.&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. &lt;a href=&quot;/why-is-writing-important/&quot;&gt;If you&apos;re thinking about building a writing habit.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-50/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-50/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Trying the feedback</title><link>https://candost.blog/notes/40d1/</link><guid isPermaLink="true">https://candost.blog/notes/40d1/</guid><pubDate>Mon, 06 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we receive feedback, we might consider applying it fully or declining it. It often looks like a 0 or 1 situation; take it or leave it. Even when we try to find the middle ground, it comes down to picking up what&apos;s useful in feedback (only a small part) and applying it to our lives. If we&apos;re unsure about the feedback, we hesitate to take anything out of it. But it doesn&apos;t have to be that way. We don&apos;t have to change our lives till eternity with some feedback we got over lunch. However, we can experiment. We can try making a small change on one or two occasions and see how it changes our behavior and its impact on us. If the change doesn&apos;t feel right or doesn&apos;t improve anything, we can always roll back. Thinking about the changes we need to make often prevents any improvement because changes are scary as the results are unknown. By experimenting, we reduce the unknown and can make improvements.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2/&quot;&gt;2: How to Improve Writing&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;17: Public Speaking and Improving Skills&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;31: Accountability and Learning Culture in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/40d1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/40d1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Three Types of Feedback</title><link>https://candost.blog/three-types-of-feedback/</link><guid isPermaLink="true">https://candost.blog/three-types-of-feedback/</guid><description>There are three types of feedback: Appreciation, Evaluation, and Coaching.</description><pubDate>Wed, 01 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We&apos;re at the end of the first month of the new year. I thought about sharing something about feedback that helped me a lot in my conversations, especially in one-on-ones with my team members.&lt;/p&gt;
&lt;p&gt;There are three types of feedback: Appreciation, Evaluation, and Coaching (that I learned from &lt;a href=&quot;https://www.stoneandheen.com/thanks-feedback&quot;&gt;the Thanks for the Feedback book&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Appreciation:&lt;/em&gt; It is the feedback we all love when it&apos;s authentic and given on time. Examples: &lt;em&gt;Great job! Thank you for your dedication. I appreciate you taking responsibility. I appreciate the feedback you gave last week; I was able to improve thanks to it.&lt;/em&gt;
&lt;em&gt;Evaluation:&lt;/em&gt; The feedback is to evaluate skills, align expectations, and clarify consequences. The goal is to rate the person against standards and expectations. Examples: &lt;em&gt;You exceeded our expectations last year. Our expectations for you were X, Y, and Z, but you could meet X and Y. We increased your compensation by A% because you achieved a lot during the last year.&lt;/em&gt;
&lt;em&gt;Coaching:&lt;/em&gt; The feedback is to give a direction. It&apos;s aimed at trying to help a person learn, grow, or change. The coaching is aimed at improvement. Examples: &lt;em&gt;You should work on your debugging skills. To improve your communication, please read these two books. Here is a great article about mentoring that you wanted to learn.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We need all three of them. But &lt;strong&gt;we feel disappointed or become defensive when we expect one, but &lt;em&gt;receive&lt;/em&gt;&lt;/strong&gt; the other. Therefore, we should try separating them.&lt;/p&gt;
&lt;p&gt;When you&apos;re talking with your team members, listen to them. As leaders, our job is to understand which feedback our team member needs and provide them with the correct type of feedback. We need to talk about the purpose of the feedback and discuss it to figure out the type of feedback. If we can, we should separate evaluation from coaching and appreciation.&lt;/p&gt;
&lt;p&gt;In yearly performance reviews, we should separate evaluation from coaching and appreciation. First, we have to have the appreciation feedback. Second, we should have the evaluation feedback. And last but not least, we have to provide consistent coaching during the whole year. Separating evaluation from coaching and appreciation may sound unauthentic, but we can still give evaluation feedback with our perspective added on top and keep the feedback authentic.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/three-types-of-feedback/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/three-types-of-feedback/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #49: The Craft of Writing Effectively</title><link>https://candost.blog/newsletter/mektup-49/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-49/</guid><description>How to write effective messages on Slack, Confluence, and Google Docs to convince people? How to build strong arguments in writing at work?</description><pubDate>Tue, 24 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;With the extensive usage of tools like Slack, Confluence, and Google Docs, we—especially leaders—struggle to be articulate. In school, we were all taught to start writing by forming bullet lists, building our arguments, adding more background, and finishing our text by summarizing everything. Although this strategy worked until the end of education, it doesn’t work anymore, especially in the work context. People often don&apos;t read our messages well, or they skim texts loosely and hastily. People often miss &lt;em&gt;the value&lt;/em&gt; of our messages—what&apos;s important to them.&lt;/p&gt;
&lt;p&gt;We sometimes spend a long time crafting a message and become wordsmiths of the sentences and words to make our message more impactful. Once we send the message, we feel proud because an announcement message often records the conclusion of our diligent hard work. However, talking to the people after our announcement relieves that people were not hooked on our idea. We then spend hours and hours explaining our idea in meetings and conversations.&lt;/p&gt;
&lt;p&gt;How can we shorten the time we put in after that announcement? More than hooking people to our idea, we need to be concise in text and make clear what’s valuable in our text to the reader.&lt;/p&gt;
&lt;p&gt;As what we learned in education no longer works, we must relearn how to craft a message.&lt;/p&gt;
&lt;p&gt;Recently, I spent some time watching &lt;a href=&quot;https://www.youtube.com/watch?v=vtIzMaLkCaM&quot;&gt;this video by Larry McEnerney, Director of the University of Chicago&apos;s Writing Program&lt;/a&gt; about writing effectively. Although it’s aimed at academic writing, there are fantastic insights we can all benefit from and apply in our Slack messages, Google Docs, pull request reviews, presentations, and what have you.&lt;/p&gt;
&lt;h2&gt;Our text is not about us&lt;/h2&gt;
&lt;p&gt;It&apos;s about readers.&lt;/p&gt;
&lt;p&gt;That is the biggest mindset switch McEnerney talks about. We&apos;re using our writing to think about our world while people are reading our stuff to learn what&apos;s valuable to &lt;em&gt;them&lt;/em&gt; in &lt;em&gt;our&lt;/em&gt; world. They read our stuff not because it&apos;s valuable to &lt;em&gt;us&lt;/em&gt; but valuable to &lt;em&gt;them&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;That&apos;s why &lt;strong&gt;we must focus on what value we bring &lt;em&gt;to the reader&lt;/em&gt;&lt;/strong&gt;. We might have the most novel idea that nobody thought of. But if that idea doesn&apos;t bring any value to anyone, then nobody will care.&lt;/p&gt;
&lt;p&gt;Writing is about changing the reader&apos;s ideas. What we think is unimportant if our thoughts don&apos;t change something in the reader&apos;s mind.&lt;/p&gt;
&lt;p&gt;But how do we bring that value? How do we change the reader&apos;s mind?&lt;/p&gt;
&lt;h2&gt;Bringing out the problem&lt;/h2&gt;
&lt;p&gt;A value comes from an existence of a problem. We either surface a problem that the reader wasn&apos;t aware of or solve the problem that the reader already had.&lt;/p&gt;
&lt;p&gt;And two characteristics define a problem: Instability and cost/benefit.&lt;/p&gt;
&lt;p&gt;Instability in a situation causes the problem. For a problem to exist, there has to be an imbalance. We need to show readers that instability. As leaders, we often try to solve that instability by hiding them in our messages. However, to define a problem, we need to &lt;em&gt;create&lt;/em&gt; that instability in our text and make it visible. Words such as &lt;code&gt;but,&lt;/code&gt; &lt;code&gt;however,&lt;/code&gt; &lt;code&gt;although,&lt;/code&gt;  and &lt;code&gt;nonetheless&lt;/code&gt; create contradictions. These words help to point out what is challenging or conflicting in any situation. While defining a situation and working towards building the problem, these words help to point out the exact issue.&lt;/p&gt;
&lt;p&gt;For example, look at how I used the word &quot;however&quot; in the above paragraph.&lt;/p&gt;
&lt;p&gt;Once we make the instability visible, we need to explain what is the cost of that instability and what will be the benefit of getting rid of that instability. That&apos;s the main value to the reader. This cost and benefits component is what arouses interest and keeps the reader engaged. If the words don’t benefit the reader, nobody will care about the writing. They have no reason to keep reading.&lt;/p&gt;
&lt;p&gt;While explaining cost/benefit, we also need to define who exactly will benefit from solving the contradiction we introduce or who will deal with the cost of that instability. We need to make the audience prominent. Readers have to understand who the text is written for. For example, at the beginning of the text, I narrowed down the audience of this text to leaders.&lt;/p&gt;
&lt;p&gt;Now that we learned the components of effective writing, let&apos;s have a look at a few strategies to apply our learning at work.&lt;/p&gt;
&lt;h2&gt;How to apply it in daily work&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;When writing a Slack message in a team channel, think about whom your message impacts. If you&apos;re writing in your team&apos;s Slack channel, your audience is already defined. But still make the cost/benefit to these people clear and visible. If you&apos;re writing in a wider-audience channel, make clear who your message is for.&lt;/li&gt;
&lt;li&gt;When writing a Pull Request description, Request for Comments Document (RFC), or Architecture Decision Record (ARD), don&apos;t write your ideas just from your perspective. Somebody will read your writing, so the text is &lt;em&gt;for them&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;If you&apos;re unsure about how to write for other people, just write whatever comes to your mind but ruthlessly edit what you wrote later on. Convert your narrative and change your angle from yourself to the reader.&lt;/li&gt;
&lt;li&gt;Build a background of the problem. Use words that create a contradiction (but, although, however, nonetheless, etc.). If you need to convince people to change course, create that tension and instability.&lt;/li&gt;
&lt;li&gt;If you don&apos;t know how to create that tension, have a look at a few well-written texts and search for words such as but, however, although, nonetheless, etc.&lt;/li&gt;
&lt;li&gt;Make cost and/or benefit visible. Show what they will miss out on or what problems they will have to deal with in the future if they don&apos;t follow your ideas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&apos;s it.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-49/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-49/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>DDIA: The Trouble with Distributed Systems</title><link>https://candost.blog/books/the-trouble-with-distributed-systems/</link><guid isPermaLink="true">https://candost.blog/books/the-trouble-with-distributed-systems/</guid><description>The most common and known problems and challenges of Distributed Systems.</description><pubDate>Fri, 20 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article is part of my notes from Chapter 8 of &lt;a href=&quot;https://dataintensive.net/&quot;&gt;Designing Data-Intensive Applications by Martin Kleppmann&lt;/a&gt;. You can read other chapter notes as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;Chapter 2: Data Models and Query Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;Chapter 3: Data Storage and Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;Chapter 4: Encoding, Decoding, Schemas, and Data Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Chapter 5: Data Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;Chapter 6: Database Partitioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Chapter 7: Transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;Chapter 8: The Trouble with Distributed Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;Chapter 9: Consistency and Consensus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chapter 10: Batch Processing&lt;/li&gt;
&lt;li&gt;Chapter 11: Stream Processing&lt;/li&gt;
&lt;li&gt;Chapter 12: The Future of Data Systems&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;Welcome to the pessimistic chapter.&lt;/p&gt;
&lt;h2&gt;Faults and Partial Failures&lt;/h2&gt;
&lt;p&gt;So far, we have mentioned some failures and discussed how to prevent them. In distributed systems, there are way more things that can go wrong.&lt;/p&gt;
&lt;p&gt;In a single computer, the system is deterministic; whatever happens, we can try the operation again and get the same result. Moreover, a single computer system has no partial failure; if it fails, it fails. Things can still go wrong in a single machine, and the computer usually prefers to crash the system instead of returning a wrong result. There might be some faults or bugs, but they often result from badly-written software.&lt;/p&gt;
&lt;p&gt;On the other hand, distributed systems consist of multiple computers connected via a network. They are fundamentally different.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; We&apos;re not discussing supercomputers in this book, even though they are also distributed systems; we&apos;re interested in commodity computers connected via a network.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While building distributed systems, we must accept that partial and complete system failures will happen. We need to develop fault-tolerance mechanisms to recover from both kinds of failures or prevent them in the beginning. Therefore, fault handling must be part of distributed system design. We cannot assume everything is all right or be optimistic.&lt;/p&gt;
&lt;h2&gt;Unreliable Networks&lt;/h2&gt;
&lt;p&gt;When we talk about distributed systems, we mean shared-nothing computers communicating via a network. Nothing is shared means we must rely on the network, which can fail at any given time for various reasons. A package might never arrive; it can be damaged on the way even if it arrives; the other device might not accept it because of a fault; the package might queue up in the machine if that machine is overloaded. Let&apos;s say the package went, but the response takes the same way back. It might get lost due to a misconfigured switch or any other reason. It might also arrive late due to a network overload on the requesting machine. In any way, it&apos;s impossible to know why there is no response to a request. One of the best strategies to handle these situations is to use timeouts: give up waiting for it. When a timeout happens, we still don&apos;t know whether the other machine got our message.&lt;/p&gt;
&lt;p&gt;Having network problems play a significant role in practice. As the failures can happen at every level (scaling from one network switch to entire data centers), there is no way to avoid them. The only option is either handling or tolerating them. While handling requires deliberate precautions, tolerating might mean just showing the user an error message and saying, &quot;network problems are happening.&quot; We need to test our systems consistently to find out how we handle these problems and when to display an error message.&lt;/p&gt;
&lt;p&gt;If everything is unreliable, how do we even find out any fault?&lt;/p&gt;
&lt;h3&gt;Detecting Faults&lt;/h3&gt;
&lt;p&gt;Many systems detect faults in one way or another. But until there is a successful response from the application, it&apos;s impossible to know what exactly failed.&lt;/p&gt;
&lt;p&gt;In distributed systems, we can detect faults in the load balancer level to stop sending requests to a failed node or to detect a failed leader and assign a new one.&lt;/p&gt;
&lt;p&gt;Moreover, everything can fail in the network, such as switches, routers, applications, machines, etc., and there is sometimes no way of detecting a fault; we only use timeouts to declare a node is down and take action. We can have retries, but eventually, we must announce a node is dead.&lt;/p&gt;
&lt;h3&gt;Timeouts and Unbounded Delays&lt;/h3&gt;
&lt;p&gt;If there is no other way than using timeouts, how can we use them effectively?&lt;/p&gt;
&lt;p&gt;If we define timeouts as too short, we may accidentally declare a node dead while there is just a temporary slowdown. If we define the timeout as too long, we increase the waiting time for a dead node out of nothing and create a bad user experience.&lt;/p&gt;
&lt;p&gt;We can use retry mechanisms when working with short timeout values. Yet that is also problematic: if a node is just slowed down temporarily and our operation is in the queue, we mistakenly can redirect the operation to another node; as a result, we execute the operation twice. Moreover, we can cause a cascading failure if the other node is already heavily loaded when we transfer a request to another node.&lt;/p&gt;
&lt;p&gt;That may sound pessimistic, and it is. But it&apos;s the reality.&lt;/p&gt;
&lt;p&gt;There is no guarantee for any delay to be a certain amount. Asynchronous networks have unbounded delays. They work with a premise to deliver packets as quickly as possible but without an upper limit in delays. Their main focus is reliability on the delivery, not on time.&lt;/p&gt;
&lt;p&gt;Also, switches in the network redirect incoming packages to different links. When a network switch sends many incoming messages to the same link, a queue builds up and creates network congestion. Hence, it increases waiting time.&lt;/p&gt;
&lt;p&gt;If we think more deeply about the protocols, there is also a delay that comes from TCP: when a package is not acknowledged (lost in the network), TCP retransmits lost packages after a certain timeout. This timeout value is also not consistent. Systems like TCP and Cassandra use dynamic timeouts calculated based on the previous network round-trips and response times.&lt;/p&gt;
&lt;p&gt;As a result, it&apos;s almost impossible to define certain timeout values. We have to understand the network and systems we&apos;re using and how they work, so we can better estimate timeouts and adjust them according to our systems. To do that, we must learn the difference between synchronous and asynchronous networks.&lt;/p&gt;
&lt;h3&gt;Synchronous Versus Asynchronous Networks&lt;/h3&gt;
&lt;p&gt;When we think about phone calls, they are synchronous. They allocate a certain amount of bandwidth on the network (called a circuit) end-to-end between two callers. The system knows how many bits it needs to transfer when establishing a connection. Therefore, it can allocate bandwidth with certainty (~100 kbps per line is recommended). If we have a network capacity of 10000 connections, we can have 10000 concurrent calls without anyone waiting. We can also have one call and 9999 empty lines. Even data passes several routers from one end to another; the space is reserved when the call is established. There is no queuing, and end-to-end network latency is fixed. That&apos;s what we call &lt;em&gt;bounded delay&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;TCP connections are optimized for speed, so expectations differ. While establishing a connection, the packet sizes and bandwidth requirements are unknown (unlike in phone connections). Imagine we follow the same approach as phone calls and use a specific bandwidth size for all connections. Let&apos;s say we have 10000 connections capacity again. If one connection needs to load a gigabyte of data in that network and we have a 100kbps limit per connection in the hardware, it has to wait a long time, and the other 9999 slots will be empty and become wasted resources. We might directly allocate a 1gbps line to one data stream by using all remaining slots, but it&apos;s impossible to know how much bandwidth is needed initially. That&apos;s why queueing is used. We optimize for speed, and if a TCP connection requires massive bandwidth in the network, others queue up and wait for their allocation. All data centers and the internet is optimized for busty traffic. TCP optimizes the data transfer rate to the available network capacity.&lt;/p&gt;
&lt;p&gt;As the network setup we use will build queues and have unbounded delays, we cannot guarantee any specific delays or reliability. That&apos;s why it&apos;s impossible to set correct timeouts. We have to experiment with it.&lt;/p&gt;
&lt;p&gt;Experimenting and learning our challenges more in detail requires knowing how clocks work.&lt;/p&gt;
&lt;h2&gt;Unreliable Clocks&lt;/h2&gt;
&lt;p&gt;There are two types of clocks: monotonic and time-of-day clocks. These two serve different purposes and work differently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Time-of-day clocks:&lt;/strong&gt; The time is calculated based on an epoch (usually Gregorian calendar UTC Jan 1, 1970) and without counting the leap seconds. These clocks are usually synchronized using Network Time Protocol (NTP)—with the goal of making the same timestamp meaning the same thing on different machines. While synchronizing, jumps may occur; one clock may go fast and can be 10 nanoseconds in front. The clock can jump back when it is synched. That&apos;s why these clocks are not suitable for calculating the elapsed time (e.g., timeouts).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Monotonic clocks:&lt;/strong&gt; Monotonic clocks always go up. Imagine a counter counting nanoseconds. It doesn&apos;t care about which day or time of the day; it just counts. The absolute value of the clock is meaningless; its goal is to tell us how much time elapsed between two points accurately. Each computer (or CPU) has its own monotonic clock. Albeit useful for calculating elapsed time because there won&apos;t be any jumps, they are useless when it comes to comparing two monotonic clock values. Monotonic clocks are normally not synced between machines (or CPUs). NTP can still be used to adjust the speed of a monotonic clock, but jumps cannot occur; NTP either slows down or fastens up the clock a certain amount.&lt;/p&gt;
&lt;h3&gt;Relying On Synchronized Clocks&lt;/h3&gt;
&lt;p&gt;Clocks have several pitfalls that make them unreliable. Quartz clocks have delays and skew. To solve this issue, we can also synchronize them with NTP. But NTP improves the situation rather than solving it because even synchronization makes a network round trip and is destined to delay.
Hence, using time-of-day clocks requires designing the system against the clock faults. We must constantly monitor the clock offsets between all the machines and synchronize them before the offsets get bigger.&lt;/p&gt;
&lt;p&gt;Most problems arise when timestamps are used for decision-making in the applications. Even when the clocks are synchronized, the nature of NTP and quartz clocks make it inaccurate to use the timestamp (there will always be an offset between two clocks), and we often don&apos;t know how much the offset is between clocks. Let&apos;s say two clients update the same value in two replicas, and we replicate these values to other nodes. How do we decide which client&apos;s operation is the first if we rely on the timestamp of the initial nodes?&lt;/p&gt;
&lt;p&gt;It is challenging to separate writes that happen in quick succession or truly concurrent. Moreover, two machines can generate exactly the same timestamp, especially when the clock has only a millisecond resolution. If we use Last Write Wins (LWW) as a conflict resolution strategy, the database can mysteriously drop values by mistake because of clock skew. We can also use additional tiebreakers or version vectors to resolve these situations.&lt;/p&gt;
&lt;p&gt;Another problem we mentioned is not knowing the confidence of a clock. Most machines only give the current time as the exact date and time. However, when asked about the current time, Google&apos;s True Time API provides two values to increase confidence: (clock-earliest and clock-latest). When we know the confidence interval, we can be more accurate in deciding which operation happened first in conflict resolution.&lt;/p&gt;
&lt;p&gt;Lastly, we talked about Snapshot Isolation and Repeatable Read. In Snapshot Isolation, it&apos;s crucial to identify if a read operation happened after a write operation (as we offer the snapshot). When these operations occur in one machine, it&apos;s less of a problem. But in a distributed system, it&apos;s still a problem. Using Google&apos;s API for transaction ID generation to understand rolling IDs and deciding which transaction is first doesn&apos;t solve the problem.&lt;/p&gt;
&lt;h3&gt;Process Pauses&lt;/h3&gt;
&lt;p&gt;When we use clocks on the critical path of a system, we face another set of issues. For example, let&apos;s say we decided to keep the leader node for a specific time; after that time passes, we choose a new leader. One way to know if the leader still holds the position is by checking if the leader has enough time left in its position at the beginning of each request. Here, right at that moment, the system can pause the process for an unknown time for a variety of reasons.&lt;/p&gt;
&lt;p&gt;These reasons include garbage collection (GC), allocating the memory for another virtual machine, a user closing down the laptop lid, an operations engineer sending a stop process signal by mistake, and many more. Weird things happen when these processes continue where they are left off. If the leader had been paused, the system could have declared another node as a leader. Suddenly having two leaders might create many problems.&lt;/p&gt;
&lt;p&gt;In distributed systems, real-time requires having response time guarantees. Real-time capabilities (unlike real-time data streaming on the web) are often built for security-critical systems like opening airbag in a car (we don&apos;t want to be blocked by garbage collection in an accident) and demands extensive testing and robustness. That&apos;s why real-time is not economical and practical in most server-side data processing systems. Therefore, we will suffer the pauses and clock instabilities.&lt;/p&gt;
&lt;p&gt;Yet a few things can be done to limit the garbage collector&apos;s impact. We can schedule garbage collector&apos;s work frequently. Small iterations of the GC process prevent long-running GC pauses. Another approach is considering GC pauses like an outage in a node and letting other nodes handle incoming requests while GC is working in the node. Some latency-sensitive financial trading systems use this approach.&lt;/p&gt;
&lt;h2&gt;Knowledge, Truth, and Lies&lt;/h2&gt;
&lt;p&gt;With all these problems we mentioned, it is almost impossible to make anything right because there are tons of things that can go wrong. We often don&apos;t know what is wrong (remember, we cannot distinguish problems that happen in the network). While being lost in the unknowns, the only thing we can do is to make assumptions and build distributed systems with &lt;em&gt;some&lt;/em&gt; truths and knowledge and offer some guarantees.&lt;/p&gt;
&lt;h3&gt;The Truth Is Defined By The Majority&lt;/h3&gt;
&lt;p&gt;When we rely on one node to decide anything, we create a single point of failure. Imagine one node deciding by itself that it is the leader in the system while other nodes think someone else is. Or imagine a scenario where one node thinks they are alive and healthy while others cannot reach it due to a network problem, and they declare that node dead.&lt;/p&gt;
&lt;p&gt;When considering these scenarios, a system cannot rely on one node&apos;s decision about certain topics. But the system can operate with a majority or—as it is called—a quorum. Individual nodes must obey the quorum&apos;s decisions instead of taking action alone.&lt;/p&gt;
&lt;p&gt;For example, if we build a system that requires grabbing a lock on storage to write data, we have to build mechanisms to prevent the node that has the lock from misbehaving. When a node&apos;s garbage collector stops every process to clean up while the node has a lock lease from the lock service for writing data, the lease may expire. Meanwhile, another node can acquire a lease and write data to the same file. Once the garbage collector finishes, the node continues as if nothing happened and, assuming it still has the lease, writes to the storage, and corrupts the file. This was a real bug in HBase, and there is a way to prevent it.&lt;/p&gt;
&lt;p&gt;We can add fencing tokens to the lock service. Every time a lock is leased, a fencing token (a monotonically increasing number) can be returned with it. The node can use the token to write to the storage. If the storage receives a write request with a lower-numbered token, it rejects it. While we require the storage to take an active role in the system, we cannot let clients accidentally abuse the system. We must consider building mechanisms to prevent clients from using systems incorrectly. We cannot assume they will always behave well.&lt;/p&gt;
&lt;h3&gt;Byzantine Faults&lt;/h3&gt;
&lt;p&gt;In this book, we ensure that nodes—at least—tell the truth within their best knowledge despite not answering, answering late, or answering with outdated values. They don&apos;t cheat the system. When one node doesn&apos;t tell the truth (e.g., sends a confirmation for a message it never received), Byzantine faults occur; the problem of reaching consensus in entrusting environment (Byzantine Generals Problem).&lt;/p&gt;
&lt;p&gt;These problems mostly occur in aerospace systems where radiation corrupts hardware and sends unreliable messages or in systems where some nodes may try to cheat because of fraudulent activity. But overall, we most probably don&apos;t need to build Byzantine-tolerant systems because we mostly work with nodes in the same data center and a closed network. But there are certain things we can do to prevent lies in our system. For example, we can put input validation to prevent SQL injection and input character limiting to prevent denial of service due to large memory allocation.&lt;/p&gt;
&lt;h3&gt;System Model and Reality&lt;/h3&gt;
&lt;p&gt;There are tons of problems that can happen. While we cannot take cover for every problem or play Pollyanna and ensure everything will run perfectly, we create expectations and assumptions for systems so we know how they &lt;em&gt;should&lt;/em&gt; behave. These assumptions and expectations are defined using models.&lt;/p&gt;
&lt;p&gt;For example, we can use system models about timing, such as synchronous, partially synchronous, or asynchronous models, to build systems with specific ground rules. When we talk about faults, we can use crash-stop faults, crash-recovery, or Byzantine faults models to formalize our expectations. While these models reflect reality (or we want to create a reality with these), algorithms have other models to be defined as &quot;working correctly&quot;—algorithms have properties that say what it means to be correct. These are categorized as safety and liveness properties. If we think about an algorithm that generates unique fencing tokens, uniqueness is a safety property; the same applies to a monotonic sequence. And if we expect the node requesting the fencing token to receive a response &lt;em&gt;eventually&lt;/em&gt;, we can say that the availability property is defined as the liveness property. In practice, we expect safety properties to always hold and liveness properties to have room for caveats.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/the-trouble-with-distributed-systems/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/the-trouble-with-distributed-systems/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Shift Left on Security</title><link>https://candost.blog/shift-left-on-security/</link><guid isPermaLink="true">https://candost.blog/shift-left-on-security/</guid><description>How would you explain the &apos;Shift Left on Security&apos; to a five-year-old?</description><pubDate>Sun, 15 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;How would you explain the &quot;Shift Left on Security&quot; to a five years old kid?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That was a question that we had to answer in a group exercise at SumUp lately. Each group in an 80-people workshop took a few of the 24 capabilities that drive improvements in software delivery performance from the book Accelerate.&lt;/p&gt;
&lt;p&gt;We found a simple explanation and I believe that answer can help many people understand how to include security in their software development processes.&lt;/p&gt;
&lt;p&gt;Here we go.&lt;/p&gt;
&lt;p&gt;Now, we want to make a sandwich. When we take a bite, we don&apos;t want to discover that one of the ingredients is rotten. If the ham is rotten, we want to learn about it before. If one of the cherry tomatoes is gone bad, we should know beforehand, not when we take the bite. Overall, what we want is to eat the freshest sandwich ever. How do we do that?
Our sandwich is as fresh as its ingredients; therefore, we always want fresh ingredients. What can we do to get fresh ingredients to avoid last-minute surprises? We can test the ingredients before making a sandwich. Have a look at them, smell them, or even taste them. That&apos;s the first step. What else can we do? We can ensure that we buy the freshest products. How do we do that? Maybe in the supermarket, we can pick the products behind the shelf (supermarkets always put new products on the back). Perhaps we can even go to a farmer&apos;s market on Saturdays or take it further; we can go to the fields and pick up our product ourselves. Maybe we can also grow our own product. Once we move our focus from now to the whole process backward, we can actually get the freshest product in the beginning. And during the entire process, we still can ensure they didn&apos;t go bad by smelling the ingredients we bought or tasting them before making a sandwich.&lt;/p&gt;
&lt;p&gt;We want to ensure that what we do is secure from the beginning and throughout the process. And that&apos;s what it means to shift left on security. However, I think one concept is not that clear to many people.&lt;/p&gt;
&lt;h2&gt;What the hell does shift left mean?&lt;/h2&gt;
&lt;p&gt;When we think about any work process, it usually goes from left to right, step by step.
&lt;img src=&quot;/images/content/posts/shift-left-on-security/Work-Stream.jpg&quot; alt=&quot;Work Stream&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When we think of security, it&apos;s often thought of near the end together with Quality Assurance. It&apos;s usually part of compliance testing and comes as an afterthought, and it quickly becomes a release blocker if any vulnerability is discovered. These vulnerabilities often demand significant time investment to fix because the implementation details or even sometimes software design are not built with that vulnerability in mind.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/shift-left-on-security/Shift-Left-on-Security-1.jpg&quot; alt=&quot;Security is often part of quality assurance testing&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If we shift the security review or mindset to the left, we can discover the vulnerabilities earlier, and they often won&apos;t require substantial time investments because the software is still in the implementation phase. Yet, if we discover flaws in software design, we&apos;ll need to go back and redesign the system.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/shift-left-on-security/Shift-Left-on-Security-2.jpg&quot; alt=&quot;Moving security to the left in the process.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s why shifting security to the left help us build secure systems right from the design.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/shift-left-on-security/Shift-Left-on-Security-3.jpg&quot; alt=&quot;Shifting Security to the most left position in the process.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When InfoSec experts are involved in software design, we can build safer systems from end to end. Involving security experts only in the beginning can also be a mistake because the team can fall into traps or make mistakes without recognizing their implementation or testing options downstream of the process. That&apos;s why InfoSec experts should be involved in every stage.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/shift-left-on-security/Shift-Left-on-Security-4.jpg&quot; alt=&quot;Involving InfoSec experts in every stage.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;However, it&apos;s not feasible to involve security experts in every single project as that will require a lot of effort both in communication and decision-making. Instead, we can leverage &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/#enabling-teams&quot;&gt;the Enabling Team Topology from Team Topologies&lt;/a&gt;. InfoSec folks can join the team in the early stages to guide and improve their knowledge of information security. This way, both the team developing systems learn more about designing and developing secure applications, and InfoSec folks succeed at elevating the knowledge and systems in the company. As a result, the organization benefits from having fewer vulnerabilities.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/shift-left-on-security/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/shift-left-on-security/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #48: Lagom, Clutters in Life, and The Habit of The Rich</title><link>https://candost.blog/newsletter/mektup-48/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-48/</guid><description>New year&apos;s resolutions, new habits, happiness, and thinking about balanced living.</description><pubDate>Tue, 10 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Happy new year! I hope you will have a great year which you won&apos;t need any resolutions for 2024. I have had no resolutions for the last two years, and I love it. For me, New Year&apos;s Eve is a regular day, so it doesn&apos;t mark anything that I think of celebration. But it&apos;s not in a bad way. I just don&apos;t put too much value into &lt;em&gt;any&lt;/em&gt; day. My goal is to try to live every day as valuable as possible and keep doing what I want to do. I know not everyone is like me. Many people have resolutions, and the date in calendars marks new beginnings. If you&apos;re one of them, I hope your resolutions will bring happiness and health to you.&lt;/p&gt;
&lt;p&gt;As we&apos;re talking about happiness, I started reading a page or two from a book called &lt;a href=&quot;https://en.wikipedia.org/wiki/Meditations&quot;&gt;Meditations by Marcus Aurelius&lt;/a&gt;, who is a former Roman Emperor (you might remember him from the movie Gladiator). The book is a collection of his personal notes; he didn&apos;t publish them as a book; he wrote notes to himself. There, he says, he learned from his mother about simplicity in his way of living, far removed from the habits of the rich.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If an&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;emperor&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;wants to live away from the habits of the rich, it might be wise to think about the habits of the rich in&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;our&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;lives, too&lt;/strong&gt;, especially now while discussing new year&apos;s resolutions and creating habits.&lt;/p&gt;
&lt;p&gt;Right before graduating from the university, I had a goal to buy myself a MacBook Pro with my salary. I thought I deserved that and would be happy to have it and bought it. In fact, I didn&apos;t need a MacBook Pro; I only needed a computer. That was a habit of the rich: assuming happiness comes from materials. After graduation, I also moved to Istanbul and had a different life than I expected. I started eating and going out all the time. While they all &lt;em&gt;felt&lt;/em&gt; good, I had an increasing credit card debt and no savings. Later, I moved to Hamburg, closed all my debts, and canceled my credit cards. In Istanbul, &lt;strong&gt;I was trying to have the habits of the rich while not being rich.&lt;/strong&gt; That was a recipe for disaster.&lt;/p&gt;
&lt;p&gt;This kind of lifestyle is not uncommon. I see many people trying to have the habits of the rich without even thinking if they want these habits or not. Mainstream media and advertisements always encourage us to buy more things we &lt;em&gt;think&lt;/em&gt; we need but don&apos;t.&lt;/p&gt;
&lt;p&gt;Why do I tell you this? Because &lt;strong&gt;I want you to join me in thinking about what we seek in life and your new year&apos;s resolutions (if you have them)&lt;/strong&gt;. What are the habits of the rich in our lives—we think we need them, but in reality, we don&apos;t? I was planning to buy an AirPods Pro, but do I really need it? Do you need the newest iPhone just because everybody has it? Do you really need that tenth pair of shoes?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;“It is not the man who has little, but he who desires more, that is poor.”&lt;/strong&gt; —Seneca&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://hubermanlab.com/science-based-tools-for-increasing-happiness/&quot;&gt;Science says money and materials don&apos;t bring happiness directly, but at the same time, they enable us to create situations that can bring happiness&lt;/a&gt;. For example, we can hire cleaning help to open ourselves some time to do another activity that makes us happy. It can be as simple as walking in the woods with friends and family, going to the gym, or even reading our favorite book. To me, hiring cleaning help is not a habit of the rich; it&apos;s about creating wealth.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;“Wealth consists not in having great possessions, but in having few wants.”&lt;/strong&gt; —Epictetus&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And that&apos;s what I want to seek. While focusing on wealth, I also don&apos;t want to advocate for the other edge; &lt;a href=&quot;https://atozenlife.com/extreme-minimalism/&quot;&gt;extreme minimalism&lt;/a&gt;—only living with a handful of items. I want to live in lagom.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lagom&lt;/strong&gt; is a notion in Swedish culture; the word means not too much, not too little—just enough. A balanced lifestyle is the main idea behind it. The famous Swedish interior design is a lagom. We can see that IKEA items are functional and uncluttered; they are simple yet last for years. Although we can still clutter our apartments with IKEA products, IKEA itself &lt;a href=&quot;https://about.ikea.com/en/sustainability/a-world-without-waste&quot;&gt;wants to reduce waste&lt;/a&gt; in every way it can.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/lagom.jpg&quot; alt=&quot;Benefits of Lagom from the book Lagom by Linnea Dunne&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Marcus Aurelius lived thousands of years ago, and Swedes have lagom for hundreds of years. &lt;strong&gt;When any idea survives the test of time, I try to listen to its wisdom.&lt;/strong&gt; That&apos;s why I have been thinking about my lifestyle, habits of the rich, lagom, and simplicity. Instead of buying a ton of things I &lt;em&gt;think&lt;/em&gt; I need, I want to be mindful and work on building a lifestyle around things that bring joy and happiness instead of materials. I invite you to join me in thinking about your life and what brings you joy. Feel free to send them over to me by replying to this email.&lt;/p&gt;
&lt;p&gt;In the next Mektup, I will write you about building habits, my approach, and how I have been writing every day (the [ritual]/the-power-of-ritualization-rituals-vs-routines/) that brings me joy every day) for the last two years without breaking it.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S.:&lt;/strong&gt; &lt;em&gt;&lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;If you don&apos;t have a problem, does it make you happy?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-48/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-48/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>One Decision That Removes Hundreds of Decisions</title><link>https://candost.blog/decisions-that-remove-other-decisions/</link><guid isPermaLink="true">https://candost.blog/decisions-that-remove-other-decisions/</guid><description>While we can improve our decision-making skills by learning methodologies and mental models and practicing mindfulness, one shortcut helps the most.</description><pubDate>Mon, 02 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h4&gt;While we can improve our decision-making skills by learning methodologies and mental models and practicing mindfulness, one shortcut helps the most&lt;/h4&gt;
&lt;p&gt;Since the industrial revolution, our daily options are multiplied each year. We have tens of alternatives for a loaf of bread and hundreds of possibilities in choosing a drawer for our bedroom. Mass production and the evolution of the transport industry made everything available everywhere.&lt;/p&gt;
&lt;p&gt;Moreover, in the digital age, we started following algorithms&apos; suggestions which tell us what we &lt;em&gt;should&lt;/em&gt; choose from millions of options. But these suggestions are not necessarily the best for us; they only represent the best players in the algorithmic game. Although Amazon offers deals to show what we need, Netflix recommends things we might like, Twitter nudges us to follow trends and people, and Goodreads suggests what we read, they only produce poor proposals that &lt;em&gt;sound like good recommendations&lt;/em&gt;; the decision is still on us—we still have to decide between a certain number of options.&lt;/p&gt;
&lt;p&gt;Unlike many people believe, we&apos;re not good at decision-making because we can&apos;t consider all aspects of every decision all the time. We create wrong assumptions and make fast decisions that only look good in hindsight.&lt;/p&gt;
&lt;p&gt;That&apos;s why we don&apos;t like the last bestseller book we saw in the bookstore or why that cheesecake we ate after dinner with a recommendation from our friend breaks our sleep and makes us unhappy.&lt;/p&gt;
&lt;p&gt;If we&apos;re really bad at decision-making even though algorithms help us to make better ones, what can we do?&lt;/p&gt;
&lt;p&gt;While we can improve our decision-making skills by learning methodologies and mental models and practicing mindfulness, one shortcut helps the most: removing the decision itself. If there is no decision to make, we cannot make a bad decision.&lt;/p&gt;
&lt;p&gt;For example, I decided not to read any book the same year it was published. Whenever I go to a bookstore and look for books to buy, I don&apos;t need to think about if I should buy that new bestseller book or not. I can safely ignore any new book that came out in the last year. That decision alone has already eliminated hundreds of decisions.&lt;/p&gt;
&lt;p&gt;We can convert hundreds of future decisions into one higher-level decision and make only one decision. Instead of making one &lt;em&gt;hasty&lt;/em&gt; decision, we slow down, take our time, and &lt;em&gt;decide once and for all&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This concept is not mine. I learned it from &lt;a href=&quot;https://tim.blog/2020/01/20/one-decision-that-removes-100-decisions/&quot;&gt;Tim Ferriss&lt;/a&gt;, and Tim also learned it from other folks. They used this technique to lighten their decisions and allow themselves to focus their energy on more important areas in their lives. After reading and listening to what they have been saying, I initially found it difficult to generalize my decisions in my life. I felt like my decisions didn&apos;t have any importance overall, and I could make them every day.&lt;/p&gt;
&lt;p&gt;Luckily, Tim gave some guidance that we can use. He used a few questions to help him think through all of his decisions and find his blanket policies:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;In my life, where am I making decisions or saying “yes” out of guilt? Can I create a blanket policy that makes it easier for me to say “no”?&lt;/li&gt;
&lt;li&gt;In what areas am I making a lot of decisions, or sending a lot of communication? Are they concentrated anywhere? Can I create a blanket policy that makes it easier for other people to make those decisions?&lt;/li&gt;
&lt;li&gt;In what areas am I making a lot of decisions, or sending a lot of communication? Are they concentrated anywhere? Can I create a blanket policy that entirely removes the need to make those decisions?&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;I also used these questions along with mine:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In what areas am I making a lot of decisions, or trying to make a lot of decisions but usually make the worst one? Can I make one decision to not even think about these decisions anymore?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The additional question helps me discover the situations where I make many bad calls. For example, when someone offers me some sweets, I often accept them for two reasons: I don&apos;t want to turn a nice gesture down, and I love sweets. While accepting a piece of chocolate creates a social bond between the other person and me, it&apos;s not that great for my health. It doesn&apos;t mean that I won&apos;t eat sweets; I will eat them only whenever I want to. Just for this reason, starting in 2023, I won&apos;t accept anyone offering me some sweets.&lt;/p&gt;
&lt;p&gt;With a similar approach, here are a few decisions I made:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I won&apos;t watch any TV series that algorithms offer me on any platform.&lt;/li&gt;
&lt;li&gt;I limited my following count on Twitter to 100. (The same will apply to Mastodon)&lt;/li&gt;
&lt;li&gt;If any blog, podcast, or newsletter has an RSS feed, I will only subscribe to the RSS feed.&lt;/li&gt;
&lt;li&gt;I only read blog posts that I send to my Remarkable; I won&apos;t read any blog posts whenever I see any on social media. My blog post reading day is only on Sundays.&lt;/li&gt;
&lt;li&gt;I won&apos;t buy books that have been published in the last year.&lt;/li&gt;
&lt;li&gt;I won&apos;t accept any dessert or sweets offers from anyone.&lt;/li&gt;
&lt;li&gt;Every Tuesday, I will go to the gym for strength training.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I know these decisions&apos; impact on my life will not be visible tomorrow. My gain in the short term is saving some brain power, energy, and time to spend on more impactful decisions.&lt;/p&gt;
&lt;p&gt;I&apos;m still looking for higher-level decisions I can make. I&apos;m constantly looking for ways to discover upstream decisions.&lt;/p&gt;
&lt;p&gt;Where can you look upstream? What&apos;s your decision to remove hundreds of decisions?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/decisions-that-remove-other-decisions/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/decisions-that-remove-other-decisions/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Faucets and Bad Ideas</title><link>https://candost.blog/faucets-and-bad-ideas/</link><guid isPermaLink="true">https://candost.blog/faucets-and-bad-ideas/</guid><description>Ed Sheeran uses the pipe with one faucet analogy. If you&apos;re using the pipe for the first time, the first water that comes out is always dirty. You have to push out all the dirt to reach clean water.</description><pubDate>Mon, 02 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was reading &lt;a href=&quot;https://www.julian.com/newsletter&quot;&gt;Julian&apos;s latest monthly newsletter&lt;/a&gt; issue—one of the few newsletters I follow. There, Julian talks about doing things consistently to become great at them by sharing what Ed Sheeran and Neil Gaiman do.&lt;/p&gt;
&lt;p&gt;Ed Sheeran uses the pipe with one faucet analogy. If you&apos;re using the pipe for the first time, the first water that comes out is always dirty. You have to push out all the dirt to reach clean water. Even between clean water, you might see some dirt from time to time. It doesn&apos;t matter; you have to keep pushing it. How long the dirty water will keep coming depends on your proficiency. But eventually, you&apos;ll reach clean water.&lt;/p&gt;
&lt;p&gt;That reminded me of what Adam Grant says in &lt;a href=&quot;https://fs.blog/knowledge-project-podcast/adam-grant/&quot;&gt;The Knowledge Project podcast&apos;s 22nd episode&lt;/a&gt;,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;You have to tolerate a lot of dead ends and false starts in order to have a shot at doing something truly worthwhile.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/faucets-and-bad-ideas/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/faucets-and-bad-ideas/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #47: Techniques and Tools for Energy Management</title><link>https://candost.blog/newsletter/mektup-47/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-47/</guid><description>Do you feel overwhelmed by the distractions at work that don&apos;t let you do your job? How many times did your &apos;focus time blockers&apos; get interrupted? When was the last time did you think about your energy, not only your time?</description><pubDate>Tue, 27 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Do you &lt;em&gt;think&lt;/em&gt; that you have a lot of meetings? Do you &lt;em&gt;feel&lt;/em&gt; overwhelmed by the distractions at work that don&apos;t let you do your job? Maybe you found some tricks to manage your time and move some meetings back and forth to create &quot;focus time&quot; for yourself. But how many times did it also get interrupted? Within all these, when was the last time did you think about your energy, not only your time?&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;/newsletter/mektup-46/&quot;&gt;the last Mektup&lt;/a&gt;, I talked about the challenge of managing time and energy and promised to talk about how to manage energy and time together in more detail.&lt;/p&gt;
&lt;p&gt;Before we start, I want you to &lt;strong&gt;take a deep breath, breathe in from the nose, and breathe out from the mouth.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once more.&lt;/p&gt;
&lt;p&gt;Are you done?&lt;/p&gt;
&lt;p&gt;Good.&lt;/p&gt;
&lt;p&gt;And that&apos;s the first thing I do when I feel my energy depletes. We&apos;re in front of a screen for hours and hours every day. While working or watching Netflix, we forget to breathe. This situation already has a name: &lt;a href=&quot;https://lindastone.net/2014/11/24/are-you-breathing-do-you-have-email-apnea/&quot;&gt;email (or screen) apnea&lt;/a&gt;. The research shows that &lt;strong&gt;we either hold our breath or shallowly breathe in front of a screen&lt;/strong&gt;, which in turn puts our body into panic mode, increasing our stress levels. Reducing our stress level (and increasing our energy) starts with taking a deep breath.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Deep and regular breathing, also referred to as diaphragmatic breathing, helps to quiet the sympathetic nervous system and allows the parasympathetic nervous system — which governs our sense of hunger and satiety, the relaxation response, and many aspects of healthy organ function — to become more dominant.&quot; — Linda Stone&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Breathing is also a fundamental piece of &lt;strong&gt;mindfulness meditation&lt;/strong&gt;. Wherever we breathe out, our muscles relax, and we find a moment of peace. A few years ago, I didn&apos;t believe in all the meditation propaganda. My skepticism and imagining myself as a strong person (&quot;I don&apos;t need this crap to relax.&quot;) pushed me away from this thousands-of-years-old practice. Aaah, my ignorance. 😅 Once I tried it for two weeks, the benefits surfaced. These days, I &lt;strong&gt;practice meditation for 10-15 minutes every morning&lt;/strong&gt; (I use the &lt;a href=&quot;https://www.headspace.com/referral/z6jb3?slug=95d762&amp;amp;audio=false&quot;&gt;Headspace&lt;/a&gt; app). It helps me notice my feelings, thoughts, cravings, and stress. I&apos;m also less judgmental of myself.&lt;/p&gt;
&lt;p&gt;Moreover, it helps me build empathy for others. When they recognize I understand them well, they also build empathy toward me. At work, this improved relationship and trust make it easier to say, &quot;I don&apos;t feel well today; I need to have a walk or leave early.&quot; in our team.&lt;/p&gt;
&lt;p&gt;This trust also helped me &lt;strong&gt;deactivate any notifications about work&lt;/strong&gt;. As we&apos;re always connected to the digital world, notifications have started ruling our lives. Whenever we get a notification, we feel like we have to respond immediately because notifications have replaced social connections. In every message, our brain thinks that the person is in front of us and wants to reply. Imagine a person talking to you in real life, and you don&apos;t say a word for hours. How awkward it would be. Our brain urges us to respond immediately to satisfy social bonds. But we need to separate the digital world&apos;s social connections. There is no need to respond immediately because the conversation is not synchronous like face-to-face; it&apos;s asynchronous. That&apos;s why &lt;strong&gt;I removed Slack and all email applications from my phone, turned off most of my work notifications on my computer, and always set my Slack status to &quot;away.&quot;&lt;/strong&gt; (I also explained these to people I&apos;m working with, so our expectations from each other are aligned.)&lt;/p&gt;
&lt;p&gt;One caveat of having close-to-none notifications required me to manage my meetings more carefully and be punctual. I have at least twelve 1-on-1 meetings per week, and I join other regular and irregular events weekly. &lt;strong&gt;Managing calendars, moving appointments, and declining events to create focused work time actually takes a lot of energy.&lt;/strong&gt; That&apos;s why I started using &lt;a href=&quot;https://reclaim.ai/r/s/X9icd&quot;&gt;Reclaim.ai&lt;/a&gt; and created regular habits (that&apos;s the feature&apos;s name on Reclaim) on my calendar. The beauty of Reclaim is that if I receive a meeting invitation on my auto-scheduled &quot;focus time,&quot; Reclaim moves my focus time to some other time within the week if it can. If it cannot move, it auto-declines the invitation with a nice message I wrote. The bot helps me defend my solo work and focus time without back-and-forth messages on Slack. Here is the example auto-decline message I use.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Hi! I&apos;m sorry, but I cannot commit to your meeting at this time, and this slot is one of the last open slots available for me to prepare for feedback and think about problems I have to solve. Can you find another time to meet? If not, please write me on Slack.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These days, I have auto-scheduled events for lunch (1 h/day), personal weekly retrospective (45 mins/every Friday), dedicated time to think and prepare for feedback (1,5 h/week), time for engineering work (1 h/week), and morning catch-up (15 min/day), and evening close-the-day (30 min/day). I also have a 7-minute &quot;Decompression&quot; time that Reclaim schedules automatically after every meeting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Having these blockers and decompression time on my calendar also helped me to build better relationships&lt;/strong&gt;. I can be fully present and commit to meetings I join because, after every meeting, I have time to clean up my mind, organize my notes, and prepare for the next meeting.&lt;/p&gt;
&lt;p&gt;Before I end this Mektup, I want to mention briefly one but not least thing that helps maintain energy: &lt;strong&gt;exercise&lt;/strong&gt;. I wasn&apos;t regularly exercising for years, and after having burnout a few years back showed me the importance of movement. All the research shows that exercising helps our mental and physical health together. That&apos;s why exercise at least 3-4 times per week. &lt;strong&gt;Walking is one of the best exercises&lt;/strong&gt; we can do, and it&apos;s really easy. If you&apos;re not active, just take walks for 20-30 minutes. If you have no time, have your next one-one-one while walking. I did this even via Zoom. I asked one of my direct reports to temporarily install Zoom on the phone and put on headphones, and take a walk while I did the same. We were in different cities, but we talked while walking. It was one of the best conversations we had.&lt;/p&gt;
&lt;p&gt;Well, that&apos;s it. If you try anything above, let me know how it goes!&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/&quot;&gt;You might also want to try deep walks.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.P.S.&lt;/strong&gt; I&apos;m now on Mastodon &lt;a href=&quot;https://hachiderm.io/@candost&quot;&gt;@candost@hachyderm.io&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-47/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-47/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>DDIA: Understanding How Database Transactions Work</title><link>https://candost.blog/books/understanding-how-database-transactions-work/</link><guid isPermaLink="true">https://candost.blog/books/understanding-how-database-transactions-work/</guid><description>Database transactions are a way to simplify the programming model, and they offer certain safety guarantees for specific errors and fault scenarios.</description><pubDate>Sun, 25 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article is part of my notes from Chapter 7 of &lt;a href=&quot;https://dataintensive.net/&quot;&gt;Designing Data-Intensive Applications by Martin Kleppmann&lt;/a&gt;. You can read other chapter notes as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;Chapter 2: Data Models and Query Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;Chapter 3: Data Storage and Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;Chapter 4: Encoding, Decoding, Schemas, and Data Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Chapter 5: Data Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;Chapter 6: Database Partitioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Chapter 7: Transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;Chapter 8: The Trouble with Distributed Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;Chapter 9: Consistency and Consensus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chapter 10: Batch Processing&lt;/li&gt;
&lt;li&gt;Chapter 11: Stream Processing&lt;/li&gt;
&lt;li&gt;Chapter 12: The Future of Data Systems&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;Developing reliable systems is difficult as many things can go wrong. Transactions are one of the ways to simplify a certain set of issues. In the simplest form, we can define a transaction as a group of certain (read and/or write) operations together and think of this group as (conceptually) a single operation. A transaction is a mechanism that can succeed (commit) or fail (abort, rollback) as a whole; there is no halfway success or failure.&lt;/p&gt;
&lt;p&gt;Transactions are a way to simplify the programming model, and they offer certain safety guarantees for specific errors and fault scenarios. Of course, they are not the solution to everything and have tradeoffs. In this chapter, we will learn these tradeoffs, how to avoid them, and different isolation levels for race conditions that can help increase fault tolerance.&lt;/p&gt;
&lt;h3&gt;ACID (Atomicity, Consistency, Isolation, Durability)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Atomicity:&lt;/strong&gt; An atomic transaction can succeed as a whole or rolls back to the beginning like it never executed anything, undoing changes it had made halfway. If an error occurs in the middle of an atomic transaction, the transaction rolls back to what it had done until that point, so the application can safely retry the same transaction without any side effect.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistency:&lt;/strong&gt; It doesn&apos;t belong to the ACID; it belongs to the application side. It means having consistent data (such as credits and debits must be balanced), but this ACID consistency is the application&apos;s responsibility, not the database&apos;s. An application can use isolation and atomicity features to keep data consistent, but a database cannot provide features to do the application&apos;s role.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isolation:&lt;/strong&gt; Isolation means transactions cannot step on each other&apos;s toes. The database ensures transactions are raining in isolation and have the entire database to them like they are running serially. The database can run transactions in parallel, but the result would be like if they run in series. In reality, full isolation is rarely used due to performance penalties. We&apos;ll talk about weaker isolation levels later in the chapter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Durability:&lt;/strong&gt; The database promises that the data will be kept after a transaction commits, even if there is hardware or any other fault. Usually, transactions are not committed until all durability mechanisms are completed. Durability usually includes write-ahead-log or similar mechanisms.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Single-Object and Multi-Object Operations&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Single-Object Writes:&lt;/strong&gt; Isolation and atomicity can be provided easily. Isolation is provided by using locks on the object, and atomicity is provided by using a log for crash recovery. There are also single-object operations like the INCREMENT function in a database that eliminates read-increase-write, but these are not transactions; they are &lt;em&gt;marketed&lt;/em&gt; as ACID or lightweight transactions. Transactions are mostly understood as mechanisms for multi-object multiple operations grouped as one execution unit.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The need for multi-object transactions:&lt;/strong&gt; As much as we can try, there are scenarios where we need to work with multi-object updating foreign keys in multiple tables, updating data in multiple documents because the data is denormalized, and updating secondary indexes. These things can still be implemented without transactions, but error handling becomes tricky without atomicity and isolation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Handling errors and aborts:&lt;/strong&gt; Transactions provide a key feature that is a fundamental piece in error handling: abort the transaction and retry mechanism. There won&apos;t be a half-finished transaction. As good as it sounds, there are times this doesn&apos;t work, Such as leaderless replication systems. They work with the &quot;best effort&quot; model. The system tries as much as it can but doesn&apos;t undo anything if one part fails. It&apos;s on the application developer to handle.&lt;/p&gt;
&lt;p&gt;Also, there are scenarios where error handling is not perfect:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If a transaction succeeds, but the network fails, the user may think the transaction failed.&lt;/li&gt;
&lt;li&gt;We may get an error due to overload. Retrying the transaction will only make it worse.&lt;/li&gt;
&lt;li&gt;Retry is useless if the error is permanent. Try all you want; it&apos;s not going to change a thing.&lt;/li&gt;
&lt;li&gt;When a transaction has side effects, these side effects can still happen when the transaction aborts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Weak Isolation Levels&lt;/h2&gt;
&lt;p&gt;Concurrency bugs are difficult to find and reproduce. Databases tried implementing transaction isolation to hide these concurrency issues, but it had a cost on performance. The serializability, as if executing transactions one after another like they are not concurrent, is very costly, and databases are not willing to pay the price. That&apos;s why it&apos;s common to use weaker isolation levels instead. Of course, these isolation levels also come with costs and tradeoffs: they are harder to implement and can lead to subtle problems. That&apos;s why we need to understand them well and learn their tradeoffs to not rely on them incautiously.&lt;/p&gt;
&lt;h3&gt;Read Committed Isolation Level&lt;/h3&gt;
&lt;p&gt;Offers two guarantees: no dirty reads, no dirty writes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No dirty reads:&lt;/strong&gt; A transaction cannot see any other transaction&apos;s written data until that other transaction commits. It is useful to prevent any confusion users might have caused by a transaction updating some values but has yet to finish updating others. Another confusion might arise from aborting a transaction mid-way: the user might see any data (written in the first part of the transaction) that will eventually not be there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No-dirty-writes:&lt;/strong&gt; A dirty write happens when a transaction writes a value and another transaction overwrites this value while the first transaction is not yet committed, so the first value is lost. Read committed isolation levels prevent these situations usually by delaying the second write operation until the first transaction is committed or aborted.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementing read committed:&lt;/strong&gt; Databases implement &quot;no dirty writes&quot; by using locks. When a transaction writes a value, it first acquires a lock on the row and holds it until it is committed or aborted. All other transactions that need to write to the same row must wait for a lock to be released.
No-dirty-reads is implemented a bit differently. Instead of locks, databases keep both the old value and the updated value of the row. Until the writing transaction commits (or aborts), the database gives the old value to every read operation. Once the transaction commits, the database switches to the new value.&lt;/p&gt;
&lt;h3&gt;Snapshot Isolation and Repeatable Read&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/designing-data-intensive-applications/No-Snapshot-Isolation.jpg&quot; alt=&quot;Read Skew (no snapshot isolation)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Transaction X reads data from A and B, and transaction Y writes data to A and B (A=2, B=2). After X reads A (A=1), Y updates A (A=2) and B (B=2); now, when X reads B, it will see a new value (B=2). But what it had read from A was an old value (A=1). If X rereads A and B, it will probably see updated values.&lt;/p&gt;
&lt;p&gt;This temporary problem is called &lt;em&gt;read skew&lt;/em&gt;. To prevent read skews, we can use snapshot isolation: a transaction can only see data that has been &lt;em&gt;committed&lt;/em&gt; before the transaction started. The database takes a snapshot of the data version right when the transaction begins and uses that snapshot throughout the transaction instead of using up-to-date data all the time.&lt;/p&gt;
&lt;h4&gt;Implementing Snapshot Isolation&lt;/h4&gt;
&lt;p&gt;While read-committed isolation maintains locks to prevent race conditions, snapshot isolation uses only &lt;em&gt;write locks&lt;/em&gt;: locks resources only when writing. The golden rule of snapshot isolation is that &lt;em&gt;readers never block writers; writers never block readers&lt;/em&gt;. When a transaction reads data, the database takes a snapshot at the beginning and uses that snapshot throughout the entire transaction.&lt;/p&gt;
&lt;p&gt;As each read transaction uses snapshots, the database has to maintain all of them. For that, it uses Multi-Version Concurrency Control (MVCC). When a transaction starts, it creates a new snapshot version.&lt;/p&gt;
&lt;p&gt;If a row needs to be deleted, the database marks these rows with a &lt;em&gt;deleted-by&lt;/em&gt; label and only deletes them (via garbage collection) when it can be sure that no other transaction uses the deleted row.&lt;/p&gt;
&lt;p&gt;Any reading transaction can see edits (write/delete) from other transactions only if they are committed before the reading transaction has started.&lt;/p&gt;
&lt;p&gt;Snapshot isolation is also known as &quot;repeatable read,&quot; but this term is used differently across various databases, so there is no standard.&lt;/p&gt;
&lt;h3&gt;Preventing Lost Updates&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/designing-data-intensive-applications/Lost-Updates.jpg&quot; alt=&quot;Both operations succeed in incrementing A, but we lose one of them due to the read-modify-write cycle&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We may lose an update when two concurrent transactions try to update the same data. The lost update usually occurs when a transaction updates data right before another transaction&apos;s update. Think about incrementing a value. If one transaction takes a long time and we use a read-modify-write operation to increment a value, two increment operations update concurrently, and we lose one increment. There are certain strategies to prevent lost updates from happening:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Atomic write operations:&lt;/strong&gt; Databases can provide certain operations atomically (such as increasing a counter) instead of using a read-modify-write cycle. These atomic operations usually happen with the database taking an exclusive lock on the object.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explicit locking:&lt;/strong&gt; Transactions can take an explicit lock on the object to prevent any other transactions (including reads) from accessing the object. All other transactions must wait for the read-modify-write cycle of the first transaction to end.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatically detecting lost updates:&lt;/strong&gt; The first two options force transactions to run sequentially. Another way is allowing them to run in parallel. When the transaction manager detects a lost update, it can force the transaction to retry its read-modify-write cycle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compare-and-set:&lt;/strong&gt; In databases that don&apos;t provide transactions, we can see this method. When data needs to be modified, the database allows it only if the data is not changed since the operation last read the data. If changed, it restarts the read-modify-write cycle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conflict resolution and replication:&lt;/strong&gt; Lost updates take another form in replicated databases. Especially in multi-leader and leaderless databases, it&apos;s difficult because they distribute data asynchronously. The main strategy used in these systems is to allow conflicts to happen and use application code or special data structures to resolve them. Atomic operations work well if they are commutative (regardless of order, they give the same result).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Last-Write-Wins (LWW)&lt;/a&gt; (&lt;a href=&quot;/books/data-replication-in-distributed-systems/#detecting-concurrent-writes&quot;&gt;LWW&lt;/a&gt;) method doesn&apos;t prevent lost updates, yet, it is the default in many databases.&lt;/p&gt;
&lt;h3&gt;Write Skews and Phantom&lt;/h3&gt;
&lt;p&gt;Write skews are similar to lost updates, but there is a subtle difference. While the Lost Updates happen during writing on the same object, write skews happen on different objects causing unwanted states and are more difficult to detect. When two transactions concurrently read some data and update other data according to what they read, write skews occur.&lt;/p&gt;
&lt;p&gt;A good example is a doctor on-call system. Think about a hospital on-call system where one on-call doctor is required at any time. When there are two doctors on-call, and both want to go off-call simultaneously, what happens? If the software is built without write skews in mind, each doctor checks if another doctor is on-call and updates its data to go off-call.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/designing-data-intensive-applications/Write-Skews.jpg&quot; alt=&quot;Two doctors want to go off-call simultaneously&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Snapshot isolation and unsafe design make write skews possible. If we run these transactions sequentially, the second doctor won&apos;t be able to go off-call.&lt;/p&gt;
&lt;p&gt;If a write operation in a transaction changes the result of a search query in another transaction (going off-call impacts the search of the query of how many doctors are currently on-call), it is called a &lt;em&gt;phantom&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;To solve phantoms, we can put a lock on rows that the search query returns, so another transaction won&apos;t be able to read these rows. But it doesn&apos;t solve situations when the transaction checks for the absence of rows (if there is no doctor on-call) and takes action accordingly. We can&apos;t put a lock on non-existing rows.&lt;/p&gt;
&lt;p&gt;We can use an approach called &lt;em&gt;materializing conflicts&lt;/em&gt;: creating rows for all possible scenarios in that a phantom occurs. One example is calendar events for meeting rooms. We can create 5-minute empty meeting slots for each room by default and lock them whenever someone searches them. However, this approach is error-prone, hard to figure out, and impacts the application data model. So, it should be the last resort.&lt;/p&gt;
&lt;h2&gt;Serializability&lt;/h2&gt;
&lt;p&gt;Serializable isolation level guarantees that the transactions result like they run one after another, serially, even though they run parallel. This way database prevents all race conditions.&lt;/p&gt;
&lt;h3&gt;Actual Serial Execution&lt;/h3&gt;
&lt;p&gt;Executing transactions one by one (serially) is not new, but it was abandoned for a while. It came back because RAMs became cheap enough and had more capacity that allowed putting all the data a transaction needs, so disk I/O operations (slow operation) are eliminated. The second reason for the comeback is that OLTP transactions are short, don&apos;t require a huge piece of data to be loaded to RAM (compared to OLAP), and are often a few reads and writes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stored Procedures:&lt;/strong&gt; When we think about applications nowadays, they require multiple multistep transactions and run some logical operations in between. When there is a constant back and forth between a database and an application, the system spends a lot of time in network connections. Think about the doctor&apos;s on-call scenario we talked about before: if the application needs to have an if clause in between two operations (if the number of on-call doctors is greater than one, get an on-call doctor and set on-call to false for that doctor), we can move this if clause and two operations into a stored procedure. The system can run the procedure in one go without going back and forth between the application and the database. This way, systems with a single thread can execute much faster without blocking other transactions. That&apos;s why single-threaded serial transaction processing systems don&apos;t allow multi-statement transactions. Statements must be submitted in a stored procedure.&lt;/p&gt;
&lt;p&gt;Of course, this approach has pros and cons, like everything else. The cons of a stored procedure are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each database vendor has their own language&lt;/li&gt;
&lt;li&gt;The languages are often archaic. Compared to modern languages, they lack many basic language features. But some database vendors use modern programming languages these days.&lt;/li&gt;
&lt;li&gt;The libraries and tools around them are limited, and monitoring is not really possible. So, the developer experience is not good. It&apos;s also hard to test and debug.&lt;/li&gt;
&lt;li&gt;A database is much more performance sensitive than an application. One badly written stored procedure can slow down the whole system (because it is single-threaded).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With in-memory data and stored procedures, the throughput is quite fast on single-threaded transactions. Some vendors use stored procedures for replication: instead of replicating data, they run procedures in each replica (with one condition: it has to be deterministic—produce the same results regardless of where they run).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;Partitioning&lt;/a&gt;&lt;/strong&gt;: With a single thread, we can actually do more. If we can partition the data well, we can assign a separate CPU to each partition and run transactions on partitions in parallel. So, each partition works with single-threaded transactions, but the whole database runs transactions in parallel. Meanwhile, there will be transactions that need to run in multiple partitions. These operations require locks on data. Databases provide support for this operation, but often, databases limit the number of transactions that can run in parallel over multiple partitions. Ultimately, it will depend on the data structure and &lt;a href=&quot;/books/database-partitioning/&quot;&gt;partitioning strategy&lt;/a&gt;. If we pick the right structure and partitioning, we can eliminate most of these costly operations.&lt;/p&gt;
&lt;h3&gt;Two-Phase Locking (2PL)&lt;/h3&gt;
&lt;p&gt;2PL is a more strict isolation level than no-dirty-writes. It uses locks but with a difference. The writer-locks block all other transactions. Contrary to writers not blocking readers in no dirty writes, 2PL blocks readers too.&lt;/p&gt;
&lt;p&gt;The 2PL mechanism has two locks: shared mode and exclusive mode. There can be only one exclusive lock on the object. Any write operation must acquire an exclusive lock on the object first. If there is any other lock on the object (shared or exclusive), the write operation must wait for other locking transactions to complete. Once the write operation acquires an exclusive lock on an object, this time, all other transactions must wait. If any transaction already has a shared lock, it can upgrade its lock to exclusive. Upgrading has the same mechanism as acquiring a new lock.&lt;/p&gt;
&lt;p&gt;As many locks are in place, deadlocks happen (transaction A waits for B to complete while B is waiting for A to complete). Databases automatically detect deadlocks and abort one of the transactions. The application must retry the aborted transaction.&lt;/p&gt;
&lt;p&gt;The name two-phase lock comes from any transaction acquiring the lock (first phase) and releasing the lock (second phase).&lt;/p&gt;
&lt;p&gt;The downside of 2PL is getting hurt in the performance because of locks. That&apos;s one of the reasons for 2PL has not been widely used since the 70s. Acquiring and releasing locks also significantly worsen transaction throughput and query response times. Moreover, database latency is not predictable. Who locks when and for how long depends on the data and access patterns; one transaction may block all others.&lt;/p&gt;
&lt;p&gt;How do we handle Phantom skews (one transaction causing another transaction&apos;s search conditions to change) in 2PL? There is a concept called &lt;strong&gt;predicate lock&lt;/strong&gt;. Instead of acquiring a blocking lock on the object, we acquire a predicate lock on all the possible results that can return from the search query. If any data that will be written later fits into that search query, it also gets the lock. If there is any exclusive lock on the data, the transaction must wait before acquiring a predicate lock. Predicate lock prevents any other transaction from writing to that data. The key idea is that predicate lock applies to objects that the database doesn&apos;t yet have.&lt;/p&gt;
&lt;p&gt;Most databases use index-range locks instead of predicate locks. The mechanism is similar, with a subtle difference. Instead of locking all search results, the transaction expands the predicate and puts a lock on a range of indexes that approximate the predicate. For example, if the predicate looks for meeting rooms between 13:00-14:00, the index-range locks can be put on all rooms between 13:00-14:00. If the predicate looks for a meeting in a specific room, the index-range can put a lock on the meeting room for a few days. The index-range lock is a greater set of predicate locks since we&apos;re putting a shared lock in a range of indexes. If a shared lock is already on data, the predicate locks have to wait for the shared lock to release.&lt;/p&gt;
&lt;h3&gt;Serializable Snapshot Isolation (SSI)&lt;/h3&gt;
&lt;p&gt;2PL is more of a pessimistic locking mechanism: it uses locks in places where conflicts or race conditions may happen. It operates with the assumption that if something can go wrong, it will go wrong, so it&apos;s better to prevent it by using locks.&lt;/p&gt;
&lt;p&gt;Serializable Snapshot Isolation (SSI) chooses the other way and uses an optimistic approach. It assumes that everything will be all right. Until something goes wrong, there is no need to take precautions. When it&apos;s obvious that something is wrong, then it is time to act. So, how do we implement that?&lt;/p&gt;
&lt;p&gt;Similar to snapshot isolation, SSI uses snapshot isolation for reading transactions. However, when a transaction writes data according to the result of a read operation and commits, the system checks other committed transactions since the transaction started to see if anything has changed for that object(s). If it did, the system aborts the transaction because it&apos;s not safe to commit anymore.&lt;/p&gt;
&lt;p&gt;Overall there are two cases to consider while detecting stale data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Uncommitted write occurred before read (stale MVCC object version):&lt;/strong&gt; Serializable Snapshot Isolation works with MVCC (Multi-version Concurrency Control) to track snapshots. We ignored uncommitted writes in previous isolation levels while executing a read transaction. Now, if a write operation is committed &lt;em&gt;before&lt;/em&gt; a read transaction commits, the read transaction that uses the same data will be aborted. The database keeps track of ignored transactions when taking a snapshot. If any other transaction accesses or uses data used by one of the ignored transactions, it aborts all other transactions when the ignored transaction is committed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data is modified after it has been read:&lt;/strong&gt; The system temporarily keeps the information about who read the data until any transaction and all concurrent ones are complete. With this information, a transaction informs other concurrent transactions that the data they had read is not accurate anymore. If one of the concurrent transactions commits, all the others must abort to prevent losing data. As there are a lot of aborts and retries, this implementation has a performance drawback. Aborts and retries happen more if the transactions are long. Therefore, SSI requires transactions to be short. On the other hand, as SSI doesn&apos;t block transactions, it&apos;s better performant than 2PL. Also, SSI is not dependent on a single CPU, like serial execution. It can leverage multi-CPUs and multi-machines. One overhead, though, is keeping track of extra information about transactions&apos; read and write. This info can be granular or in detail. The database implementations decide its granularity. More granular is faster but error-prone; more detailed is slower but more precise, resulting in fewer transactions being aborted.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/understanding-how-database-transactions-work/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/understanding-how-database-transactions-work/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Team Topologies Book Review, Summary, and Notes</title><link>https://candost.blog/books/team-topologies-book-review-summary-and-notes/</link><guid isPermaLink="true">https://candost.blog/books/team-topologies-book-review-summary-and-notes/</guid><description>Team Topologies book is driven by Conway&apos;s Law and Inverse Conway Maneuver to help us understand how teams collaborate and communicate.</description><pubDate>Thu, 22 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How Strongly I Recommend:&lt;/strong&gt; 9/10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How likely I will gift it to somebody:&lt;/strong&gt; 8/10&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;The Review&lt;/h2&gt;
&lt;p&gt;The book is short but very dense. It took me a while to finish it because I had to stop and think about the practical applications of concepts.&lt;/p&gt;
&lt;p&gt;The four fundamental team topologies and interaction modes help us understand how we want to design our teams. For example, if I&apos;m leading a platform team, I must take action to reduce synchronous communication (meetings, face-to-face, etc.) between my team and our consumer teams. Because these direct communication lines will result in bad documentation and developer experience of the platform we develop. If we rely on meetings to explain how to use the APIs, we will never set time aside to improve documentation.&lt;/p&gt;
&lt;p&gt;The main ideas the book is driven from are Conway&apos;s Law and Inverse Conway Maneuver. These two helped me to grasp how system designs work and how we can achieve our target team structure and system design. Although systems, teams, and business should go hand in hand, it rarely happens. Often technical design cannot follow structural changes in the organization. We often do re-organizations to adapt to changing business environments. But it&apos;s difficult to change system design as quickly as organizational design. Having frameworks like team topologies help to find shared language and mindful action while redesigning the organization.&lt;/p&gt;
&lt;h3&gt;Why should you read it? (Why I recommend it)&lt;/h3&gt;
&lt;p&gt;I recommend this book because it taught me a framework I could use daily while collaborating with other teams. After reading the book, I have a better understanding of how to structure my team and how to collaborate with other teams. If your team collaborates with others on a more ad-hoc basis and without any structure, you should read this book.&lt;/p&gt;
&lt;h2&gt;The Summary &amp;amp; Chapter Notes&lt;/h2&gt;
&lt;h3&gt;The Problem with Org Charts&lt;/h3&gt;
&lt;p&gt;The static nature of the organizational chart prevents organizations from clearly seeing their workstreams and communication lines. The problems grow as the organization becomes more org-chart-driven. As organizational charts rarely reflect which collaborations are needed to get things done, leaders often do reorganizations to meet changing business needs. These reorgs have significant consequences because they avert teams from getting to know each other and working efficiently.&lt;/p&gt;
&lt;p&gt;When organizations rely on org charts to align with each other to drive multiple projects, teams&apos; accountability doesn&apos;t reflect reality. In cross-team projects, it becomes unclear who is accountable for what. In the end, reorganizations only look good on paper, like org charts.&lt;/p&gt;
&lt;h4&gt;The Conway&apos;s Law&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;The organizations design systems in a way that reflects and is constrained by their communication structures.&quot; — Melvin E. Conway&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This law has held true since 1967.&lt;/p&gt;
&lt;p&gt;Software development methodologies have evolved over the years. Earlier, the software architects were handing over architecture blueprints to the teams. That was because the software architect was not part of the team, and the responsibility was not separated among certain people.&lt;/p&gt;
&lt;p&gt;After many stages, microservices architecture emerged and reversed Conway&apos;s law. Microservices architecture enabled organizations to design teams in a way that they plan their target architecture instead of designing the architecture reflecting team structures. This is called Inverse Conway Maneuver.&lt;/p&gt;
&lt;h3&gt;Conway&apos;s Law in Practice&lt;/h3&gt;
&lt;p&gt;For example, having a separate database administrator (DBA) from teams will create software design with one big database. If we want teams to own their portion of the database, we must embed this competency in the team. Once the database ownership belongs to the team, they separate their part of the big database into its own entity they can maintain. That&apos;s how Conway&apos;s law works in practice.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Organization design requires technical expertise:&lt;/strong&gt; Anyone who makes decisions about organizational structure should at least understand the basics of &lt;a href=&quot;/how-to-approach-software-architecture-design/&quot;&gt;software architecture design&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Everyone does not need to communicate&lt;/strong&gt;: If we want to reduce the coupling between services, we need to make these teams difficult to communicate with each other. When communication is too easy and people (unnecessarily) over-communicate, it reflects on the system design. Although communication is often promoted as a good practice, we need to be mindful if we want this to reflect on our systems. Sometimes keeping communication at a minimum is better if we want the software systems highly separated.&lt;/p&gt;
&lt;h3&gt;Team-first Thinking&lt;/h3&gt;
&lt;p&gt;Defining a team API (similar to service APIs) is a good strategy for designing the team&apos;s external communication.&lt;/p&gt;
&lt;p&gt;The team API includes the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Code&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Versioning&lt;/li&gt;
&lt;li&gt;Principles &amp;amp; Practices&lt;/li&gt;
&lt;li&gt;Work Information (Roadmap)&lt;/li&gt;
&lt;li&gt;Communication&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Everybody who needs to talk to the team should be aware of that and can use that API. Once the API is defined, the team can constrain the stakeholders to use these frameworks when communicating.&lt;/p&gt;
&lt;h3&gt;Static Team Topologies&lt;/h3&gt;
&lt;p&gt;There are two team anti-patterns:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ad-hoc team design: Designing a team to solve a problem at a certain point and, after solving the problem, leaving a few people behind to take care of the maintenance.&lt;/li&gt;
&lt;li&gt;Shuffling team members: &quot;Temporary Task Forces&quot; is actually an anti-pattern. When we mix the teams, it becomes challenging to maintain the systems because an engineer can behave differently in Team A than in B.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Instead of falling into these anti-patterns, we should consider the team&apos;s maturity on the technical and cultural front, internal and inter-team dependencies, organization size, and creating or breaking down silos.&lt;/p&gt;
&lt;p&gt;We must adopt and use team topology (team structure) based on our context and consider the long-term instead of solving a problem for the moment.&lt;/p&gt;
&lt;h3&gt;The Four Fundamental Team Topologies&lt;/h3&gt;
&lt;p&gt;Each topology has different demands on the technical and cultural front. Specific topologies (e.g., end-to-end independent teams) require maturity in tech and mature culture to work. They demand consistent monitoring of dependencies to determine if a new dependence occurs. Therefore, we must understand our talent for each topology and team people up according to their knowledge, culture, and growth plans.&lt;/p&gt;
&lt;p&gt;The book defines four fundamental team topologies that can be used in an organization.&lt;/p&gt;
&lt;h4&gt;Stream-Aligned Teams&lt;/h4&gt;
&lt;p&gt;Stream-aligned teams are working on a single stream of work. They are empowered to work end-to-end with their capabilities and don&apos;t need to hand their work to another team. They aim to deliver customer value quickly and iteratively and learn and adapt according to their learnings. The other teams help stream-aligned teams to offload some work (e.g., platform and enabling teams we mention below), but most teams should be stream-aligned in an organization.&lt;/p&gt;
&lt;p&gt;That&apos;s why this team type has to have all capabilities within it. &lt;a href=&quot;https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/two-pizza-teams.html&quot;&gt;Amazon&apos;s two-pizza teams&lt;/a&gt; are an excellent example of the size of the team.&lt;/p&gt;
&lt;p&gt;Stream-aligned teams should&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deliver steadily&lt;/li&gt;
&lt;li&gt;Course correct based on feedback they receive from customers&lt;/li&gt;
&lt;li&gt;Use an experimental approach to learn and adapt&lt;/li&gt;
&lt;li&gt;Does not hand work off to others&lt;/li&gt;
&lt;li&gt;Must have time and space to work on tech debt that accumulates from fast delivery and changing requirements&lt;/li&gt;
&lt;li&gt;Have good collaboration between other stream-aligned teams (not to hand off part of work but to deliver steadily)&lt;/li&gt;
&lt;li&gt;Team members must have autonomy, mastery, and purpose—they must be engaged in their work.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Enabling Teams&lt;/h4&gt;
&lt;p&gt;Enabling teams aim to take some pressure off of stream-aligned teams. They focus on filling knowledge gaps. As stream-aligned teams concentrate on delivery, they tend to have little-to-no time for research, reading, learning, and practicing new skills. Enabling teams join stream-aligned teams to fill these gaps. They do not execute on these gaps but rather guide the team and share knowledge on specific topics. As enabling team consists of experts in certain topics, they focus on a problem the stream-aligned team has no time to research. The enabling team temporarily joins the team and shares their knowledge via pairing and workshops and leaves. Enabling teams act like a &quot;Technical Consulting Team.&quot; Their pure focus is on helping the stream-aligned team to deliver faster with fewer problems.&lt;/p&gt;
&lt;h4&gt;Complicated-Subsystem Teams&lt;/h4&gt;
&lt;p&gt;Complicated subsystem teams are formed to reduce the burden and load from stream-aligned teams. These teams focus on a specific and complicated subsystem used by stream-aligned systems and heavily require specialist knowledge. Complicated-subsystem team members have to be experts on their topics. For example, a real-time trade reconciliation algorithm or a face-recognition engine are complicated systems that stream-aligned teams don&apos;t need to learn end-to-end.&lt;/p&gt;
&lt;p&gt;In organizations, there should be only a few teams like that, not more. These teams should collaborate closely with stream-aligned teams in the beginning and reduce interaction later on. Also, this team should correctly prioritize and deliver high-quality work according to the stream-aligned team&apos;s needs.&lt;/p&gt;
&lt;h4&gt;Platform Teams&lt;/h4&gt;
&lt;p&gt;Platform teams empower stream-aligned teams to deliver work with substantial autonomy. They extract a complicated part of the domain and convert it into a simple self-service platform where stream-aligned teams can consume without understanding every single detail of the sub-domain. Payment platforms like Stripe and Adyen are good examples; they hide the complexity of payments by providing a platform to their customers. Customers don&apos;t need to know the payments, billing, and tax details.&lt;/p&gt;
&lt;p&gt;Ease of use is fundamental to any platform. That&apos;s why platform teams must treat their services as real products and make them reliable, usable, and fit for the purpose. Platforms should be developed the same regardless of serving external or internal users.&lt;/p&gt;
&lt;p&gt;Product teams are expected to work and deliver a small number of services with high quality. Platform teams should strongly collaborate with stream-aligned teams and understand their needs. They should also work with small iterations, experimentation, and feedback. They should have a strong focus on usability and reliability. They should regularly assess if the services fit the purpose or not.&lt;/p&gt;
&lt;p&gt;The platform team should understand the adaption of the platform will be slow.&lt;/p&gt;
&lt;p&gt;The platform always needs to serve its consuming applications and services&apos; needs, not the other way around. A good platform should offer consumers practical and straightforward APIs, templates, standards, and best practices. The platform should be as thin as possible and not dominate the discourse. It aims to reduce the cognitive load of consumer teams and simplify other developers&apos; lives. It has to be consistent and must have well-chosen constraints and a good onboarding experience.&lt;/p&gt;
&lt;p&gt;Organizations should treat the platform as a live production system with downtime planned/scheduled and use product and service management techniques.&lt;/p&gt;
&lt;h3&gt;Team-First Boundaries&lt;/h3&gt;
&lt;p&gt;How we shape our teams is important when talking about monolithic applications. There are multiple hidden monoliths that define the organizational structure (&lt;a href=&quot;/hidden-monoliths-affect-the-software-design/&quot;&gt;I wrote about hidden monoliths here&lt;/a&gt;). These monoliths are not only software but also physical offices, deployment pipelines, tech standardization, build and release strategies, and software development strategies such as monolithic databases or applications.&lt;/p&gt;
&lt;h3&gt;Team Interaction Modes&lt;/h3&gt;
&lt;p&gt;After defining the topology of the team, we cannot expect that it will stay as it is. Just saying a platform team doesn&apos;t make the team a platform team and remain as it is forever. Team interactions and working styles change along with business needs, market, technology, and personnel needs. The Team Topologies framework defines three team interaction modes between two teams to collaborate effectively and deliver results. These three are Collaboration, X-as-a-service, and Facilitation. To achieve the best results, we define (and redefine) these interaction modes between teams during their lifecycle. Clearly defining these interactions helps teams focus, deliver effectively, determine service boundaries well and stay sustainable.&lt;/p&gt;
&lt;h4&gt;Collaboration Team Interaction Mode&lt;/h4&gt;
&lt;p&gt;This interaction mode is suited for rapid discovery and innovation. Two teams can collaborate in two ways: each team works on its expertise area and works with the other team on a small set of things, or we merge two teams. Both styles demand good collaboration skills, alignment, and the ability to work with other teams.&lt;/p&gt;
&lt;p&gt;Two teams must take responsibility for the work &lt;em&gt;together&lt;/em&gt; and build trust. Because close collaboration blurs the responsibility lines, teams must work well together in a trust-based environment.&lt;/p&gt;
&lt;p&gt;There will definitely be communication overhead that will cost the organization some efficiency. Therefore, instead of measuring efficiency, the organization should focus on what it gains from rapid discovery and innovation.&lt;/p&gt;
&lt;p&gt;There is one restriction for this collaboration mode: one team should have only one other team to collaborate with, not more.&lt;/p&gt;
&lt;h4&gt;X-As-A-Service Team Interaction Mode&lt;/h4&gt;
&lt;p&gt;Once the discovery is completed by collaboration interaction, it makes sense for one team to own low-level details and provide APIs, components, a platform, or tools to other teams. The goal of separating is to reduce the cognitive load on delivery teams and make the ownership clear.&lt;/p&gt;
&lt;p&gt;For this interaction mode to work, boundaries should be well-defined. The X-as-a-service team should have service management capabilities (product management, versioning, etc.) and work on user and developer experience to improve.&lt;/p&gt;
&lt;p&gt;The organizational goal in creating an X-as-a-service mode is to reduce interactions between two teams. The delivery team should be able to move quickly by using the service without interacting with the service team. The service team must keep the service viable and not just build features because other teams&apos; asked so but plan features deliberately for further uses and generalization.&lt;/p&gt;
&lt;h4&gt;Facilitating Team Interaction Mode&lt;/h4&gt;
&lt;p&gt;In facilitating team interaction mode, facilitating team does not build and run the software. The facilitating team coaches or guides stream-aligned teams on a topic they struggle with. Facilitating teams identifies impediments between teams and throughout the organization. As this team often guides others, team members are usually experts and work toward increasing other teams&apos; effectiveness and discovering and removing common problems.&lt;/p&gt;
&lt;h3&gt;Expected Team Behaviors for Each Team Interaction Mode&lt;/h3&gt;
&lt;p&gt;The interaction modes define the expected team behaviors. For example, the collaboration mode demands mutual respect and high interaction while knowing some activities will take longer due to communication overhead. In X-as-a-service mode, the team behavior should shape around providing the best user experience (UX) and/or developer experience (DX), so focusing on experience becomes essential. In facilitating mode, the teams should be open to help and be helped. The team getting help should be open to hearing suggestions and accept the help because the facilitator team has probably seen similar issues before and know better solutions.&lt;/p&gt;
&lt;p&gt;To reduce uncertainty and enhance flow, we can explicitly use team interaction modes. For example, we can use the collaboration mode between two teams to discover possible X-as-a-service integrations.&lt;/p&gt;
&lt;p&gt;We can also temporarily change the team interaction mode to help a team grow and enhance empathy. When we do this, we have to do it deliberately and with full consent from people. Otherwise, the team who gets help can reject and ignore the other team&apos;s suggestions.&lt;/p&gt;
&lt;p&gt;We can also use team interaction modes to determine the problems between teams and systems.&lt;/p&gt;
&lt;h3&gt;Using Team Topologies To Design the Organization To Design The Systems&lt;/h3&gt;
&lt;p&gt;Knowing team interaction modes and different team types allows us to design the organization and systems together. Learning about team interaction modes helps us use &lt;a href=&quot;https://www.thoughtworks.com/en-de/radar/techniques/inverse-conway-maneuver&quot;&gt;Inverse Conway Maneuver&lt;/a&gt; and shape teams as we create systems design.&lt;/p&gt;
&lt;p&gt;During the initial organization design, there will be friction between teams and systems. We cannot expect software design to emerge just by designing the teams. That&apos;s where temporary roles like &lt;a href=&quot;https://candost.substack.com/p/19-software-architect-role-and-archicture&quot;&gt;software architect&lt;/a&gt; can be influential. Architects are expected to be technical and have social, product, strategy, and people management skills to drive these organizational changes.&lt;/p&gt;
&lt;h3&gt;Evolve Team Structures with Organizational Sensing&lt;/h3&gt;
&lt;p&gt;When designing teams and organizations, we also must design the &lt;em&gt;design rules&lt;/em&gt;. The business and its needs will change. Our teams need to adjust themselves to these changes. So, we need to think about when to use which collaboration mode and when not to have any communication between the teams. If our organization needs innovation, we can start by using collaboration mode. Later, if we decide to establish the invention as a product, we can move to X-as-a-service or two stream-aligned teams taking parts of the product. Defining these design rules are as crucial as designing teams.&lt;/p&gt;
&lt;p&gt;Organizations should have senses to understand their performance and use these senses to learn about their environment and problems. Much like any living organism needs senses to respond to changes in a dynamic environment, organizations can use communication lines between teams, organizations, and users, and also between internal and external stakeholders to understand and adapt to changes. Organizations can also use operations teams (like IT Operations and DevOps) to provide feedback to other teams about problems in operations. To better align feedback, organizations need to have operations teams embedded in development teams instead of having maintenance teams which are usually filled with low-cost labor to lower the costs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Software is less of a &quot;product for&quot; and more of an &quot;ongoing conversation with&quot; users. To make this ongoing conversation effective and successful, organizations need a &quot;continuity of care&quot; for their software.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/team-topologies-book-review-summary-and-notes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Genghis Khan on Friendship</title><link>https://candost.blog/notes/52d/</link><guid isPermaLink="true">https://candost.blog/notes/52d/</guid><pubDate>Mon, 19 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The interesting side of Genghis Khan is how he destroyed his family and tribe relationships. In his childhood, building relationships based on trust and choice was more important than having kinship. He killed his brother because his brother mistreated him. He took Temüjin&apos;s (Genghis Khan&apos;s birth name) prey for himself just because he was an elder and the leader of the family. This was the last drop for Temüjin to kill him after a lot of unfairness and rivalry between them. The importance of companionship was significant to him, and he trusted his friend (blood friend) and exchanged gifts, which was very rare at that time. That made me think about my kin and friends. Friendships are by choice; blood relations do not drive them. That&apos;s why they are often stronger. For me, my friendships were always more substantial than my blood relationship. That was my choice; it&apos;s not forced upon me. That form of love is always more robust, and we can also see the results in betrayals: it&apos;s often more psychologically devastating to have a friend betray you than a family member betrayal. We frequently forgive family members but rarely show forgiveness to friends.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Genghis_Khan_and_the_Making_of_the_Modern_World&quot;&gt;Genghis Khan and the Making of the Modern World by Jack Weatherford&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/52d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/52d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Power of Ritualization: Rituals vs. Routines</title><link>https://candost.blog/the-power-of-ritualization-rituals-vs-routines/</link><guid isPermaLink="true">https://candost.blog/the-power-of-ritualization-rituals-vs-routines/</guid><description>We all have daily routines: some of them are tedious, and some of them are delightful. But we&apos;re not destined to live ordinary and miserable. Ritualizing gives a sense of satisfaction to the most tedious and regular activities.</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For years, I&apos;ve been planning my days hour by hour, trying to build habits that last for longer periods, not just for a few months. &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;In a life without goals&lt;/a&gt;, &lt;a href=&quot;/goals-and-existence/&quot;&gt;habits&lt;/a&gt; are the fundamental stones, and opening some space for them is crucial to not falling into an aimless life.&lt;/p&gt;
&lt;p&gt;One of the results of these habits (writing every day) is this blog. This blog is the product that came out from me sitting down and writing for at least thirty minutes every morning. It was difficult to start writing at first, but these days, I just grab my pen (or sometimes keyboard) and continue writing or editing my previous drafts. Once I got used to the habit, it became a routine.&lt;/p&gt;
&lt;p&gt;Actually, many of my habits became routines; I planned them carefully and adjusted their times and cadence according to other events happening in my life. Doing something every single day may sound quite boring to many people and also can be challenging. When someone asks me how my life is going, I can mostly say, &quot;It&apos;s the same since you last asked.&quot; Sometimes there might be some news; sometimes, nothing interesting happens. At least, nothing interesting for them, not for me. Life is actually not boring, even if I do the same things every day. Because I don&apos;t have routines, I have &lt;em&gt;rituals&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;ve been using Headspace for a few years on and off to learn meditation and to train my mind. In one of the meditations, the guide talked about rituals. That was an enlightening approach that helped me understand why I enjoyed doing a lot of activities every day while others found them loathing.&lt;/p&gt;
&lt;p&gt;When we build a &lt;em&gt;ritual&lt;/em&gt; around a routine, it ramps up the routine, much like the weekend hikes we used to do as a family in my childhood. Or, like cooking turkey in our family&apos;s new year&apos;s celebrations. They both had a set of activities consistently done in a certain order every time. When we went on weekend hikes, we always searched for wild fruits and always ended with a barbeque next to a small river. When we cooked turkey for the celebration, preparations started a few days ago, and we always had my uncles as guests in our apartment. We didn&apos;t only go for a hike or cook turkey alone; we consistently built activities that made these experiences delightful.&lt;/p&gt;
&lt;p&gt;Ritualizing layers meanings around activities. It gives a sense of satisfaction to the most tedious and regular activities. Think about a family dinner on a religious day like Christmas or Ramadan. These dinners have certain rituals around them that have been done every year. They are not just dinners where everybody is present. They have been ritualized with multiple layers around them.&lt;/p&gt;
&lt;p&gt;I&apos;ve been adopting this ritualization idea in my life for a while. One of my daily rituals after waking up is grinding a coffee, setting up the coffee machine, meditating for ten minutes while the coffee is brewing, and drinking that coffee. Drinking a cup of coffee is a ceremony, not an activity to wake me up. Certain and consistent activities lead to taking the first sip—measuring the weight of beans, manually grinding coffee at hand instead of using a machine, adjusting the strongness of the brew depending on my day and mood, and then meditating in silence at 5:30 in the morning. The very last moment of this series of events is actually enjoying the coffee in complete silence. For me, reaching the first sip of coffee demands building up mindfulness. I have huge respect for the people who bring these coffees to my cup, and I feel like that&apos;s one of the things I can do to honor them.&lt;/p&gt;
&lt;p&gt;Rafael Nadal, a world champion tennis player, is known for his ritualistic habits in the game. He arranges his water bottles carefully, never steps on the lines while walking in the court, and always jumps during the coin toss. He says that his activities are not superstitious. When he serves a ball, he adds something from himself. He individualizes every single move. By doing so, he focuses on the game and enjoys every moment—even the most boring parts, such as drinking water.&lt;/p&gt;
&lt;p&gt;Sometimes, it isn&apos;t easy to individualize each activity and make them joyful and ceremonial. For example, I started reading books at university. Building the reading habit took me a lot of time. That&apos;s when I realized that I was reading physically low-quality books—the print material of the books was horrible, hence reading was not fun at all. Once I recognized this, I decided to find books with better print. These days, I always opt for hardcover prints instead of paperback if it&apos;s available. Reading from hardcover books makes reading more pleasant. If the book has a good cover design, that becomes a cherry on top.&lt;/p&gt;
&lt;p&gt;A well-designed item nudges me to use it. When I pick up a well-designed book from the shelf, the excitement encourages me to fulfill the book&apos;s purpose: to be read. When it&apos;s a beautifully designed book, that purpose shows itself instead of me searching for it.&lt;/p&gt;
&lt;p&gt;The visualization helps keep rituals consistent. If I want to keep going to the gym, I prefer having comfortable and nice-looking shoes. These shoes motivate me not to skip the gym day. Because I &lt;em&gt;really&lt;/em&gt; want to wear my shoes; they just look great. The same applies to note-taking: I usually use fountain pens while note-taking. Suddenly, writing things down becomes a pleasure because writing with a beautiful fountain pen is more satisfying.&lt;/p&gt;
&lt;p&gt;All routines can become rituals. It&apos;s all about perspective and how we approach building habits. The perception of routines has to change, and one way to do this is by ensuring we build some routines with people we love. Maybe regularly watching sports with friends, meeting up in the same café every month to catch up, or going to the same location every summer for a family trip. From one perspective, they are routines, but from another, they are rituals. They have certain ceremonies we do every time that makes these routines delightful.&lt;/p&gt;
&lt;p&gt;We need to search for and find pleasure in every activity we do. Our jobs might be tiring or overwhelming. But when we find some things around them and ritualize some parts, they become easier. A beautiful physical calendar can change our daunting planning cycle. A beautiful coffee machine may boost our mood in the mornings when we&apos;re having a cup of coffee with one eye closed. Or going to the same hotel in summer can relieve stress from searching and planning and help us enjoy every moment of family time.&lt;/p&gt;
&lt;p&gt;Routines can—and should—become rituals. And beautiful design helps build and keep them consistent. If we are going to do the same thing every day, then it should be a pleasure, not a burden.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/the-power-of-ritualization-rituals-vs-routines/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/the-power-of-ritualization-rituals-vs-routines/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Communicating Organizational Changes</title><link>https://candost.blog/notes/32b/</link><guid isPermaLink="true">https://candost.blog/notes/32b/</guid><pubDate>Wed, 14 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If a leader makes an organizational change, they have to write down clearly what it is about. No leader has all the answers. So, they must show people they don&apos;t have all the answers. They have to be authentic, intentional, and emotional. While announcing an organizational change, they should add TL;DR (executive summaries are not only for executives) and FAQ to the document. What leaders have is the context, and they have to give people the context; why they had to make this decision and what the things others can&apos;t see (things that are only visible to leaders).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;People are not resistant to change; they are resistant to change they don&apos;t understand.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/35/&quot;&gt;35: Protective Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;56: Structuring Teams in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://hagakure.substack.com/p/twh33-write-simply-change-effectively&quot;&gt;The Weekly Hagakure #30&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/32b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/32b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Last Person on Earth</title><link>https://candost.blog/notes/52c/</link><guid isPermaLink="true">https://candost.blog/notes/52c/</guid><pubDate>Wed, 14 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Understanding our values is one thing; building personality around them is another. We do something every day. Sometimes, they differ, and sometimes, they are part of a routine. We&apos;re sometimes lost; we don&apos;t know where we&apos;re headed. In these situations, it&apos;s a good practice to ask ourselves, &quot;If we were the last person on earth, would we still do what we do?&quot; If what we do is aligned with our values, then the answer &lt;em&gt;should be&lt;/em&gt; a big yes. If not, there will be questions in mind. The question is intentionally bold and provoking. When our job is tied to other people, the answer automatically becomes, &quot;There is no purpose of my job if I&apos;m the last person.&quot; Yet the idea is not about that; it&apos;s about &lt;strong&gt;you doing that work, not giving up, and still looking for opportunities to continue on that path.&lt;/strong&gt; If it&apos;s playing basketball is your thing, would you play it even if there is no one around you? If you&apos;re writing, would you keep writing even if you know nobody will ever read anything you write? That&apos;s the notion of learning ourselves and how our actions are tied to our values.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;1: Why do we bother to write?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/14/&quot;&gt;14: Experiences are like compound interest on money&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/28/&quot;&gt;28: Mental Health for Professionals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://stevenpressfield.com/books/the-war-of-art/&quot;&gt;The War of Art by Steven Pressfield&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/52c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/52c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #46: Energy or Time—Which One to Manage?</title><link>https://candost.blog/newsletter/mektup-46/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-46/</guid><description>Everybody talks about managing time to get more things done. Yet, I rarely found conversations around managing energy to get the right thing done.</description><pubDate>Tue, 13 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;In previous Mektups, I talked about &lt;a href=&quot;/newsletter/mektup-4/&quot;&gt;deep work&lt;/a&gt; and &lt;a href=&quot;/newsletter/mektup-41/&quot;&gt;multitasking&lt;/a&gt;. These two are correlated, and I wanted to return to the theme from a different perspective: time management vs. energy management.&lt;/p&gt;
&lt;p&gt;The idea of not multitasking is about maxi­mizing the effectiveness and outcome. Meanwhile, having focus and deep work is about the quality of the outcome and personal satisfaction with the process and that outcome. Having a focus state and reaching desired results are not straightforward. When we want to grasp how many concurrent tasks, projects, and initiatives we are &quot;focused on&quot; at a time, the very first thing we do is look at our calendars. We search for unnecessary meetings to reduce distractions and scan project boards to see how many tasks we juggle simultaneously.&lt;/p&gt;
&lt;p&gt;Especially in leading roles, calendars are cluttered with meetings, and we quickly fall into—what Paul Graham says in &lt;a href=&quot;http://www.paulgraham.com/makersschedule.html&quot;&gt;his famous essay&lt;/a&gt;—manager&apos;s schedule. &lt;strong&gt;Our most effective action then becomes moving meetings here and there to create an hour or two to focus on &quot;the important&quot; stuff.&lt;/strong&gt; Regardless of the manager&apos;s or maker&apos;s schedule, we often try to optimize our time because that&apos;s what the system focuses on: eight hours per day should produce the maximum outcome. When we follow the system without thinking and reflecting, we usually become miserable.&lt;/p&gt;
&lt;p&gt;How often do you feel you&apos;re &quot;&lt;em&gt;done&lt;/em&gt;&quot; after work in a week and don&apos;t want to do anything besides mindlessly watching a movie or going to sleep? When was the last time you had some brain power after work to grab a non-fiction book or read the article that you saved on your reading list a week or two ago?&lt;/p&gt;
&lt;p&gt;In many conversations I had, it&apos;s apparent that many people have no energy left in the evenings. Also, their energy often depletes after 4-5 hours of shallow work (4-5 hours of deep work is the max we can do in a day). And that&apos;s something we need to change—you and me. I include myself because I sometimes feel the same.&lt;/p&gt;
&lt;p&gt;A few months ago, I felt lost while trying to start a new initiative at work. I was moving a few meetings to create two hours of uninterrupted time so I can work on it. After a few failed attempts, I came across &lt;a href=&quot;https://cate.blog/2022/03/21/energy-management-for-newer-managers/&quot;&gt;Cate&apos;s article&lt;/a&gt; about energy management (you can see my comment under that post). Then, I realized I had time but no energy to run the initiative at all. I stopped chasing it even though I knew the initiative&apos;s outcome would bring positive &lt;em&gt;results&lt;/em&gt; for the company and me. Yet, it could have drained my whole energy and motivation.&lt;/p&gt;
&lt;p&gt;These days, I&apos;m focused on managing and &lt;strong&gt;maintaining my energy together with my time&lt;/strong&gt;. Before I take any extra responsibility, begin a new initiative, start a new project, or say yes to a &quot;quick question,&quot; I ask myself, &quot;&lt;em&gt;Is this something I can spare some energy for even if I have time?&lt;/em&gt;&quot; I follow up the &quot;Yes&quot; answer with, &quot;&lt;em&gt;Do I want to spend my energy on this thing? Is it going to deplete my energy or energize me?&lt;/em&gt;&quot; Once I know the answers, it&apos;s clearer whether I should take that extra responsibility.&lt;/p&gt;
&lt;p&gt;Learning about energy management was life-changing for me. Before, it wasn&apos;t easy to differentiate between two pieces of work I wanted to do and decide which one to pick up. It was challenging to say no. These days, &lt;strong&gt;I can say no more easily, even if I have always wanted to do that work.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The questions I ask myself are not the only things I do to maintain my energy during the day. I aim to say less, &quot;&lt;em&gt;I&apos;m just done; I want to sleep&lt;/em&gt;,&quot; at 5 pm. To do that, I started using techniques and tools like &lt;a href=&quot;https://www.headspace.com/referral/z6jb3?slug=95d762&amp;amp;audio=false&quot;&gt;Headspace&lt;/a&gt; and &lt;a href=&quot;https://reclaim.ai/r/s/X9icd&quot;&gt;Reclaim.ai&lt;/a&gt;. I&apos;m not going to dive into details in this Mektup; that will be the topic for the next one.&lt;/p&gt;
&lt;p&gt;Meanwhile, think about how you maintain your energy. Observe yourself during the day to figure out what sucks your energy or gives you more. Be aware of how many days you say, &quot;&lt;em&gt;I&apos;m done for today; my brain is not working anymore.&lt;/em&gt;&quot; In the next Mektup, I want to share a few more techniques to help you.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;/productivity-scam-and-perception-of-time/&quot;&gt;Did you fall into the productivity scam?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.P.S.&lt;/strong&gt; I didn&apos;t publish anything in the last two weeks because I was sick.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-46/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-46/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #45: How to Explain Things Clearly</title><link>https://candost.blog/newsletter/mektup-45/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-45/</guid><description>Two strategies to help explain technical things to non-technical people.</description><pubDate>Tue, 29 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;As you may remember that &lt;a href=&quot;/joining-sumup/&quot;&gt;I started a new job&lt;/a&gt; in November. So far, it&apos;s going well. The team is full of great people, and I had a fantastic start in onboarding by having an offsite and two days of leadership training. While many things go well, there are challenging parts that I have to overcome quickly somehow.&lt;/p&gt;
&lt;p&gt;One of them is learning a new domain and processes. In this phase, it&apos;s crucial for me to have people who can explain things in a way that I can understand.&lt;/p&gt;
&lt;p&gt;As I am the new clueless manager on the team, I have yet no context of many things. Therefore, I rely on people explaining stuff in enough detail so things make sense and I can make an informed decision. There is particular stuff I can start doing, but as I&apos;m missing context, learning the background of anything takes time and delays taking action.&lt;/p&gt;
&lt;p&gt;Finding people who can explain things to me is difficult because these people are rare. I, once more, was faced with the reality that not everyone can explain things well to a person who has less knowledge or context. Not everyone can measure my knowledge level, even though their audience is just one person. Some people think that I&apos;m already in context. Some assume that I am clueless while I have already learned a bit.&lt;/p&gt;
&lt;p&gt;Many people—not just engineers—struggle to explain their knowledge, not because they don&apos;t know the topic but because they don&apos;t take the time to uncover their audience.&lt;/p&gt;
&lt;p&gt;When I started my blog, podcast, and writing every day, one of the pieces of advice I received was to answer a simple question before starting, &quot;&lt;em&gt;Who are you creating this for?&lt;/em&gt;&quot; This became a big question in my head in each podcast episode I recorded, and in each article and Mektup I published. Repeating the question every single time got me into a habit.&lt;/p&gt;
&lt;p&gt;It&apos;s not easy to learn the audience, though. But with a few techniques, it becomes easier.&lt;/p&gt;
&lt;p&gt;Have you ever been in a talk where a speaker asked you to raise your hand if you&apos;re familiar with a particular topic? Well, that&apos;s one of the techniques to learn the audience. After the speaker asks this question, if the majority knows about that specific topic, the speaker often quickly moves forward; if not, they explain deeply. This technique is adaptable to daily life as well. Maybe not asking to raise a hand in a two-people conversation but simply asking, &quot;Are you familiar with X?&quot; is more than enough.&lt;/p&gt;
&lt;p&gt;That question helps us to continue the discussion effectively and creates engagement. As a result, the talk moves from monologue to conversation. &lt;a href=&quot;https://www.wyzowl.com/human-attention-span/&quot;&gt;The human attention span&lt;/a&gt; decreases yearly, so keeping the other side engaged is crucial.&lt;/p&gt;
&lt;p&gt;Another strategy that helps to explain knowledge is thinking about how to explain the topic to a five-year-old kid. For example, how would you explain Continuous Delivery or Continuous Integration to a five-year-old kid who doesn&apos;t even know reading? We recently had leadership training at SumUp, and in one session, the presenters asked the audience to work in groups and explain one given technical topic to a five-year-old kid.&lt;/p&gt;
&lt;p&gt;That was a great challenge and a brain gymnastic. So, my friend, next time you have to explain a technical topic to a non-technical audience, think about that. Find analogies. Even if your audience knows some technical knowledge and understands you to a degree, it&apos;s still valuable to use analogies to help them get on the same level as you.&lt;/p&gt;
&lt;p&gt;These two simple strategies will help you get buy-in for working on the technical debt that&apos;s been building up for a while, explain why a feature was delayed, or successfully pitch an idea. These strategies enable your audience to feel included. Once they are part of it, they don&apos;t feel bored; they get on the same page as you more quickly.&lt;/p&gt;
&lt;p&gt;Furthermore, these strategies make you a collaborative and well-communicator person. Your career growth fastens, and your relationships get better. So, next time, ask yourself, &quot;Whom are you explaining this topic?&quot; and see the magic.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; Let me ask you. Reply to this email with one sentence without your name and introduce yourself! Who are you?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.P.S.&lt;/strong&gt; &lt;a href=&quot;/newsletter/mektup-19/&quot;&gt;Annual Performance Reviews are approaching for some folks!&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-45/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-45/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How Zettelkasten Method Works</title><link>https://candost.blog/notes/1a/</link><guid isPermaLink="true">https://candost.blog/notes/1a/</guid><pubDate>Mon, 28 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Make a fleeting note. Whatever comes to your mind, write it down. No structure or full sentences are needed. It&apos;s for you to remember.&lt;/p&gt;
&lt;p&gt;Make literature notes: Write what you&apos;ve learned and don&apos;t want to forget. Use your own words. Keep it short—no structure or full sentences are needed here as well. Keep bibliographic details together with the note.&lt;/p&gt;
&lt;p&gt;Ideally, once a day, go through fleeting and literature notes and make them permanent by writing them down as you are writing for someone else with full sentences.&lt;/p&gt;
&lt;p&gt;And put the note behind the related note or the latest one if there is no related one exists. Scan your slip box and add links to existing notes where you think the new note is somehow related. Make sure you will find the new note either via a link from an index note or via an entry point note about a discussion or topic that is linked to the index.&lt;/p&gt;
&lt;p&gt;Develop topics, questions, and research bottom up by using these notes. Check what is missing, and fill them up by doing more research and reading. You don&apos;t need any brainstorming on the topic. Find the chain in the notes.&lt;/p&gt;
&lt;p&gt;Look at all the notes and find connections. Copy them to “desktop” to work on them. Don&apos;t directly work on them since this will change the previous notes.&lt;/p&gt;
&lt;p&gt;Create a draft. Don&apos;t copy things from previous notes. Translate them into something that is related to your argument.&lt;/p&gt;
&lt;p&gt;Edit and proofread the document and share. Go to the next topic.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Posts:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;How to Stop Endless Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/why-is-writing-important/&quot;&gt;Why is Writing Important?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Concluding My Struggle with Note-Taking Systems and Apps, Finally!</title><link>https://candost.blog/concluding-my-struggle-with-note-taking-systems-and-apps-finally/</link><guid isPermaLink="true">https://candost.blog/concluding-my-struggle-with-note-taking-systems-and-apps-finally/</guid><description>I can finally say I have reached the end, and I&apos;m finishing my research and experiments with note-taking apps. I share what I learned in this post and explain how things have changed.</description><pubDate>Sun, 27 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been researching a better note-taking system, trying apps, and moving hundreds of notes from one place to another for years. Today, I can finally say I have reached the end, and I&apos;m finishing my research and experiments with apps. I share what I learned in this post and explain how things have changed.&lt;/p&gt;
&lt;p&gt;I have been thinking about my notes and how to write them, edit them, and store them. There are countless note-taking applications and various techniques, and I tried many of them. Yet I realized it&apos;s not the differences or the method that matters for making notes valuable; it&apos;s the mindset I have while taking notes.&lt;/p&gt;
&lt;p&gt;I used to copy quotes as notes. They didn&apos;t consist of any word that is mine; they mainly comprised words of others—the authors. I kept their words, memories, experiences, and ideas. In this &lt;em&gt;collectivist mindset&lt;/em&gt;, you know what you have is not yours; someone else created it. And it will never truly be yours, even if you &lt;em&gt;own&lt;/em&gt; them.&lt;/p&gt;
&lt;p&gt;As I wrote down these notes, I also stored them within specific categories, such as habit building, software architecture design, personal values, et cetera. There were hundreds of notes and tens of categories. I never went back and read them. Even when I did, they were still not mine; therefore, I couldn&apos;t remember them. That triggered me to look for ways to improve my whole note-taking system.&lt;/p&gt;
&lt;p&gt;For a while, I started trying apps. I tried Evernote, GoodNotes, Ulysses, Bear, Apple Notes, Notion, Scrintal, Dropbox Paper, pen and paper, Anki, Craft, and Obsidian in search of a better system. None of them worked. But I was wrong expecting another piece of technology to solve a problem when my fundamentals were wrong. If I was using them the same way, how could I expect them to solve the problem? All these applications claim that they solve the problem of note-taking. And they &lt;em&gt;actually do&lt;/em&gt; if you have &lt;em&gt;the right mindset&lt;/em&gt; and &lt;em&gt;learn&lt;/em&gt; how to use them.&lt;/p&gt;
&lt;p&gt;Apparently, I neither had the right mindset nor learned how to use these apps for years. So, what did I change?&lt;/p&gt;
&lt;p&gt;I transformed myself, my perspective, my approach, and my expectations. Let&apos;s dive into each separately.&lt;/p&gt;
&lt;h2&gt;Changing Myself&lt;/h2&gt;
&lt;p&gt;First, myself. As cliché as it sounds, I&apos;m not the same person anymore. I grew and evolved, and my old methods didn&apos;t suit me anymore.&lt;/p&gt;
&lt;p&gt;Before all these changes started, I thought I was smarter and more knowledgeable, or at least I wanted to be. The more I read and learned, the more everything revealed how foolish and ignorant I am. I realized I would feel even more stupid every other day if I kept reading.&lt;/p&gt;
&lt;p&gt;As I realized I was not smart, I had to keep better notes and write better. I couldn&apos;t leave it to chance to learn something and forget about it. As I&apos;m a flawed human, I had to look at my note-taking with the mindset of &lt;em&gt;a person who forgets&lt;/em&gt;. As I acknowledged that I would forget what I learned today, I was better off writing things down. Changing this perspective was not enough, though. Since I was already taking notes, something else should have been wrong.&lt;/p&gt;
&lt;p&gt;Yes, I faced the harsh reality: it was my perspective on my system.&lt;/p&gt;
&lt;h2&gt;Changing Perspective on System&lt;/h2&gt;
&lt;p&gt;The perspective is the biggest flaw we have. Yet, the slightest change can lead to magnificent results. Near the end of my search, I changed my perspective on my note-taking system without changing the system.&lt;/p&gt;
&lt;p&gt;I changed the &lt;em&gt;collectivist&lt;/em&gt; perspective to a &lt;em&gt;scientist&apos;s&lt;/em&gt; perspective. Scientists search the literature to learn from previous studies and collect a lot of data to build on it. While doing so, they write down their &lt;em&gt;observations&lt;/em&gt; on the previous research. They use their &lt;em&gt;own words&lt;/em&gt; (they have to prevent plagiarism). Otherwise, they never learn and cannot add anything to the literature. So, I started using my own words while taking a note.&lt;/p&gt;
&lt;p&gt;I suddenly realized how much I was not learning from what I was reading. The sentences that I was trying to build threw me off the rack. I should have fully understood what I was reading to be able to write it down in my own words. As soon as I put the pen on the paper, writing tested my knowledge. I never had this challenge. By using my own words, I began to learn better. Along with better learning, I evolved my approach, and at one point, I had to change my note-&lt;em&gt;saving&lt;/em&gt; system.&lt;/p&gt;
&lt;h2&gt;Changing Note-Saving System&lt;/h2&gt;
&lt;p&gt;The system I was using pushed me to use the folders and categories. I also used tags to cross-reference between notes, but they were also categories. I used tags to place a note under two categories if a note belonged to more than one category. Later in my research, I learned about Zettelkasten.&lt;/p&gt;
&lt;p&gt;I started trying the system. At first, I couldn&apos;t really adapt to it because I was still saving quotes. My mind looked for categories and patterns to group notes. In Zettelkasten, there is also tagging, but it wasn&apos;t aligned with what I did before. Of course, I mistakenly used tags as before, and it didn&apos;t work out. I had to unlearn—which is one of the most difficult things we should do every day. Then I read How to Take Smart Notes &lt;em&gt;twice&lt;/em&gt;. I learned the beauty and simplicity of the system and where I was wrong. The tags I used had the librarian mindset, but I needed the &lt;em&gt;archivist mindset&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The librarian mindset looks for categories. Every book or magazine belongs to one category, and librarians place them with the goal of easily finding them by their name, genre, and author. Their purpose is simple: the shortest path to find a book.&lt;/p&gt;
&lt;p&gt;On the other hand, archivist doesn&apos;t look for categories. An Archivist thinks about the question that leads to this information. They think about how that piece of information should surface in the future. They ask, &quot;How should the information be relieved in the future?&quot;&lt;/p&gt;
&lt;p&gt;This tiny difference changed my mindset and my whole tagging and note-linking system. For example, instead of using the &lt;code&gt;#productivity&lt;/code&gt; and &lt;code&gt;#time-management&lt;/code&gt; tags for a note about improving outcomes with better time management; I now have &lt;code&gt;#outcomes-not-output&lt;/code&gt; and &lt;code&gt;#why-should-I-plan-my-day&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;And every note has a maximum of three tags, not more. Each is written future-thinking and answers, &quot;How do I want to find this note in the future?&quot; That&apos;s the question. It&apos;s okay if I don&apos;t read this note in two years and don&apos;t have to remember where I put it. The goal is not the shortest path to note; it is trusting the system to reveal the note at the best possible moment.&lt;/p&gt;
&lt;p&gt;The tags are a support system in Zettelkasten. The core idea of Zettelkasten is linking notes to relevant ones to connect them—increase their chances of being found out. As all notes are linear (no folders, just putting every note behind each other), we connect notes by linking each other. That provides visibility to a node. Eventually, it will be reached and read. No note will stay asleep forever.&lt;/p&gt;
&lt;p&gt;That brings me to my last change.&lt;/p&gt;
&lt;h2&gt;Changing Expectations&lt;/h2&gt;
&lt;p&gt;My earlier expectations were shallow and almost non-existent. I took notes to remember things; I expected to become smarter, learn more, and eventually have a better life. These naive thoughts—of course—did not become a reality, and all my expectations were unmet. While altering the whole system, I deleted my previously taken notes to reset my expectations.&lt;/p&gt;
&lt;p&gt;Instead of trying to become smarter and memorize stuff, I assume I will forget. Hence, I write things down. As I will forget with or without note-taking, I moved the responsibility of remembering things to my system. No expectation to remember things is a big relief to my mind.&lt;/p&gt;
&lt;p&gt;Another expectation I had was to produce more articles or essays to publish on this blog. That is gone too. I will keep writing, but I do not crave to publish more. I expect to write daily and publish only when I&apos;m ready and when it&apos;s time to publish &lt;a href=&quot;/newsletter/&quot;&gt;Mektup&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One expectation I will keep is to learn more, but this time differently. As I write notes in my &lt;em&gt;own&lt;/em&gt; words instead of taking quotes, each one challenges my learning. In every written word, I face a huge learning curve. Every note teaches me something better. That&apos;s why I keep my learning expectation.&lt;/p&gt;
&lt;h2&gt;Finalizing the Challenge&lt;/h2&gt;
&lt;p&gt;My new note-taking perspective, approach, and expectations will eventually change me. I&apos;m embracing this change and even hugging it. At least, it produces less stress. Accepting that I will forget itself is a relief. Knowing that I will eventually find the note I write is just relaxing. And last but not least, writing notes in my own words will also improve my writing and show me invaluable thoughts and wisdom.&lt;/p&gt;
&lt;p&gt;The best part of all these changes and systems is that I didn&apos;t invent them. This system is what made &lt;a href=&quot;https://en.wikipedia.org/wiki/Niklas_Luhmann&quot;&gt;Niklas Luhmann&lt;/a&gt; and many others succeed in their fields. They already have figured out that it works; I only need to uncover and adapt it to me.&lt;/p&gt;
&lt;p&gt;Maybe in time, I will adjust the system more to myself and change how I use it. That&apos;s not an issue. I&apos;m not strictly following Zettelkasten as it is. I listen to my heart and reflect on how the system is progressing once in a while. In every reflection, I will have a chance to tweak the system and make minor adjustments.&lt;/p&gt;
&lt;p&gt;With this, I&apos;m ending my note-taking tool and system search. I have all my notes on Obsidian for a while now, and all of them will stay there. I will stay with this approach as long as it goes.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/concluding-my-struggle-with-note-taking-systems-and-apps-finally/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/concluding-my-struggle-with-note-taking-systems-and-apps-finally/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why is it so hard to be kind?</title><link>https://candost.blog/why-is-it-so-hard-to-be-kind/</link><guid isPermaLink="true">https://candost.blog/why-is-it-so-hard-to-be-kind/</guid><description>The only thing we, you and I, can do to impact how we change is to choose a direction. We can decide in which way we want to evolve. And that way has to be kindness.</description><pubDate>Wed, 23 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Why is it so challenging to be kind? I ask this question myself because I&apos;m aware of my rare unkindness to the people I don&apos;t know. I rarely stop being kind, especially when the other side is unkind.&lt;/p&gt;
&lt;p&gt;But isn&apos;t &lt;em&gt;responding with kindness&lt;/em&gt; the best reaction to a rude person? Isn&apos;t it what keeps our personality intact? Isn&apos;t it what makes us untouchable?&lt;/p&gt;
&lt;p&gt;I observed others when they were in a conflict, and kindness often made one side partly superior—not as arrogant but as better or outstanding. Also, kind people don&apos;t chase this superior feeling; they are usually humble. Yet, they fall into a trap and act rudely in certain situations.&lt;/p&gt;
&lt;p&gt;Then, I asked myself, why are we discourteous even though we&apos;re generally compassionate and caring?&lt;/p&gt;
&lt;p&gt;Kindness is so challenging because of our daily stress routine. We&apos;re often rushing somewhere; we&apos;re late. We&apos;re nervous. We&apos;re frustrated. Something happened. We have a big chunk of emotions we can&apos;t even express. You name it. Within all the daily emotional rollercoasters we have, the last drop overflows the glass, and we abandon kindness. Just for a bit. Temporarily, like five seconds. The five seconds we will regret.&lt;/p&gt;
&lt;p&gt;For instance, I cannot stand cunning people because they make me feel stupid. Recently a devious person cut the line in the supermarket, and something inside me fired up, and I acted. My reaction was also unkind. If this person had asked me, I could have voluntarily given up my position in the queue, yet they didn&apos;t. They chose the unkind way, and so did I.&lt;/p&gt;
&lt;p&gt;Once we abandon kindness just for a bit, it&apos;s already too late. There is no turning back. It&apos;s like breaking a vase. We can glue all the pieces together, but it will be a broken vase forever.&lt;/p&gt;
&lt;p&gt;Later, I regretted my discourteous action because the situation created an inner conflict. This conflict is the main reason I&apos;m asking the above question myself. Inside me, I broke a small vase that can&apos;t be entirely repaired.&lt;/p&gt;
&lt;p&gt;When we respond to rudeness with kindness, the unpleasant situation suddenly sees a bright light. A tiny light of hope bears inside us and tells us everything will be all right. A light like the one coming after a scary storm in the ocean. A light that arises hope for humanity and peace and brings beauty and color.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/why-is-it-so-hard-to-be-kind/why-is-it-hard-to-be-kind.jpg&quot; alt=&quot;In the movie Everything Everywhere All At Once, all the people are kind inside. But circumstances create inner conflicts for them, and everything results in unkindness.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;All these feelings and consequences are there, and it&apos;s good that I can see them. But still, the question I asked remains unanswered. Perhaps I need to change the question and approach from another perspective: Waymond&apos;s.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;How to be kind to strangers, especially when they are not kind to us?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Not being kind has a rolling effect; the more unkind we are, the more stress and anger we accumulate. Lately, I have been building up stress and tension, and being kind has become more challenging. I moved to a new city and &lt;a href=&quot;/joining-sumup/&quot;&gt;got a new job&lt;/a&gt;. Everything is new, and it is stressful to improve on every front while trying to adapt to them. To prevent kindness from falling over, I changed a few things.&lt;/p&gt;
&lt;p&gt;While training my body in the gym, I&apos;m training my mind more heavily these days with meditation. The core of mindfulness meditation is noticing. Maybe, we can recognize how we are being treated and notice feelings accumulating inside us. We can notice and acknowledge our harmful emotions instead of preventing them from suddenly unleashing as unkindness. And maybe, &lt;em&gt;maybe&lt;/em&gt;, we can let them go. It is not easy, especially in the middle of heated-up arguments, but worth a try. Noticing requires consistent practice, but even noticing once helps to advance.&lt;/p&gt;
&lt;p&gt;I&apos;m also trying to improve my relationships with the community and help others. These nice things help me relieve stress and build kindness. I started spending some time in non-profit organizations and helping those less fortunate than me in this harsh life. I&apos;m not doing these to show kindness. I&apos;m fighting back unkindness. I&apos;m trying to relearn it.&lt;/p&gt;
&lt;p&gt;We evolve every day; we cannot stop. It&apos;s an endless journey. The only thing we, you and I, can do to impact this change is to choose a direction. We can make a conscious decision in which way we want to evolve.&lt;/p&gt;
&lt;p&gt;And that way has to be &lt;em&gt;kindness&lt;/em&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/why-is-it-so-hard-to-be-kind/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/why-is-it-so-hard-to-be-kind/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Barriers to Learning from Contact with Reality</title><link>https://candost.blog/notes/9b/</link><guid isPermaLink="true">https://candost.blog/notes/9b/</guid><pubDate>Wed, 16 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Three personal barriers to growing as a person are perspective, ego, and accountability. Our perspective is limited. Think about the relative velocity. A person in a moving car throws a ball into the air and only sees the ball&apos;s vertical move. A person observing from outside sees the ball&apos;s vertical and horizontal movement. We&apos;re often limited to our perspective and need different ones to understand reality. It also allows us to reduce the ego effect. &lt;a href=&quot;/notes/52a4/&quot;&gt;Our egos prevent us from opening ourselves to being wrong&lt;/a&gt;. We don&apos;t want to be seen as stupid or wrong. Yet, when we accept that we can&apos;t know everything and rightfully be wrong, we leap forward and can grow and learn other perspectives and new information to make better decisions. Lastly, the distance from the results of our decisions should be as short as possible. When we hit our small toe to the corner of the bed, that&apos;s the most immediate feedback we get. The distance between the result and our action is tiny. In decisions, we must keep the distance short of increasing accountability because we learn from the results. If the distance is big, we can&apos;t tie our actions to them and remember clearly what we did. As a consequence, we ignore the result and don&apos;t learn.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;12: Engineer Autonomy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/14/&quot;&gt;14: Experiences are like compound interest on money&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19/&quot;&gt;19: Decision-Making Strategies&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;31: Accountability and Learning Culture in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/how-to-get-to-the-end-of-a-pile-of-unread-books/&quot;&gt;How to Get to The End of a Pile of Unread Books&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Great Mental Models Vol. 1 by Farnam Street&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/9b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/9b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #44: Returning to Office and Remote Work</title><link>https://candost.blog/newsletter/mektup-44/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-44/</guid><description>I started going to the office again, even though it was not mandatory. And that reminded me of a few things about remote work and office work.</description><pubDate>Tue, 15 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dear friend,&lt;/p&gt;
&lt;p&gt;I hope you&apos;re doing well and getting used to knowing the end of the year is coming. The cold is what winter brings in Berlin, and I&apos;m ready to take out my snowboard, head to some mountains, and get lost in fresh white powder.&lt;/p&gt;
&lt;p&gt;As much as taking a trip became more accessible thanks to remote work, I have not had any work-ation. This year, I might break this pattern and enjoy some winter trips. That brings me to the topic I wanted to write you about today.&lt;/p&gt;
&lt;p&gt;I&apos;ve been working remotely for almost five years now. As you may remember, I &lt;a href=&quot;/joining-sumup/&quot;&gt;started a new job&lt;/a&gt; at the beginning of November, and since then, I&apos;ve been going to the office every day! Although the office is not a requirement, I voluntarily opted-in to work at the office during my onboarding. Besides the time I spend commuting (oh, I hate commuting, in case I didn&apos;t tell you before. I can&apos;t read a thing on the subway, and I don&apos;t want to put headphones on for an extra hour every day. Anyway. I will live with it for a while), it&apos;s going surprisingly well.&lt;/p&gt;
&lt;p&gt;The office work reminded me of a few things I had long forgotten. I remembered how much easier to get to know people when we spend face-to-face time. We&apos;re social animals, and it&apos;s the social part of our animal life. And I know that we can also socialize in a remote setup where we have regular socializing calls and events. Considering the best-case scenarios of both options, I think in-person socializing is far better than online socializing. It&apos;s more natural.&lt;/p&gt;
&lt;p&gt;I know it&apos;s not for everyone. That&apos;s why we have to find a balance. Also, we should distinguish remote work from lockdown work-from-home. I&apos;m a big fan of remote work and will continue working remotely after my onboarding, but I also want to encourage everyone (ahem, you) to meet with your colleagues and let them become your &lt;em&gt;work friends&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;You may say that you don&apos;t need to become friends with your colleagues and it is better to separate your personal and work life. That&apos;s understandable and, of course, a valid reason. What I&apos;m saying is to convince your company to get all of you together once in a while. It will have a tremendous impact on your work.&lt;/p&gt;
&lt;p&gt;Additionally, as I&apos;m going to the office every day, I also remembered the &lt;a href=&quot;/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/&quot;&gt;case of hybrid meetings&lt;/a&gt;. I still don&apos;t like them. Luckily, we don&apos;t have most of our meetings hybrid, and everybody joins from their computer, even if half of the team is in the office.&lt;/p&gt;
&lt;p&gt;Lastly, I love &lt;a href=&quot;/put-remote-work-in-your-inclusion-efforts-not-only-in-diversity-in-the-workplace/&quot;&gt;the inclusive environment remote work creates&lt;/a&gt; and will continue writing about some other practices I&apos;ve seen work well and don&apos;t work at all. These days, I&apos;m in onboarding mode, and my mind is full of new information I must digest. So it will take a bit of time to write them down. Yet, as I tend to forget things, I noted my thoughts and will share them soon.&lt;/p&gt;
&lt;p&gt;We&apos;re in mid-November, and I&apos;m heading to the office again today in cold Berlin. Let me know your experience and thoughts about social life and remote work vs. office work by replying to this email.&lt;/p&gt;
&lt;p&gt;Until next time,
Candost&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;*P.S.&lt;/strong&gt; &lt;a href=&quot;https://user-images.githubusercontent.com/1971963/201858844-5ae31c6a-e4bc-4777-8fd3-b3838d6f21d9.jpg&quot;&gt;Here is the photo of me writing you the first personalized Mektup after changing its direction.&lt;/a&gt;*&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;*P.P.S.&lt;/strong&gt; &lt;a href=&quot;/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/&quot;&gt;Deep Work and Focus Time are crucial for you.&lt;/a&gt;*&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-44/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-44/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>DDIA: How to Partition a Database</title><link>https://candost.blog/books/database-partitioning/</link><guid isPermaLink="true">https://candost.blog/books/database-partitioning/</guid><description>Partitioning with primary or secondary keys, rebalancing partitions &amp; trade-offs and how to solve them and the pros and cons of each approach.</description><pubDate>Sun, 13 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article is part of my notes from Chapter 6 on &lt;a href=&quot;https://dataintensive.net/&quot;&gt;Designing Data-Intensive Applications by Martin Kleppmann&lt;/a&gt;. You can read other chapter notes as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;Chapter 2: Data Models and Query Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;Chapter 3: Data Storage and Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;Chapter 4: Encoding, Decoding, Schemas, and Data Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Chapter 5: Data Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;Chapter 6: Database Partitioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Chapter 7: Transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;Chapter 8: The Trouble with Distributed Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;Chapter 9: Consistency and Consensus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chapter 10: Batch Processing&lt;/li&gt;
&lt;li&gt;Chapter 11: Stream Processing&lt;/li&gt;
&lt;li&gt;Chapter 12: The Future of Data Systems&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;We talked about &lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;data replication&lt;/a&gt; in the last chapter. Database partitioning and replication techniques are often combined. While the replication is for fault tolerance, the goal of partitioning is scaling systems. Partition means part of nodes that can be replicated to other nodes. Each node can contain multi­ple partitions, and each partition can be either a leader or a follower if replicated.&lt;/p&gt;
&lt;p&gt;Although replication and partitioning are related, strategies and how they impact each other are not necessarily entangled. So, there is no need to discuss them together.&lt;/p&gt;
&lt;p&gt;We&apos;ll talk about partitioning key-value data (as it is the primary index), partitioning secondary indexes, rebalancing, and rerouting.&lt;/p&gt;
&lt;h2&gt;Partitioning of Key-Value Data&lt;/h2&gt;
&lt;p&gt;:::note
💡 Partitioning aims to spread the data and load across multiple nodes evenly.
:::&lt;/p&gt;
&lt;p&gt;In theory, if we partition one node into fifteen nodes, the system should be able to handle fifteen times the load it handles with one node. In practice, it doesn&apos;t work like that. Depending on how we partition, some partitions take more load than others and become bottlenecks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Skewed System:&lt;/strong&gt; When the partitioning is not fair, the load is not evenly distri­buted, and one or a few nodes have more data and queries, we call the system skewed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hot Spot:&lt;/strong&gt; The partition gets a high load in a skewed system.&lt;/p&gt;
&lt;p&gt;Let&apos;s assume we have a simple data store with a primary key only. We can partition it in two ways.&lt;/p&gt;
&lt;h3&gt;Key-Range Partitioning&lt;/h3&gt;
&lt;p&gt;We define boundaries for partitions with ranges in the key, similar to encyclopedias. The keys are sorted, and each is assigned to a partition. The advantage is that range queries are efficient, as we don&apos;t need to query all partitions to get a range of keys. The downside is that specific access points lead to hot spots, and the database becomes skewed. In order to manage the load, the ranges have to be adapted to the data, and the keys should be selected well. And it&apos;s often difficult to know beforehand which keys will become hot spots.&lt;/p&gt;
&lt;h3&gt;Hash-Key partitioning&lt;/h3&gt;
&lt;p&gt;To eliminate hot spots in key-range partitioning, we can use hash func­tions for keys. Even when two keys are very similar, their hashes can be different. For this to work, we need a good hash function that gives the same results independent of where it has been run. After having hashes, we can assign each partition range of hashes. The upside of hash-key partitioning is distributing keys evenly; the downside is losing range-based query efficiency (we need to query all partitions for range queries).&lt;/p&gt;
&lt;p&gt;We can also combine both strategies and use &lt;em&gt;a compound primary key&lt;/em&gt; where the first part is hashed to determine the partition, and the second part of the key can be ranged (for example, choosing [user_id, timestamp] as the key). Compound primary keys enable us to perform range queries on the second part.&lt;/p&gt;
&lt;p&gt;Using the hash key doesn&apos;t solve all skew problems. In extreme cases, they still happen (e.g., having millions of followers on social media creates hot spots). There is no automatic way to handle these situations, so application developers must come up with solutions according to their use cases.&lt;/p&gt;
&lt;h2&gt;Partitioning and Secondary Indexes&lt;/h2&gt;
&lt;p&gt;When we involve secondary indexes (as they are widely common in relational databases and the main feature of ElasticSearch), we need to find ways to use them in partitioned databases to avoid skew effectively.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;The problem with secondary indexes is that they don&apos;t map neatly to partitions.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are two ways to partition secondary indexes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;By document:&lt;/strong&gt; We put secondary indexes in the same partitions as the primary index. So, each partition maintains its own secondary indexes—covering only the documents in that partition. For example, if we sell guitars and secondary indexes are color and brand, searching red Fender guitars requires searching in all partitions. This method is also known as the &lt;em&gt;local index&lt;/em&gt;. The disadvantage is when you want to search by secondary index, you have to query all partitions (also known as &lt;em&gt;scatter/gather&lt;/em&gt;). The benefit is write operations are very fast and happen within the same partition.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;By term:&lt;/strong&gt; Also known as a &lt;em&gt;global index&lt;/em&gt;. In this strategy, we store indexes in partitions by their term. So all indexes of the same term are in the same partition, which covers data from all partitions. For example, searching red Fender guitars will only go to one or two partitions where the term &lt;code&gt;color:red&lt;/code&gt; and &lt;code&gt;brand:Fender&lt;/code&gt; are stored, as these terms will consist of a list of primary indexes of certain items. The benefit is having very fast read operations on the secondary indexes because they are often stored in the same partition as the data. But the difficulty comes with the write operations and maintaining these indexes. These secondary indexes need their own partitioning strategy, and key range or hash-value can be used to define these partitions. As secondary indexes are partitioned separately, maintaining them takes some effort too. To prevent heavy write operations from blocking the client, writing to secondary indexes are often asynchronous.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Rebalancing Partitions&lt;/h2&gt;
&lt;p&gt;Moving load from one node to another is called &lt;em&gt;rebalancing&lt;/em&gt;. The golden rule of rebalancing is data shouldn&apos;t be moved more than necessary. During rebalancing, the database should continue accepting read/write requests.&lt;/p&gt;
&lt;p&gt;There are a few strategies to rebalance skewed databases.&lt;/p&gt;
&lt;h3&gt;Rebalancing Strategies&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;hash mod N:&lt;/strong&gt; We define which data will go to which partition by using &lt;code&gt;mod&lt;/code&gt; function. Don&apos;t use it at all because, with this strategy, we move data too much; every time a new node is added, most of the data is reshuffled and moved to new partitions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Using a fixed number of partitions:&lt;/strong&gt; We assign multiple partitions to a node and use a fixed number of total partitions across all nodes. The difficulty lies in picking the right number for partitions, as it won&apos;t change later on, and data varies in time. Whenever a new node is added, it can take over partitions from each node. So, only the partitions&apos; assignments change instead of individual data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic partitioning:&lt;/strong&gt; When a certain partition grows, we split it into two partitions and assign the new partition to a new node. Still, each node can handle multiple par­titions, but their number is dynamic according to the data changes (we add or delete partitions). The nuisance is we don&apos;t know how many partitions we should start with; we can begin with one or multiple if we know how to split by the key (pre-splitting).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partitioning proportionally to nodes:&lt;/strong&gt; We use a fixed number of partitions per node. When a new node is added, the new node chooses random partitions to split and takes ownership of half of the partition. Randomly choosing partitions requires using hash-based partitioning. Randomization can introduce unfair splits, but there are algorithms to prevent that.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rebalancing can be done automatically or manually, but having a human in the loop is better. When it is automatic, it can mess up with automatic failure detection. A huge amount of data moves from one node to another; meanwhile, one node can be overloaded. During overload, the other nodes can think that this node is dead. The automatic rebalancing mechanisms try to move load from it and cause more overload on the node, the other nodes, and the network, causing a cascading failure. So keep human interaction to prevent unwanted issues.&lt;/p&gt;
&lt;h2&gt;Request Routing&lt;/h2&gt;
&lt;p&gt;With all data rebalancing, nodes, and partitions changing, we need to take care of how the client will access the nodes. The clients should know the IP and port number to send a request. There are three ways to give this knowledge to a client.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nodes can contact other nodes. When a node receives a request, and it doesn&apos;t have the data, it forwards to the appropriate node, gets data back, and forwards to the client.&lt;/li&gt;
&lt;li&gt;Add a routing tier. The routing determines the node to request data.&lt;/li&gt;
&lt;li&gt;Allow clients to know which node and partition to contact.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In all three options, the problem lies in learning when there is a change in the assignment of partitions to nodes. Everyone must agree on which partition to reach for specific data. We can use an external service (e.g., Zookeeper) that receives information about node changes and informs either the routing tier or clients about them.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/database-partitioning/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/database-partitioning/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Joining SumUp</title><link>https://candost.blog/joining-sumup/</link><guid isPermaLink="true">https://candost.blog/joining-sumup/</guid><description>I&apos;m starting as an Engineering Manager at SumUp! Today is my first day, and I&apos;m excited to join this fantastic team.</description><pubDate>Tue, 01 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Back in 2015, I didn&apos;t know anything about Jimdo when I moved to Germany. I started hearing it in meetups where Jimdo was a host. Later, I joined Jimdo in July 2016 as an iOS Engineer. For more than six years, I was lucky enough to work with fantastic individuals, and we worked towards creating excellent applications that fulfilled users&apos; needs.&lt;/p&gt;
&lt;p&gt;Jimdo was the third company I worked with. I&apos;m so grateful and find myself lucky enough to work with such an amazing community for years on a great mission, which gave me a feeling of belonging. It will always stay in my heart like my first company Monitise (currently Commencis). I&apos;ll follow Jimdo&apos;s progress as a user from now on.&lt;/p&gt;
&lt;p&gt;After 6+ years of journey in Jimdo, I was ready to start another challenge. I started answering recruiters who reached out to me and had a few interviews here and there. Yet, in any company, I couldn&apos;t find the energy I was looking for. Later, I saw that &lt;a href=&quot;https://sumup.com/&quot;&gt;SumUp&lt;/a&gt; was looking for an Engineering Manager.&lt;/p&gt;
&lt;p&gt;And it was &lt;em&gt;the only&lt;/em&gt; job &lt;em&gt;I&lt;/em&gt; applied for instead of recruiters reaching out to me. And the one I am happy to start my journey today.&lt;/p&gt;
&lt;h2&gt;Why SumUp?&lt;/h2&gt;
&lt;p&gt;Several considerations guided me to join this fantastic team.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Mission:&lt;/strong&gt; Empower small merchants all over the world
One of my biggest motivations for any job is how it contributes to the world. As I love to &lt;em&gt;help&lt;/em&gt; people, SumUp&apos;s mission is dear to my heart and very close to the one that kept me in Jimdo for years.
Small merchants face huge and unseen challenges. Just to give an example, everybody is curious about the challenges of Google, but I&apos;ve rarely seen anybody&apos;s interest in the challenges of &lt;a href=&quot;https://www.ecosia.org/&quot;&gt;Ecosia&lt;/a&gt;. Think about tiny shops around the corner. When was the last time did you hear any politicians talking about their challenges? If we &lt;a href=&quot;https://www.ifo.de/en/press-release/2022-09-15/business-climate-germany-drops-slightly-solo-self-employed-persons-and&quot;&gt;have a look at Jimdo-Ifo-Index&lt;/a&gt; (yes, Jimdo 😍), we can see the real situation of small businesses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compensation:&lt;/strong&gt;
Let&apos;s address the elephant in the room. If there is no compensation increase and my current role is not detrimental to me (which it wasn&apos;t), why would I change my company? I&apos;m not going to disclose the details for now, but my compensation is at a level that makes me feel valued.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Culture:&lt;/strong&gt;
The culture defines a company&apos;s success. When nobody cares about it, it easily becomes chaos. During my interviews (and after interviews), I repeatedly saw and experienced cultural norms. It&apos;s still difficult to judge any organizational culture before experiencing inside, yet, so far, it was the one I wanted to be in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team:&lt;/strong&gt;
As I currently work as an Engineering Manager, I looked at the team and met with members—my direct reports, manager, and peers—as much as I could. They look and sound like fantastic and smart people who will elevate me. From another perspective, it&apos;s a team that I can contribute to and help people to do whatever they are doing the best.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Values:&lt;/strong&gt;
In many interviews, I&apos;ve never seen a company that integrated its values into its hiring process as much as SumUp did. &lt;a href=&quot;https://www.sumup.com/careers/&quot;&gt;The values are public&lt;/a&gt;, and &lt;a href=&quot;https://www.sumup.com/careers/how-we-hire/&quot;&gt;the hiring process&lt;/a&gt;—and &lt;a href=&quot;https://www.sumup.com/en-us/wtf-handbook/&quot;&gt;everything they do&lt;/a&gt;—is tied to their values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Economic Situation:&lt;/strong&gt;
As the recession is coming in Germany, the economic situation of a company was one of the major factors I considered. &lt;a href=&quot;https://techcrunch.com/2022/06/23/sumup-raises-624m-at-8-5b-valuation-with-its-payments-and-business-tech-now-used-by-4m-smbs/&quot;&gt;SumUp raised $624m with an $8.5b evaluation in June&lt;/a&gt;. On top, SumUp has a &lt;a href=&quot;https://www.sumup.com/careers/&quot;&gt;founder mentality&lt;/a&gt;, so they don&apos;t spend money recklessly.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Having said all this, we often have a bias toward not seeing the challenges and problems of an organization from the outside. Interviews are often not well-designed to showcase these problems to candidates. Each organization has its own difficulties and set of problems. While joining any organization, it&apos;s crucial to analyze and discover what they are and decide if the issues are the ones you want to work on.&lt;/p&gt;
&lt;p&gt;Even good organizations often &lt;em&gt;unintentionally&lt;/em&gt; hide the problems because sometimes they can&apos;t talk about them (business-sensitive) or want to convince the candidate to join the team.&lt;/p&gt;
&lt;p&gt;SumUp didn&apos;t hide the challenges they have in the teams and has never been on a secret side of things. So, when I decided to join, I chose the problems I wanted to—and could—solve.&lt;/p&gt;
&lt;p&gt;I had multiple offers, but SumUp was fast during interviews, addressed my concerns, took the time to talk to me each time I had questions, and explained their challenges. Considering everything together, I decided to join SumUp.&lt;/p&gt;
&lt;p&gt;Today (01/11/2022) is my first day at SumUp. I&apos;m excited to join this fantastic team. I hope to share more of my learnings and what I&apos;m working on with all of you later on.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/joining-sumup/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/joining-sumup/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #43: Mektup is changing—Failures and Reflections</title><link>https://candost.blog/newsletter/mektup-43/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-43/</guid><description>Today, I want to reflect on the past ~2 years of Mektup and share some news with you. It&apos;s a bit longer than usual but keep reading till the end.</description><pubDate>Tue, 01 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Today, I want to reflect on the past ~2 years of Mektup and share some news with you. It&apos;s a bit longer than usual, but keep reading till the end.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Over time, I changed, and so did the Mektup. Now, Mektup will adapt to me and become more personal.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;The &lt;a href=&quot;/newsletter/mektup-1/&quot;&gt;very first Mektup&lt;/a&gt; hit your inbox on January 28, 2021, exactly at 10:03 CET. The newsletter Mektup did not begin as a new year&apos;s resolution. My new year&apos;s resolution was to learn to write. Mektup was an experiment and a venue for me to learn how to write and think better. The first Mektups included more links, some graphics, and fewer thoughts. They were &quot;Here is what I&apos;ve done&quot; newsletters.&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;/newsletter/mektup-4/&quot;&gt;the fourth issue&lt;/a&gt;, I removed section graphics, and in &lt;a href=&quot;/newsletter/mektup-5/&quot;&gt;the fifth one&lt;/a&gt;, I started writing about a specific topic in each issue. Although the name Mektup (which means &quot;letter&quot; in Turkish) was born from a concept Anne Lamott mentions in her book Bird by Bird, I started writing fewer letters and more articles in each issue—hence, losing the goal of the newsletter.&lt;/p&gt;
&lt;p&gt;The goal was to send casual letters to my friends about things I found interesting, things I learned, or things I was thinking about. I realized I was going off the track, and there was one reason.&lt;/p&gt;
&lt;p&gt;There is a concept of &quot;finding your niche&quot; in the content creator world. I found myself searching for my niche in every Mektup I wrote. The content creator community hooked me and pulled me away from my way.&lt;/p&gt;
&lt;p&gt;I sought to be more specific with the topics, my audience, and my writing. I focused on software engineers who are on the edge of becoming a leader. I looked for topics they needed to know and learn and tried to put one Mektup after another &lt;em&gt;for them&lt;/em&gt;. You&apos;re one of these people, and I know how much stress you have in this leadership transitioning period. That&apos;s why I focused on &lt;em&gt;helping you&lt;/em&gt;. With that focus, my list of possible topics to write about grew and became a giant that I could not complete in five years.&lt;/p&gt;
&lt;p&gt;But (yes, there is a &lt;em&gt;but&lt;/em&gt;), as my idea list grew, I forgot one crucial thing. While writing each Mektup focused on you, I forgot to focus on &lt;em&gt;how I want to grow&lt;/em&gt;. While doubling down on helping you, &lt;em&gt;I forgot to help myself&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Mektup evolved and changed me together with itself, without me realizing this change. When I started, I was transitioning from a software engineer role to engineering management. And I was thinking of becoming a content creator on the side. That&apos;s why I created a newsletter, and a podcast, gave talks and mentored people.&lt;/p&gt;
&lt;p&gt;One thing I learned during my four months of sick leave for burnout (which was before all these efforts) was to know your limits and accept when you fail with your whole heart, as failure was yours from the beginning. So, this letter is an acceptance of my failure. Failure to find &lt;em&gt;me&lt;/em&gt;, &lt;em&gt;my goal&lt;/em&gt;, &lt;em&gt;my voice&lt;/em&gt;, and &lt;em&gt;my limits&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In every letter I wrote, it was not 100% me. I&apos;m sorry. There were many pieces from me, but I tried to hold some of my thoughts for not going outside of the premise of the newsletter. Although it might be a good thing to write about a specific topic—a niche—it&apos;s not that great for me. I am a human, and I have more complex thoughts and life. Last two years, I put a blanket over my thoughts and hid them in my cabinet, where I stored all my other ideas.&lt;/p&gt;
&lt;p&gt;Yet, some slipped through, such as &lt;a href=&quot;/newsletter/mektup-32/&quot;&gt;Mektup #32&lt;/a&gt; and &lt;a href=&quot;/newsletter/mektup-35/&quot;&gt;Mektup #35&lt;/a&gt;. Looking at these now, I see them as signs. Guideposts. Lighthouses. I like these letters more. I want more of them.&lt;/p&gt;
&lt;p&gt;So, &quot;what&apos;s next?&quot; you may ask.&lt;/p&gt;
&lt;p&gt;Well, first things first: I don&apos;t want to be a content creator anymore. I&apos;m done with that stage of my life. I am a failed content creator, and I acknowledge it. Just writing this down is a relief in itself. Finding it took me about two years, but I&apos;m glad I had the journey.&lt;/p&gt;
&lt;p&gt;Mektup will resume in the same cadence every two weeks on Tuesdays, though the content will change. It will include anything from my professional &lt;em&gt;and&lt;/em&gt; personal life. It will articulate my thoughts, share my learnings in my professional life, and carry my personal journey with it.&lt;/p&gt;
&lt;p&gt;So, you will read more &lt;em&gt;about&lt;/em&gt; me &lt;em&gt;from&lt;/em&gt; me. The topics will include—but won&apos;t be limited to—software engineering, leadership, productivity, software and hardware, consumer behaviors, writing, reading, podcasting, snowboarding, kayaking, hiking, coffee, books, sleep, physical and mental health, music, Berlin/Germany life, learning a new language, philosophy, psychology, and some other topics I find interesting.&lt;/p&gt;
&lt;p&gt;I know there are a ton of different topics above, but I have many interests, and that makes me a human. Denying it would not be wise.&lt;/p&gt;
&lt;p&gt;After the first issue of Mektup, I shared 110 blog posts and 21 podcast episodes. I learned to write and wrote to learn. I learned to talk in public and talked in public to learn. I will continue writing and podcasting and share them at the end of every Mektup.&lt;/p&gt;
&lt;p&gt;I understand it may not be something for you. If it is not, the unsubscribe link is at the bottom of the email. I encourage you to click that link. I would be happy you&apos;re not following me because it&apos;s a conscious choice. Your time and your attention is the most important thing.&lt;/p&gt;
&lt;p&gt;If you want to keep following my journey, I would be thrilled to know that you&apos;re following me with a conscious decision.&lt;/p&gt;
&lt;p&gt;From now on, my goal will be to be myself and embrace my personality. And I hope it will be the same for you, my friend.&lt;/p&gt;
&lt;p&gt;Talk to you soon in another Mektup,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;*P.S.&lt;/strong&gt; &lt;a href=&quot;https://twitter.com/tferriss/status/1581678216984395777&quot;&gt;My all-time favorite author, Ursula K. Le Guin, on answering questions&lt;/a&gt;.*&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;*P.P.S.&lt;/strong&gt; There are more changes in my life. &lt;a href=&quot;/joining-sumup/&quot;&gt;I started a new job today!&lt;/a&gt;*&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-43/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-43/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Behaviors run on Auto-pilot</title><link>https://candost.blog/notes/38b/</link><guid isPermaLink="true">https://candost.blog/notes/38b/</guid><pubDate>Mon, 31 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As we evolved, we developed autopilot behaviors to eliminate suffering and details in our lives. We cannot care about every problem, so we—humans—have built systems in our brains to take shortcuts. These systems turned into issues and biases (also &lt;a href=&quot;https://us.macmillan.com/books/9780374533557/thinkingfastandslow&quot;&gt;Kahneman talks about Heuristics&lt;/a&gt;). If we&apos;re not mindful of these autopilot behaviors, many of our day-to-day &lt;a href=&quot;/notes/19/&quot;&gt;decisions&lt;/a&gt; will be false and even can lead to horrible situations. Once we understand how we behave in some instances, we can design our lives and make decisions to improve them. When &lt;a href=&quot;https://tim.blog/2020/01/20/one-decision-that-removes-100-decisions/&quot;&gt;Tim Ferriss wrote about a decision that removes hundreds of decisions&lt;/a&gt;, the idea was the same—using our brain&apos;s auto-pilot mechanism to &lt;a href=&quot;/notes/27/&quot;&gt;develop helpful habits&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The same situation also happens when we &lt;a href=&quot;/notes/10/&quot;&gt;switch careers&lt;/a&gt;. We need to break some of our habits and develop new ones, such as giving input when we shouldn&apos;t.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19/&quot;&gt;19: Decision-Making Strategies&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10/&quot;&gt;10: Individual Contributor or Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30/&quot;&gt;30: Scientific Thinking and Fact-Checking for A Better Life&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://www.mrmoneymustache.com/2019/01/28/how-to-slow-down-time-and-live-longer/&quot;&gt;How to Slow Down Time and Live Longer&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;One Decision That Removes Hundreds of Decisions&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/38b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/38b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Tell the other side what&apos;s been left out</title><link>https://candost.blog/notes/40e/</link><guid isPermaLink="true">https://candost.blog/notes/40e/</guid><pubDate>Mon, 31 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While receiving &lt;a href=&quot;/notes/21/&quot;&gt;a code review&lt;/a&gt;, we need to express ourselves and coach the other person. There is a reason for any decision we make. Sometimes, people don&apos;t see these reasons. Instead of insisting on being right, we need to tell the people what&apos;s been left out in the feedback/review we receive. If the decisions are not explicit (such as with &lt;a href=&quot;https://www.cognitect.com/blog/2011/11/15/documenting-architecture-decisions&quot;&gt;ADRs&lt;/a&gt;), it&apos;s not easy to see implicit decisions even if the code is well written.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/maximizing-personal-growth-by-understanding/&quot;&gt;Maximizing Personal Growth by Understanding Feedback You Get&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/40e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/40e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Be part of the conversation and also the manager while receiving feedback</title><link>https://candost.blog/notes/44l/</link><guid isPermaLink="true">https://candost.blog/notes/44l/</guid><pubDate>Mon, 31 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Great communicators are both the managers and a part of the feedback conversations, especially when they &lt;a href=&quot;/notes/40/&quot;&gt;receive feedback&lt;/a&gt;. They take steps back, unstuck the conversation, and give it a pause or a direction for the conversation. These people are better suited for facilitating the discussions and are likely to &lt;a href=&quot;/notes/8/&quot;&gt;advance in their careers&lt;/a&gt;. They have the &lt;a href=&quot;/notes/7/&quot;&gt;humility&lt;/a&gt; to admit how they contributed to the now-stuck conversation and can drive the conversation to a result.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40/&quot;&gt;40: Understanding the Feedback You Receive&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44l/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44l/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Making decisions based on three groups</title><link>https://candost.blog/notes/12a/</link><guid isPermaLink="true">https://candost.blog/notes/12a/</guid><pubDate>Sun, 30 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When an engineer &lt;a href=&quot;/notes/10a/&quot;&gt;gains&lt;/a&gt; more autonomy, their decisions have a greater impact and become more important. It&apos;s crucial to develop decision-making skills to make the best decision in various situations. Humans mostly belong to one of three different groups when making decisions: ethical reasoning (evil/good), following the tribe they belong to, and using mental models. Many software engineers stick to their tribes (often following what&apos;s hype at that moment) and destroy the growth advantage they have. Some engineers make decisions for ethical reasons. When &lt;a href=&quot;/notes/11/&quot;&gt;engineers grow&lt;/a&gt;, they have to be aware of why they make a decision and understand their decisions&apos; flaws and blind spots.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10a/&quot;&gt;10a: Growing in IC track in Engineering&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19f/&quot;&gt;19f: Approaches to Decision-Making Styles&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/12a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/12a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Passionate people drive work better</title><link>https://candost.blog/notes/53a1/</link><guid isPermaLink="true">https://candost.blog/notes/53a1/</guid><pubDate>Sat, 29 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Although passion is not required, when we find passionate people, it&apos;s so much more rewarding to work with them. When people are motivated by what they do, they produce better work, are engaged, and collaborate better with others. They also &lt;a href=&quot;/notes/20/&quot;&gt;influence&lt;/a&gt; and &lt;a href=&quot;/notes/33/&quot;&gt;elevate others&lt;/a&gt; around them. As a result, the team is motivated and &lt;a href=&quot;/notes/24/&quot;&gt;works toward achieving the goal&lt;/a&gt; faster and better.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/53a1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/53a1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t leave your best performers alone</title><link>https://candost.blog/notes/53b/</link><guid isPermaLink="true">https://candost.blog/notes/53b/</guid><pubDate>Sat, 29 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When people perform well in their jobs, they earn autonomy. These people usually level up in their jobs. Some leaders neglect to take a look at these people&apos;s careers just because they are performing and don&apos;t want to break them, and they trust these employees. The manager starts to become absentee. Even though these people perform well in their jobs, they need more partners. Absentee managers are on the opposite side of micromanaging. We need balanced managers who can be partners with the best-performing employees, listen to their problems and have dedicated time with them, and even do the work together with them (even if it requires them to get their hands dirty). Otherwise, the best performers will feel lost, unguided, and uninformed.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c3/&quot;&gt;3c3: Giving ownership to people by delegation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Radical Candor by Kim Scott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/53b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/53b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The More accidental complexity the less quality</title><link>https://candost.blog/notes/49a/</link><guid isPermaLink="true">https://candost.blog/notes/49a/</guid><pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When accidental complexity builds up, the &lt;a href=&quot;/notes/39/&quot;&gt;quality of the systems&lt;/a&gt; reduces. I&apos;ve also seen that engineers have a hard time &lt;a href=&quot;/notes/34/&quot;&gt;clearly stating the problems&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/49a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/49a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Fault Tolerance &amp; Resiliency</title><link>https://candost.blog/notes/48a/</link><guid isPermaLink="true">https://candost.blog/notes/48a/</guid><pubDate>Tue, 25 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The systems that can tolerate the faults are called fault-tolerant or resilient. Fully reliable systems are like a dream we can never reach. There will always be a possibility of failure. An earthquake can happen, and the earth might explode. So, full reliability is not possible and not feasible. Therefore, our goal is to have resilient systems, not fully reliable systems.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Designing Data-Intensive Applications by Martin Kleppmann&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/48a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/48a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #42: How to Answer Hiring Manager Interview Questions</title><link>https://candost.blog/newsletter/mektup-42/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-42/</guid><description>What are the hiring managers looking for in behavioral interviews? How to better answer their questions?</description><pubDate>Tue, 18 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;In my previous letters, I wrote you about the growth path in an existing company, covering &lt;a href=&quot;/newsletter/mektup-12/&quot;&gt;promotions&lt;/a&gt;, &lt;a href=&quot;/newsletter/mektup-38/&quot;&gt;promotion expectations&lt;/a&gt;, and &lt;a href=&quot;/newsletter/mektup-10/&quot;&gt;career frameworks&lt;/a&gt; for how to get there. One of the parts of our &lt;a href=&quot;/newsletter/mektup-39/&quot;&gt;career journey&lt;/a&gt; I didn&apos;t touch yet is the interviews for a new job. In this letter, I wanted to talk about the STAR method you can use for your next hiring manager interview.&lt;/p&gt;
&lt;p&gt;Before I get to the method, there is one aspect I need to write about first: &lt;em&gt;what these hiring managers are looking for&lt;/em&gt;. What&apos;s their goal?&lt;/p&gt;
&lt;p&gt;Hiring managers are often the managers of the team you&apos;ll join. As I have been a hiring manager for a while, I can list down the most common three criteria a hiring manager evaluates you. The below three are not the only ones; there are more they look for specific to the role you are applying for.&lt;/p&gt;
&lt;p&gt;The first and the most obvious is, &lt;strong&gt;how do you fit into the current team structure, and can the team work with you&lt;/strong&gt;? They direct questions according to the team they hire. They ask questions about &lt;a href=&quot;/how-to-solve-and-prevent-conflicts/&quot;&gt;conflicts&lt;/a&gt;, how you work with &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;feedback&lt;/a&gt;, &lt;a href=&quot;/dont-take-responsibility-more-and-stop-blaming/&quot;&gt;mistakes&lt;/a&gt; you&apos;ve made, your &lt;a href=&quot;/learning-cone-and-blame-spiral-the-case-of-blame-absorbers/&quot;&gt;learnings&lt;/a&gt; from them, and &lt;a href=&quot;/newsletter/mektup-9/&quot;&gt;your collaboration approach&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Second, they look for &lt;strong&gt;your experience to understand the level you&apos;re in&lt;/strong&gt;. Your leveling decision is not made only on the technical interviews. The technical part is ~40-45% of the job. It&apos;s fundamental, but there is the other half of the job you are expected to do. You might be very knowledgeable on the technical side because you worked and studied hard. &lt;strong&gt;How you leverage that technical side and your approach to work defines your level.&lt;/strong&gt; They ask additional questions about &lt;a href=&quot;/newsletter/mektup-37/&quot;&gt;mentoring&lt;/a&gt;, projects in which you had the lead role, initiatives you took, &lt;a href=&quot;/newsletter/mektup-34/&quot;&gt;processes&lt;/a&gt; you built, and so on.&lt;/p&gt;
&lt;p&gt;Last, &lt;strong&gt;can they support you while you&apos;re working together&lt;/strong&gt;? Hiring managers don&apos;t only consider what they expect &lt;em&gt;from&lt;/em&gt; you; they also think about &lt;em&gt;how&lt;/em&gt; to support you. Because if they can&apos;t, you&apos;ll probably leave the company quickly and they have to start searching &lt;em&gt;again&lt;/em&gt;. &lt;strong&gt;Their goal is to identify &lt;a href=&quot;/newsletter/mektup-21/&quot;&gt;which skills you lack&lt;/a&gt; and need some support&lt;/strong&gt;. Think about the last time you had an awful interview but passed it. That shows that the hiring manager was willing to and had time to support you.&lt;/p&gt;
&lt;p&gt;According to your answers and &lt;em&gt;how&lt;/em&gt; you give those answers, the hiring manager creates a risk and support portfolio. &lt;strong&gt;Their decision will be based on the amount of risk in hiring you.&lt;/strong&gt; The risk portfolio is based on how likely you will be a strong team member, &lt;a href=&quot;/do-not-change-jobs/&quot;&gt;how long you will stay&lt;/a&gt;, and how much you will contribute to the business. The support portfolio is based on which areas you lack skills.&lt;/p&gt;
&lt;p&gt;If you focus on drawing a clear risk and support portfolio, the result will be good for both sides. Sooo, how do you bring clarity to them?&lt;/p&gt;
&lt;p&gt;That&apos;s where the &lt;strong&gt;STAR method&lt;/strong&gt; comes in.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/start-method-for-interviews.png&quot; alt=&quot;STAR Method&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Let&apos;s have an example.&lt;/p&gt;
&lt;p&gt;Think about the question: &quot;&lt;em&gt;Could you tell me about a mentoring you did before?&lt;/em&gt;&quot; You can structure your answer with the STAR method to bring clarity.&lt;/p&gt;
&lt;p&gt;Define the &lt;strong&gt;situation&lt;/strong&gt; first. Then explain what your &lt;strong&gt;task&lt;/strong&gt; was and what &lt;em&gt;exactly&lt;/em&gt; you did—your &lt;strong&gt;actions&lt;/strong&gt;. Last but not least, how your actions &lt;strong&gt;resulted&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Without the STAR method, I often hear answers like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;When I mentor, I begin by understanding the person&apos;s level and what they need. I ask them questions. Once I know, we devise a plan together and meet weekly to stay on track and help the mentee with their struggles. Also, they reach out to me when they have problems they cannot solve.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There is a lot of &lt;em&gt;ambiguity&lt;/em&gt;. Although the explanation gives &lt;em&gt;some&lt;/em&gt; idea about how the person approaches mentoring, it says &lt;em&gt;nothing&lt;/em&gt; about their prior experience. It sounds hypothetical. The hiring manager needs to ask a few more questions to uncover the hidden story.&lt;/p&gt;
&lt;p&gt;Let&apos;s try answering by using the STAR method.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Situation:&lt;/strong&gt; When I mentored a junior engineer in my ex-company, they needed to develop debugging skills. The engineer struggled to find cues for bugs and didn&apos;t know how to use tools correctly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; My goal was to guide them when they struggled and purposely improve the challenges they worked on to step up in debugging.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actions:&lt;/strong&gt; To achieve this, I asked a few questions and watched them while debugging to understand how much they knew the tools and where they got stuck the most. After figuring it out, we created a step-by-step plan and a weekly one-one-one appointment. In each one-one-one meeting, we looked at where they faced problems, solved them together, and looked at the following week&apos;s task. During these meetings, I also give some recommendations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; In three months, the mentee found out most issues without anyone&apos;s help and started helping others who struggled to debug our distributed systems. My mentee later gave a talk on a meetup about the debugging best practices of distributed systems and hosted a workshop in our company about improving the debug-ability of our services.&lt;/p&gt;
&lt;p&gt;The ambiguity is &lt;em&gt;gone&lt;/em&gt;. When you answer like this, it also sounds like you know what you&apos;re talking about. That&apos;s the beauty of using methods, frameworks, and mental models. They put your experience in a shape that is visible to others. The STAR method is no different. When you use it in behavioral interviews, it brings clarity &lt;em&gt;&lt;strong&gt;and&lt;/strong&gt;&lt;/em&gt; visibility.&lt;/p&gt;
&lt;p&gt;On top, when you make your approach visible, the hiring manager has a better idea of which level you&apos;re in and can also understand where they can support you. Thus, &lt;strong&gt;it reduces the risk of hiring you&lt;/strong&gt;—the decision point for a hiring manager. ;)&lt;/p&gt;
&lt;p&gt;Although the method is helpful, it won&apos;t apply to every situation. If you have no experience in mentoring, simply saying, &quot;I have no experience in mentoring, but I would approach it this way.&quot; is better than trying to create an imaginary case.&lt;/p&gt;
&lt;p&gt;Until next time, keep your authenticity alive and prepare for interviews!&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;https://blog.pragmaticengineer.com/reverse-interviewing/&quot;&gt;Do reverse interviews.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What I Published Over The Last Two Weeks&lt;/h2&gt;
&lt;h3&gt;Goals and Existence&lt;/h3&gt;
&lt;p&gt;I wrote &lt;a href=&quot;/goals-and-existence/&quot;&gt;an essay&lt;/a&gt; about the goal of life, my life. Or the absence of it. I pursue two questions: How do we know we&apos;re on the &lt;em&gt;right track&lt;/em&gt;? How can we ensure that we&apos;re progressing in the right direction?&lt;/p&gt;
&lt;h3&gt;Hidden Monoliths Affect The Software Design&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/hidden-monoliths-affect-the-software-design/&quot;&gt;This article&lt;/a&gt; is about hidden monoliths that I learned while reading Team Topologies. They are everywhere and affect the software system design. When the organization is aware of its software&apos;s environment, it can thrive. If not, it faces various challenges.&lt;/p&gt;
&lt;h3&gt;Encoding, Decoding, Schemas and Data Evolution&lt;/h3&gt;
&lt;p&gt;I continued reading the book Designing Data-Intensive Applications. Last week, I &lt;a href=&quot;/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;published&lt;/a&gt; &lt;strong&gt;my notes from the fourth chapter&lt;/strong&gt; (read chapters &lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;2&lt;/a&gt;, and &lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;3&lt;/a&gt; here).&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-42/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-42/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Decision-Making Strategies</title><link>https://candost.blog/notes/19/</link><guid isPermaLink="true">https://candost.blog/notes/19/</guid><pubDate>Tue, 18 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Justifying the decisions is a complicated process. When we make any decision, there has to be a case we should justify. &lt;a href=&quot;https://charity.wtf/2022/09/23/the-hierarchy-is-bullshit-and-bad-for-business/&quot;&gt;Charity put it&lt;/a&gt; greatly that if our internal decisions leak, we should be able to justify it well. If we can&apos;t, or we&apos;re ashamed of our decision, then the decision is wrong. Hence, asking ourselves a few simple questions while making decisions is a solid strategy to prevent unwanted results. We can simply ask ourselves, “Would I be able to justify the decision if it&apos;s leaked? Would I be ashamed of it? Am I comfortable with people knowing this decision?” Then we know which decision is wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3a/&quot;&gt;3a: Team Decision Deployment Strategies&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://charity.wtf/2022/09/23/the-hierarchy-is-bullshit-and-bad-for-business/&quot;&gt;Figuring out the wrong decision&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Goals and Existence</title><link>https://candost.blog/goals-and-existence/</link><guid isPermaLink="true">https://candost.blog/goals-and-existence/</guid><description>How do we know that we&apos;re on the right track? How can we ensure that we&apos;re progressing in the right direction?</description><pubDate>Mon, 17 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Many thoughts arrive at a point where we ponder what we want in life and how much it&apos;s unknown to us. Doesn&apos;t matter what we do, try, or think; it&apos;s almost impossible to find our wishes for the end of our life. Where do we want to be in the future while taking our last breaths?&lt;/p&gt;
&lt;p&gt;Answering a question like that is &lt;em&gt;almost&lt;/em&gt; impossible. We have no idea what we will see, live through, remember, and forget. The question is about one thing; it reduces all the factors and experiences into one parameter: a goal, The Goal.&lt;/p&gt;
&lt;p&gt;And I have problems with &lt;em&gt;that&lt;/em&gt; goal.&lt;/p&gt;
&lt;p&gt;Having a life goal doesn&apos;t make that goal happen magically.&lt;/p&gt;
&lt;p&gt;If we have a goal like &quot;I want to be wealthy,&quot; then we may never reach that point and live &lt;em&gt;a miserable life&lt;/em&gt; trying to reach it. Whatever we do today won&apos;t make us feel we achieved anything because our action does not result in today. The wealth will never be today, even if we are a billionaire.&lt;/p&gt;
&lt;p&gt;If we have a goal like &quot;Travel thirty countries,&quot; then once we&apos;re done, we&apos;re done. Yet, life goes on. When we reach a point, we get our reward, and it&apos;s &lt;em&gt;done&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;On the other hand, without any goals, we can focus on what to do every day—choosing our daily habits and routine. We define our daily lives and shape our paths while keeping the options open. In this &lt;em&gt;carpe diem&lt;/em&gt; life, how do we define a long-term plan? Furthermore, how can we define our daily habits that result in the life we want in the end?&lt;/p&gt;
&lt;p&gt;We rarely know what we want today. How can &lt;em&gt;anyone&lt;/em&gt; know what they want in the long term? I only know what I like &lt;em&gt;now&lt;/em&gt;, not tomorrow, and definitely not in a week.&lt;/p&gt;
&lt;p&gt;Do you see the fundamental problem?&lt;/p&gt;
&lt;p&gt;Let&apos;s say I have a goal; how will I know it will be what I want after three months? Meanwhile, if I have a daily habit, how can I ensure that it will result in something that I will want in three months? What if I waste my time on all these habits?&lt;/p&gt;
&lt;p&gt;I may sound negative, but I&apos;m not. I&apos;m &lt;em&gt;questioning&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;A while ago, I abandoned all my goals. Having goals did not do better for me. At that time, I asked myself what would be my &lt;em&gt;high-level&lt;/em&gt; goals so that I at least stay on track. Now, I&apos;m questioning the existence of a track.&lt;/p&gt;
&lt;p&gt;How would &lt;em&gt;any track&lt;/em&gt; be possible and keep me on the way I want to go? At the same time, if I have no goal at all in my life, how can I prevent wasting my time on useless habits and routines? Do I have to have useful habits? Maybe healthy ones are a must. But I&apos;m unsure about its usefulness. What is the definition of useful?&lt;/p&gt;
&lt;p&gt;Do you follow what I&apos;m saying? How can we define the usefulness of anything?&lt;/p&gt;
&lt;p&gt;Is reading a book useful? What about a bad book that ends up as a waste of time for us?&lt;/p&gt;
&lt;p&gt;Is playing an instrument useful? What about we stop playing after three months?&lt;/p&gt;
&lt;p&gt;What about spending hours on social media like Instagram? How about we follow all useful and informative accounts on Instagram?&lt;/p&gt;
&lt;p&gt;Do you see the problem? Who decides &lt;em&gt;the usefulness of a thing&lt;/em&gt;?&lt;/p&gt;
&lt;p&gt;If I watch YouTube for hours but only informative videos, did I do something useful or waste my time?&lt;/p&gt;
&lt;p&gt;The same dilemma exists in goals. If we have worthwhile goals (specific or high-level ones), we will be unhappy &lt;em&gt;right after&lt;/em&gt; we reach one and look to the next. If we have no goal at all, how can we decide which habits and routines we will build so that we will reach a point that will pay out as useful in the future?&lt;/p&gt;
&lt;p&gt;You might say, &quot;Candost, even if you stop the habit after six months, you still learn something.&quot; Yes, that&apos;s true.&lt;/p&gt;
&lt;p&gt;But what if I keep doing it for twenty years—start and stop habits? What would you say then? You will see Candost, &lt;em&gt;the master of none&lt;/em&gt;, reached nowhere and struggled to find the path of their life.&lt;/p&gt;
&lt;p&gt;Do you recognize the problem? What is the way out of this? &lt;em&gt;What am I missing?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I can&apos;t claim that I have (or will have) answers. I only have my questions. I don&apos;t think anyone has any answers.&lt;/p&gt;
&lt;p&gt;Sometimes, I think, people—like you and me—avoid these questions. I went on a small quest to seek some answers.&lt;/p&gt;
&lt;p&gt;On a warm sunny evening in the west of Turkey, I asked my father, &quot;Did you have any time in your life in which you questioned your purpose or aim of your life?&quot; He gave me an answer that was—and still is—mind-boggling. It was so simple, yet, shocking.&lt;/p&gt;
&lt;p&gt;He put down the glass of rakı that he just took a big sip, reached to the glass of cold water to soften the rakı&apos;s strong taste, and looked at the garden next to where his chair stood. He said, &lt;em&gt;&quot;No, never, and ever. I had my wife and kids. I was, and still am, the happiest man in the world.&quot;&lt;/em&gt; He is retired, lives in a summer house, and turned 60 this year. He knew what he was talking about.&lt;/p&gt;
&lt;p&gt;But my mind was confused after hearing about my father&apos;s &lt;em&gt;aimless&lt;/em&gt; life. His goal was to raise his children as well-educated people who are good to society. I can&apos;t say if he reached his goal but this goal stroke me with another perspective.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What if&lt;/em&gt; all I&apos;m feeling is the mechanism of human survival and reproduction? What if our instincts, which are evolved over thousands of years, say that our goal is reproduction, and if you have no kids, you will wander? What if the questions are not &lt;em&gt;a cause&lt;/em&gt; but &lt;em&gt;the result&lt;/em&gt; of our thousands of years old instincts?&lt;/p&gt;
&lt;p&gt;I kept observing other people and asking them about their goals. The results are not surprising: many people who don&apos;t have kids have similar questions in their minds, while folks with kids have almost none of them (maybe due to lack of time or another reason that I can&apos;t see). Parents&apos; life goals are often gathered around their children. If you want to test yourself, look around, ask any parent about their goals, and they will say something related to their children.&lt;/p&gt;
&lt;p&gt;I can&apos;t stop thinking: if we don&apos;t have kids, is this our punishment?&lt;/p&gt;
&lt;p&gt;I know I&apos;m talking about different things, and you may wonder where I will go with all these thought lines. Where will all the questions land and be answered? &lt;em&gt;Nowhere&lt;/em&gt;. That&apos;s not &lt;em&gt;the goal&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Questions don&apos;t always need answers. Sometimes, they have to stay unanswered. Learning which question should be left out without an answer is another skill for me to learn.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“To learn which questions are unanswerable, and not to answer them: this skill is most needful in times of stress and darkness.” — Ursula K. Le Guin&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;Goals are a recurring theme I&apos;m pondering and writing about. Complement this post with &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;Growth with Systematic Bliss&lt;/a&gt;, &lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;A Life without Problems—The Happiness&lt;/a&gt; and &lt;a href=&quot;/what-hades-the-game-had-taught-me/&quot;&gt;What Hades Taught Me&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/goals-and-existence/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/goals-and-existence/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Energy Management at Work</title><link>https://candost.blog/notes/62/</link><guid isPermaLink="true">https://candost.blog/notes/62/</guid><description>Avoid Snack Work</description><pubDate>Fri, 14 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Avoid snack work&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Snack work&lt;/em&gt;: Doing side tasks like founding a book club (while you&apos;re under the stress of a high workload in your team) when it doesn&apos;t make sense.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Your energy levels are insufficient, and you cannot run the club sustainably. This type of work—snack work—requires low effort. That&apos;s why it&apos;s so attractive. But it also has a low impact. If you only eat snacks, it won&apos;t fulfill you. Snacks are just short-term solutions. Sometimes &lt;a href=&quot;/newsletter/mektup-23/&quot;&gt;you have to have them&lt;/a&gt;, but you have to be careful. You don&apos;t want to find a book club, moderate other teams&apos; retrospectives, and do your main work at the same time for long periods. You need to &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;focus&lt;/a&gt; and &lt;a href=&quot;/newsletter/mektup-46/&quot;&gt;manage your energy&lt;/a&gt;. You also have to reevaluate snack work all the time. If you receive a promotion, your snack work definition will also change.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/61/&quot;&gt;61: What to delegate?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30a/&quot;&gt;30a: Change is Inevitable&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/65/&quot;&gt;65: Learning and Understanding&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://lethain.com/reminiscing/&quot;&gt;Reminiscing by Will Larson&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://hunterwalk.com/2016/06/18/the-best-startups-resists-snacks-im-not-talking-about-food/&quot;&gt;The Best Startups Resist Snacks (&amp;amp; I’m Not Talking About Food)&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/62/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/62/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Hidden Monoliths Affect the Software Design</title><link>https://candost.blog/hidden-monoliths-affect-the-software-design/</link><guid isPermaLink="true">https://candost.blog/hidden-monoliths-affect-the-software-design/</guid><description>Hidden monoliths are everywhere and affect the software system design. When the organization is aware of its software&apos;s environment, it can thrive. If not, it faces various challenges.</description><pubDate>Wed, 12 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the things I learned and enlightened while reading Team Topologies is there are hidden monoliths everywhere.&lt;/p&gt;
&lt;p&gt;Many organizations try to develop fully distributed systems using microservices and have significant problems because they work either in the same office or time zone while using synchronous communication.&lt;/p&gt;
&lt;p&gt;Conway&apos;s law says organizations will develop systems reflecting their communication structures.&lt;/p&gt;
&lt;p&gt;If an organization uses a monolithic office or highly depends on sync communication like video calls, it&apos;s difficult for teams to design clear boundaries between systems.&lt;/p&gt;
&lt;p&gt;If we extend Conway&apos;s law, we can say that whatever monolithic we have will impact our &lt;a href=&quot;/how-to-approach-software-architecture-design/&quot;&gt;system design&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Be it a monolithic CI/CD, monolithic tech stack (org tech standards), monolithic time zone, monolithic way of communication (using video calls all the time), etc.&lt;/p&gt;
&lt;p&gt;Also, I&apos;m sure some organizations are aware of these. An organization can be in the same office but mindfully separate teams to prevent unnecessary communication.&lt;/p&gt;
&lt;p&gt;These organizations make a conscious choice and deliberately take care of their systems by focusing on hidden structures that affect teams and infrastructure.&lt;/p&gt;
&lt;p&gt;On the other hand, some organizations don&apos;t even have an office, work asynchronously, and yet, develop &lt;a href=&quot;/books/splitting-the-monolith/&quot;&gt;monolithic software&lt;/a&gt; (e.g., the old WordPress system).&lt;/p&gt;
&lt;p&gt;If the organizations are aware of their hidden monoliths and work deliberately to alter disadvantages or extend advantages, they can create the software effectively.&lt;/p&gt;
&lt;p&gt;Many problems occur when organizations don&apos;t even sense that their hidden structures affect their software design. They create a goal themselves (e.g., use &lt;a href=&quot;/books/microservices-and-their-benefits/&quot;&gt;microservices&lt;/a&gt;, use monolith, use domain-driven design, etc.) and follow their decision without the holistic picture.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The solution:&lt;/em&gt; we need to look around the (virtual) office, systems, and pipelines and analyze how they impact the software and team design. If we are destined to obey Conway&apos;s Law, how we design the environment in which our software will be developed and maintained will define our system design.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/hidden-monoliths-affect-the-software-design/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/hidden-monoliths-affect-the-software-design/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What to delegate?</title><link>https://candost.blog/notes/61/</link><guid isPermaLink="true">https://candost.blog/notes/61/</guid><description>How to choose what to delegate?</description><pubDate>Wed, 12 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Things to delegate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Work that drains your energy.&lt;/li&gt;
&lt;li&gt;Wherever the work is running, and not so relevant for you anymore.&lt;/li&gt;
&lt;li&gt;Whenever the work is running and more operational work (in case you want to do more strategic work).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c/&quot;&gt;3c: Giving Ownership to People&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/61/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/61/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Who to delegate the work?</title><link>https://candost.blog/notes/61a/</link><guid isPermaLink="true">https://candost.blog/notes/61a/</guid><description>Choosing who to delegate requires thinking</description><pubDate>Wed, 12 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When deciding the person you&apos;re going to delegate the work, look for specific criteria and ask yourself a few questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How much time would you spend when you delegate?&lt;/li&gt;
&lt;li&gt;How much time does this person require from you?&lt;/li&gt;
&lt;li&gt;How bad can their decisions be, and how can they impact you and the business?&lt;/li&gt;
&lt;li&gt;What are the results you expect after delegation?&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c3/&quot;&gt;3c3: Giving ownership to people by delegation&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; My mentor, in one of our one-one-one sessions, I asked him how I could decide to whom I would delegate the work.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/61a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/61a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Teams that enable other teams</title><link>https://candost.blog/notes/56i/</link><guid isPermaLink="true">https://candost.blog/notes/56i/</guid><pubDate>Tue, 11 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The most difficult part of facilitating interaction mode is to create an &lt;a href=&quot;/notes/56d2/&quot;&gt;enabling team that consists of experts&lt;/a&gt;. Because experts rarely want to work as an enabler. However, I think staff engineers are the perfect solution for being in the enabling team. I actually think that they are a one-person enabling team. Some of them still build software but especially &lt;a href=&quot;https://staffeng.com/guides/staff-archetypes&quot;&gt;solver and architect archetypes&lt;/a&gt; are kind of in an enabling mode.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56i/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56i/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Facilitating Teams in Organizations</title><link>https://candost.blog/notes/56i1/</link><guid isPermaLink="true">https://candost.blog/notes/56i1/</guid><pubDate>Tue, 11 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Having facilitating team interaction mode should be across the organization. I think Quality Engineering can work in this mode for some organizations for a certain period. They can coach other teams to increase the quality of the software. The same approach can be taken for DevOps to guide teams to improve their CI/CD pipelines at the beginning of the DevOps journey. This way, the organization gains the strength to build its tools.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56i1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56i1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Setting the environment for team interactions to work</title><link>https://candost.blog/notes/56j/</link><guid isPermaLink="true">https://candost.blog/notes/56j/</guid><pubDate>Tue, 11 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For &lt;a href=&quot;/notes/56f/&quot;&gt;team interaction modes&lt;/a&gt; to work, managers have to work on creating the environment and consistently (and sometimes with big-bang changes, sometimes with deliberate actions) work on setting the expectations for the team. The managers should bring clarity and support people in their expected path. For example, if one team should work in &lt;a href=&quot;/notes/56i1/&quot;&gt;facilitating interaction mode&lt;/a&gt;, the manager should work with individuals to improve their mentoring, coaching, and facilitation skills. Each interaction mode requires different skill sets, and the &lt;a href=&quot;/notes/3/&quot;&gt;manager&apos;s job&lt;/a&gt; is to identify which skills are needed and support the individual growth.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56j/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56j/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Inverse Conway Maneuver gets help from team interaction modes and team types to succeed</title><link>https://candost.blog/notes/56k/</link><guid isPermaLink="true">https://candost.blog/notes/56k/</guid><pubDate>Tue, 11 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.thoughtworks.com/en-de/radar/techniques/inverse-conway-maneuver&quot;&gt;Inverse Conway Maneuver&lt;/a&gt; doesn&apos;t work alone. Knowing &lt;a href=&quot;/notes/56f/&quot;&gt;team interaction modes&lt;/a&gt; and team types helps us use the Inverse Conway Maneuver to our advantage. As I&apos;m not fully convinced that the Inverse Conway Maneuver will work, I cannot see how it can be implemented. Inverse Conway Maneuver can only work on high levels, and technical people often don&apos;t even have a seat on the table while designing teams. This situation can result in bad organization and, therefore, system design. When skilled and experienced software engineers are on the table, I can see this strategy working.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56a/&quot;&gt;56a: Conway&apos;s Law Still Holds True After Decades&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56k/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56k/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Team Design Rules</title><link>https://candost.blog/notes/56l/</link><guid isPermaLink="true">https://candost.blog/notes/56l/</guid><pubDate>Tue, 11 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Designing Teams shouldn&apos;t be with instincts. Leaders should design frameworks to move their teams and define how they work, evolve, and succeed. While planning the organizational changes, leaders should also create team design rules to set the course of teams. The rules should answer questions like:&lt;/p&gt;
&lt;p&gt;If two teams need to collaborate, how long should it be? What should be the next step after collaboration? What would be the expectations?&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30a/&quot;&gt;30a: Change is Inevitable&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56l/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56l/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Monoliths are everywhere</title><link>https://candost.blog/notes/56e/</link><guid isPermaLink="true">https://candost.blog/notes/56e/</guid><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I used to think of &lt;a href=&quot;/notes/48/&quot;&gt;system design&lt;/a&gt; as being formed by technical and communicational patterns. However, everything around software teams and technical infrastructure affects the system design: offices, team distribution, CI/CD, organizational technology standards, and best practices. Even when we want to build microservices while everyone is in the same office, we will produce different designs than when everyone is distributed across multiple offices or works remotely.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/59/&quot;&gt;59: Functional Decomposition in Software Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Team Interaction Modes</title><link>https://candost.blog/notes/56f/</link><guid isPermaLink="true">https://candost.blog/notes/56f/</guid><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When organizations are poorly managed, usually, there is chaos between teams: either more interaction than necessary or no interaction at all where it needs to be. Clearly defining the expected interaction mode will provide clarity, and engineers will understand what is expected from the other team. In return, the organization will benefit by reducing cognitive load and unnecessary conversations in places where there is no need and increasing innovation by using close collaboration between teams where it needs to be.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Two teams shouldn&apos;t collaborate all the time</title><link>https://candost.blog/notes/56g/</link><guid isPermaLink="true">https://candost.blog/notes/56g/</guid><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sometimes, it looks like long-term collaboration is necessary between two teams that are both stream-aligned. But it doesn&apos;t fit into the collaboration team interaction mode framework (e.g., consumer and provider teams were meeting every week). Any friction between these teams should be avoided (if the goal is not discovery or innovation) because its cost will be high. I think organizations shouldn&apos;t have many teams in collaboration mode, although it is highly attractive to imagine collaborating teams closely.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/49/&quot;&gt;49: Accidental Complexity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56g/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56g/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Collaboration harms organizations</title><link>https://candost.blog/notes/56g1/</link><guid isPermaLink="true">https://candost.blog/notes/56g1/</guid><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Organizations mistake collaboration as a good strategy and don&apos;t see its side effects. The effect of two teams collaborating on systems is sometimes invisible. Collaboration between two teams can enforce &quot;great teamwork,&quot; and leaders can praise this style. Yet, when collaboration is not on purpose, it&apos;s more harmful to the company. It creates communication overhead, blurs the responsibility lines, and decreases transparency and clarity around ownership and responsibility.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56g1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56g1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How I think about X-As-A-Service Teams</title><link>https://candost.blog/notes/56h/</link><guid isPermaLink="true">https://candost.blog/notes/56h/</guid><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Creating an X-as-a-service team communication mode has advantages and disadvantages. The biggest con I see is the operational cost of setting the team up. The forming stage requires deliberate actions and doing them consistently in a changing business environment. When the business doesn&apos;t think of the platform as a product (which often happens), the results are heartbreaking. The initial stage of the X-as-a-service team should be well-managed and supported by the organization.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c/&quot;&gt;3c: Giving Ownership to People&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a/&quot;&gt;19a: Knowns and Unknowns&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56h/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56h/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Separate Concerns to Relax the cognitive load by using complicated subsystem teams</title><link>https://candost.blog/notes/56d3/</link><guid isPermaLink="true">https://candost.blog/notes/56d3/</guid><pubDate>Sun, 09 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Using Complicated Subsystem Teams separates the complicated part to reduce the cognitive load on &lt;a href=&quot;/notes/56d1/&quot;&gt;stream-aligned teams&lt;/a&gt;. Separation of concerns and decoupling are fundamental techniques in software engineering. The key part and difficulty is the sustainability of a complicated subsystem team. When this team is formed by experts, it&apos;s difficult to refill if someone resigns.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56d3/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56d3/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Platform Teams</title><link>https://candost.blog/notes/56d4/</link><guid isPermaLink="true">https://candost.blog/notes/56d4/</guid><pubDate>Sun, 09 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Getting the platform right is difficult because of the product pressure. Once the platform team works efficiently, it&apos;s fantastic to have because the team &lt;a href=&quot;/notes/56d1/&quot;&gt;takes a lot of organizational burdens away from stream-aligned teams&lt;/a&gt; along with the cognitive load. Documentation is crucial to reduce the synchronous communication lines to prevent distractions. The platform&apos;s mission should be to increase the focus of its users and let them thrive. It will take time and a lot of effort, but the result is great.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/50/&quot;&gt;50: Service Level Agreements/Indicators/Objectives - Percentiles&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/49/&quot;&gt;49: Accidental Complexity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56d4/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56d4/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Use Platform teams In The Organization</title><link>https://candost.blog/notes/56d4a/</link><guid isPermaLink="true">https://candost.blog/notes/56d4a/</guid><pubDate>Sun, 09 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Platform teams have a lot of organizational work besides designing and coding the platform. Without organizational work, they cannot function well. Organizations have to ensure that platforms&apos; APIs are well-designed and documented. Their consumers should start using the platform without the platform team&apos;s input and continue doing so. The only interaction between the platform and its consumers should be around understanding what consumer teams need so that platform&apos;s roadmap will be shaped efficiently. For platform teams to succeed on all fronts, organizations should keep them as fundamental.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2a/&quot;&gt;2a: Take breaks to write better&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/59/&quot;&gt;59: Functional Decomposition in Software Systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56d4a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56d4a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>DDIA: Encoding, Decoding, Schemas, and Data Evolution in Databases</title><link>https://candost.blog/books/ddia-encoding-decoding-schemas-and-data-evolution/</link><guid isPermaLink="true">https://candost.blog/books/ddia-encoding-decoding-schemas-and-data-evolution/</guid><description>The underlying approach to encoding and decoding decides how we approach data evolution and how we use schemas.</description><pubDate>Fri, 07 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article is part of my notes from Chapter 4 on &lt;a href=&quot;https://dataintensive.net/&quot;&gt;Designing Data-Intensive Applications by Martin Kleppmann&lt;/a&gt;. You can read other chapter notes as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;Chapter 2: Data Models and Query Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;Chapter 3: Data Storage and Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;Chapter 4: Encoding, Decoding, Schemas, and Data Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Chapter 5: Data Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;Chapter 6: Database Partitioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Chapter 7: Transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;Chapter 8: The Trouble with Distributed Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;Chapter 9: Consistency and Consensus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chapter 10: Batch Processing&lt;/li&gt;
&lt;li&gt;Chapter 11: Stream Processing&lt;/li&gt;
&lt;li&gt;Chapter 12: The Future of Data Systems&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;The previous chapter&lt;/a&gt; talked about data storage and different ways to store data. This chapter talks about schemas, encoding, and decoding.&lt;/p&gt;
&lt;p&gt;When we look at relational databases, they have one schema defined at any point in time. Non-relational databases, on the other hand, have no schema defined; the data model can be different for each document for the same data in the application.&lt;/p&gt;
&lt;p&gt;In both data storage models, the data never stays the same. The requirements and systems evolve, and data schema changes. When these changes happen, two concerns pop up: backward and forward compatibility.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Backward compatibility:&lt;/strong&gt; new code can read the old data schema
&lt;strong&gt;Forward compatibility:&lt;/strong&gt; the old code can read the new data schema.&lt;/p&gt;
&lt;p&gt;Some applications might need to support both at any time because they might use rolling upgrades or the clients have optional upgrades. These strategies force systems to be compatible both forward and backward.&lt;/p&gt;
&lt;h2&gt;Encoding Data&lt;/h2&gt;
&lt;p&gt;There are at least two data representations:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In memory data: Objects, structs, arrays, lists, etc. Optimized for efficient access and manipulation by CPU.&lt;/li&gt;
&lt;li&gt;Self-contained bytes to transfer in-memory data to a file or over a network. As in-memory data uses pointers and they are useless while saving or sending data, we use encoding to convert data to bytes. Translation from in-memory to a byte sequence is called &lt;em&gt;encoding&lt;/em&gt; (serialization), and the other way around is called &lt;em&gt;decoding&lt;/em&gt; (deserialization).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Do not use language-specific (e.g., &lt;code&gt;java.io.Serializable&lt;/code&gt;) formats to encode the data because they are inefficient, bad with versioning, tie you into a particular language, and create security problems like remote arbitrary code execution.&lt;/p&gt;
&lt;h3&gt;JSON, XML, and Their Binary Variants&lt;/h3&gt;
&lt;p&gt;The most common encoding formats are JSON and XML. Both are common and widely loved and hated. Each has its own pros and cons.&lt;/p&gt;
&lt;p&gt;Encoding numbers is problematic in all encoding formats. JSON supports it but not for big numbers. It also does not have precision in floating-point numbers.&lt;/p&gt;
&lt;p&gt;JSON and XML don&apos;t support sending binary data. People use base64 encoding and pass data as a string, which increases the data size by 33%.&lt;/p&gt;
&lt;p&gt;Schema support is optional for both XML and JSON.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;id&quot;: &quot;unique-id&quot;,
  &quot;key&quot;: &quot;value&quot;,
  &quot;foo&quot;: &quot;bar&quot;,
  &quot;number&quot;: 123
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In binary variants of JSON and XML, we can get rid of empty spaces to reduce size. But the data still include field names because these binary variants don&apos;t prescribe a schema and use field names to match data with keys.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As long as people agree on the encoding format, it doesn&apos;t matter that much which one they choose. The difficulty is agreeing on anything in organizations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Thrift and Protocol Buffers&lt;/h3&gt;
&lt;p&gt;Both Thrift and Protocol Buffers &lt;strong&gt;require&lt;/strong&gt; schemas for encoding data. The encoded data doesn&apos;t include field names compared to JSON and XML. The exact encoding differs in Thrift and ProtoBuf.&lt;/p&gt;
&lt;p&gt;Both use field tags and encode data using data types and lengths. Each encoding protocol differs in ways of encoding (using variable-length vs. fixed length for data, different bytes vs. merging field type and tag number into a single byte, etc.). The schemas include &lt;code&gt;required&lt;/code&gt; or &lt;code&gt;optional&lt;/code&gt; marks for data fields, but they are not encoded, only used as a routine check.&lt;/p&gt;
&lt;p&gt;The same example in Thrift:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;struct Request {
  1: required string id
  2: optional string key
  3: optional string foo
  4: optional i32 number
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In ProtoBuf (similar to Thrift but indexes are at the end):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;message Request {
  required string id = 1;
  optional string key = 2;
  optional int32 foo = 3;
  optional int32 number = 3;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Both have code-generation tools that generate classes for many programming languages from a schema definition.&lt;/p&gt;
&lt;h4&gt;Schema Evolution and Field Tags&lt;/h4&gt;
&lt;p&gt;Schemas eventually change. Using field tags correctly enables us to support forward and backward compatibility. For example, when removing a field, we cannot use the same field tag again to support forward compatibility. The same way goes for &lt;code&gt;required&lt;/code&gt; fields. All new fields that come &lt;em&gt;after the initial deployment&lt;/em&gt; must support backward compatibility. When we set ourselves some ground rules, we can easily support compatibility in both directions.&lt;/p&gt;
&lt;p&gt;Thrift with introducing and removing new fields (same example):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;struct Request {
  1: required string id
  2: optional string key
  // 3: optional string foo (removed because of a change in requirements)
  4: optional i32 number
  5: optional i32 new_number
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Avro&lt;/h3&gt;
&lt;p&gt;Avro separates writer&apos;s and reader&apos;s schemas to offer flexibility, forward and backward compatibility, documentation, and code generation.&lt;/p&gt;
&lt;p&gt;In the encoded data, Avro doesn&apos;t keep any field tags or names; thus, it reduces the size of the message. Avro uses the order of the data to match encoded data to decode schema (reader&apos;s schema).&lt;/p&gt;
&lt;p&gt;While decoding, if the schemas are different, it compares the reader&apos;s and writer&apos;s schemas to match fields by looking at field names and types. When it cannot match, it uses default values. Reader&apos;s and writer&apos;s schemas don&apos;t have to match exactly; they have to be &lt;em&gt;compatible&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;After the data is decoded, the reader has access—and uses—the writer&apos;s schema. There are various ways we can provide the writer&apos;s schema to the reader. We can&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Store all schemas by version in the database and return them at the beginning.&lt;/li&gt;
&lt;li&gt;Include the schema version in the initial request header.&lt;/li&gt;
&lt;li&gt;Include the version number at the beginning of each record so that the reader first looks up the schema by the version and decodes the rest of the data after.&lt;/li&gt;
&lt;li&gt;Set the scheme version at the beginning of a connection and use that schema for the lifetime of the connection.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The Merits of Schemas&lt;/h3&gt;
&lt;p&gt;The schema-based encoding made the adaption of Thrift, ProtoBuf, and Avro faster. These days, there are a lot of tooling and features around them.&lt;/p&gt;
&lt;p&gt;Binary encoding-based schemas are more compact than JSON and XML.&lt;/p&gt;
&lt;p&gt;Overall, schemas provide up-to-date documentation. They allow us to check backward and forward compatibility &lt;em&gt;before&lt;/em&gt; deploying any change and to generate client codes to type check in compile time.&lt;/p&gt;
&lt;h2&gt;Modes Of Dataflow&lt;/h2&gt;
&lt;p&gt;We talked about the process of dataflow—encoding, decoding—and how to offer mechanisms for dataflow. Now, it&apos;s time to talk about how we move data from one place to another and where we use encoding and decoding.&lt;/p&gt;
&lt;h3&gt;Dataflow Through Databases&lt;/h3&gt;
&lt;p&gt;Both backward and forward compatibility is required for databases. Because we often access the data we wrote by using the previous schema. We often read newer data with old code (e.g., during a rolling upgrade).&lt;/p&gt;
&lt;p&gt;Migrating data is one strategy, but it is expensive, and we want to avoid it as much as possible. &quot;Data outlives code&quot; means we write data that might not be rewritten for years while writing new data every second. Also, we might take snapshots of data for backup and encode it with that latest schema, even though the database might include data written with different schemas.&lt;/p&gt;
&lt;h3&gt;Dataflow Through Services: REST and RPC&lt;/h3&gt;
&lt;p&gt;Using HTTP as an underlying protocol makes a service web service—even though it&apos;s not limited to the web. There are two approaches to web services: REST and SOAP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;REST (Representational State Transfer):&lt;/strong&gt; It&apos;s &lt;strong&gt;not&lt;/strong&gt; a protocol but a design philosophy. REST uses HTTP features, URLs, and simple data formats. There is no consensus on API versioning in RESTful APIs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SOAP (Simple Object Access Protocol):&lt;/strong&gt; XML-based protocol for making network API requests. It aims to be independent of HTTP. A SOAP web service uses &lt;em&gt;Web Services Description Language (WSDL)&lt;/em&gt; to define the API. WDSL enables code generation.&lt;/p&gt;
&lt;p&gt;SOAP users heavily rely on tooling, code generation, and IDEs, as the WDSL is not human-readable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Remote Procedure Call (RPC)&lt;/strong&gt; model makes a network request look like a local function call. This approach is fundamentally flawed for various reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Network requests are unpredictable (request or response may be lost),&lt;/li&gt;
&lt;li&gt;Network request has a state that function call doesn&apos;t, which is returning without data (timeout),&lt;/li&gt;
&lt;li&gt;We never know if a network request went through or not, so we need to build idempotency to handle network request failure cases,&lt;/li&gt;
&lt;li&gt;Network request&apos;s time varies when compared to local call, which always executes at the same time wherever it is called,&lt;/li&gt;
&lt;li&gt;You need encoding and decoding in network requests and responses.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The new generations of RPC frameworks are more explicit about these facts.&lt;/p&gt;
&lt;p&gt;The common usage of RPC is for internal communication processes within an organization. REST is predominant for public APIs (also good for experimentation and debugging).&lt;/p&gt;
&lt;p&gt;RPC servers and clients need to be deployed independently (update servers first, clients second; backward compatibility on requests, forward compatibility on responses).&lt;/p&gt;
&lt;p&gt;Using RPC across organizational boundaries makes service compatibility harder. Compatibility must be maintained for a long time because the services often don&apos;t have any control over their clients and cannot force an upgrade.&lt;/p&gt;
&lt;h3&gt;Message-Passing Dataflow&lt;/h3&gt;
&lt;p&gt;In message-passing dataflow, the message is delivered in low latency and is not sent via a direct network connection but goes over a message broker that stores the messages temporarily. Asynchronous message-passing systems are somewhere between RPC and databases.&lt;/p&gt;
&lt;p&gt;Message broker has certain advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It improves system reliability because it acts as a buffer in downtime.&lt;/li&gt;
&lt;li&gt;It automatically redelivers messages to crashed processes.&lt;/li&gt;
&lt;li&gt;The sender doesn&apos;t need to know the service IP.&lt;/li&gt;
&lt;li&gt;One message can be sent to multiple recipients.&lt;/li&gt;
&lt;li&gt;Decouples the sender from the recipient.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The sender doesn&apos;t wait for the message to be delivered; the communication is one way.&lt;/p&gt;
&lt;h4&gt;Message Brokers&lt;/h4&gt;
&lt;p&gt;One process sends a message to a queue or topic, and the broker ensures the delivery of that message to one or more consumers. There can be any number of message producers and consumers on the same topic.&lt;/p&gt;
&lt;p&gt;Message brokers don&apos;t enforce a data schema. Keeping encoding and decoding forward and backward compatible gives the flexibility to change publishers and consumers easily.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/ddia-encoding-decoding-schemas-and-data-evolution/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>DDIA: What is Replication in Distributed Systems</title><link>https://candost.blog/books/data-replication-in-distributed-systems/</link><guid isPermaLink="true">https://candost.blog/books/data-replication-in-distributed-systems/</guid><description>Replication is keeping the copies of data between multiple machines that are connected via a network.</description><pubDate>Thu, 06 Oct 2022 09:53:52 GMT</pubDate><content:encoded>&lt;p&gt;This article is part of my notes from Chapter 5 on &lt;a href=&quot;https://dataintensive.net/&quot;&gt;Designing Data-Intensive Applications by Martin Kleppmann&lt;/a&gt;. You can read other chapter notes as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;Chapter 2: Data Models and Query Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;Chapter 3: Data Storage and Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;Chapter 4: Encoding, Decoding, Schemas, and Data Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Chapter 5: Data Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;Chapter 6: Database Partitioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Chapter 7: Transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;Chapter 8: The Trouble with Distributed Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;Chapter 9: Consistency and Consensus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chapter 10: Batch Processing&lt;/li&gt;
&lt;li&gt;Chapter 11: Stream Processing&lt;/li&gt;
&lt;li&gt;Chapter 12: The Future of Data Systems&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;Replication is keeping the copies of data between multiple machines that are connected via a network.&lt;/p&gt;
&lt;p&gt;We replicate data to either serve users from the closest data center to &lt;em&gt;reduce latency&lt;/em&gt;, allow the system to continue working if one part fails (to &lt;em&gt;increase availability and fault tolerance&lt;/em&gt;), or scale the machines to serve more read requests to &lt;em&gt;increase read throughput&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;:::note
🧶 &lt;em&gt;All the difficulties in replication are related to handling changes in replicated data.&lt;/em&gt;
:::&lt;/p&gt;
&lt;p&gt;In this chapter, we&apos;ll see leaders, followers, multiple-leader and leaderless systems, synchronous and asynchronous replications, problems in all these strategies, how to solve them, and the pros and cons of each system. We&apos;ll start with understanding the leader and follower, synchronous and asynchronous replication, and dive into three different strategies to replicate data using the leader-follower structure.&lt;/p&gt;
&lt;h2&gt;Leaders and Followers&lt;/h2&gt;
&lt;p&gt;A &lt;em&gt;replica&lt;/em&gt; means a node that holds a copy of the database.&lt;/p&gt;
&lt;p&gt;When there are multiple replicas, how do we ensure the data client writes copied to all replicas?&lt;/p&gt;
&lt;p&gt;We assign one replica as a &lt;em&gt;leader&lt;/em&gt; and distribute data from the leader to others—&lt;em&gt;followers&lt;/em&gt;. In this setup, whenever a client wants to insert, update, or delete data, it goes to the leader, and the leader&apos;s job is to pass down that operation to follower replicas. Although the client is limited to talking to the leader for the write operations, it can read data either from the leader or any follower.&lt;/p&gt;
&lt;p&gt;How does the leader effectively send the data changes to its followers?&lt;/p&gt;
&lt;h3&gt;Synchronous vs. Asynchronous Replication&lt;/h3&gt;
&lt;p&gt;A leader can send data changes to a follower either synchronously or asynchronously. There are pros and cons for each implementation. Database systems can also combine both approaches (a leader synchronously replicating to one follower while using asynchronous replication with others).&lt;/p&gt;
&lt;p&gt;In fully synchronous replication, the write operation awaits the data replication to a follower to succeed. If any problem occurs during replication, the write operation returns a failure. In sync replication, the data will be &lt;em&gt;available&lt;/em&gt; and &lt;em&gt;durable&lt;/em&gt; in at least two nodes—leader and follower. If the leader fails, we can assign the synced follower as a new leader without the risk of losing data. However, if a follower slows down for any reason (like network latency), the leader will have to block all incoming write requests and can become unresponsive until the follower is back up again.&lt;/p&gt;
&lt;p&gt;In fully asynchronous replication, there is no problem with waiting for followers in write operations and no blocking the clients. Writing to the leader returns a response without waiting for replication. But if the leader fails in the middle of a replication operation, we lose the data that&apos;s not replicated to followers. The data is &lt;em&gt;not durable&lt;/em&gt; in the advantage of &lt;em&gt;write availability&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;When we consider the pros and cons of both replication strategies, we often combine async and sync (often called &lt;em&gt;semi-synchronous&lt;/em&gt;): the leader synchronously replicates to one or two nodes and uses asynchronous replication with the rest of the followers.&lt;/p&gt;
&lt;h3&gt;Handling Node Outages&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Follower Failure:&lt;/strong&gt; Each follower keeps a log of data changes it applied before. When any follower fails and restarts, it can request new data changes from the leader by looking at its last logged data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Leader failure:&lt;/strong&gt; The leader&apos;s failure and assigning a new leader is called a &lt;em&gt;failover&lt;/em&gt;. Failovers can be done manually or automatically. The automatic process looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Determine that the leader has failed.&lt;/li&gt;
&lt;li&gt;Choose a new leader.&lt;/li&gt;
&lt;li&gt;Reconfigure the system to use the new leader.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Albeit looking simple, the whole automatic process is fraught with possible problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What happens when the new leader doesn&apos;t receive all updates from the old leader (if async replication is used)?
&lt;ul&gt;
&lt;li&gt;When the old leader rejoins, there may be conflicts. In that situation, we may discard the old leader&apos;s data fully, but it harms &lt;em&gt;data durability&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Discarding data has more problems if that data is used in other systems and coordination (side effects).&lt;/li&gt;
&lt;li&gt;What happens when two leaders are configured to be a leader (in certain fault scenarios, it&apos;s possible)? If both leaders accept writes and have no process of handling conflicts, it&apos;s dangerous. We may shut down one of them, but we have to be careful in designing that mechanism.&lt;/li&gt;
&lt;li&gt;How can we define the right timeout to declare the leader has failed?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now we know the sync and async replication and handling node outages. How can we add a new node to increase &lt;em&gt;read throughput&lt;/em&gt; and &lt;em&gt;fault tolerance&lt;/em&gt;?&lt;/p&gt;
&lt;h3&gt;How to Set Up A New Follower&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Take a snapshot of the leader without blocking the writes.&lt;/li&gt;
&lt;li&gt;Copy the snapshot to a new follower.&lt;/li&gt;
&lt;li&gt;Request data changes from the leader since the snapshot is taken.&lt;/li&gt;
&lt;li&gt;Process the data changes on the new follower. Then, the follower caught up.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once we set up a new follower, it&apos;s time for it to receive data updates from the leader. That&apos;s done via replication logs.&lt;/p&gt;
&lt;h3&gt;Implementation of Replication Logs&lt;/h3&gt;
&lt;p&gt;Each time data is changed, the system replicates data by sending logs from leader to followers in one of the following ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Statement-based replication:&lt;/strong&gt; Replicating every &lt;em&gt;write statement&lt;/em&gt; (&lt;code&gt;INSERT&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt;, etc.) to followers. This method is problematic when there are nondeterministic functions in the statements (e.g., &lt;code&gt;RAND()&lt;/code&gt; or &lt;code&gt;NOW()&lt;/code&gt;), when statements use an auto-incrementing column (the order of statements has to be precise in this case), or statements have side effects (unless the side effects are deterministic).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write-ahead log (WAL) shipping:&lt;/strong&gt; &lt;a href=&quot;/books/data-storage-and-retrieval/#b-trees&quot;&gt;We talked about WAL before with SSTables, LSM-trees, and B-Trees&lt;/a&gt;. The WAL is append-only, and the leader can send logs to follower replicas; then, the follower builds the exact same data structures as the leader has. WAL shipping is used by PostgreSQL and Oracle. The disadvantage is that it couples data to the storage engine as WAL operates at the byte level. Thus, upgrading storage engines to new versions can be problematic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logical (row-based) log replication:&lt;/strong&gt; Similar to write-ahead logs, but to decouple storage engine logs and replication, a logical log is used. For a relational database, logical log records actions &lt;em&gt;per row&lt;/em&gt;. These logs include all columns if a new row is inserted. If a row is deleted, they include enough information to identify the row. If the data is updated, logs include all (or only updated) columns of the row. The decoupling allows us to upgrade the storage engine when needed without much hassle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trigger-based replication:&lt;/strong&gt; Predefined database replication methods are not enough when we want to customize replication to our use case. Databases offer &lt;em&gt;write triggers&lt;/em&gt; for application developers to allow them to do something when a write occurs. App developers can register their codes that are automatically executed when any write action happens.
Databases implement this method by logging the change to another table that can be read by an external process to replicate the data. Trigger-based replication is more error-prone and has greater overheads.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now we know how the replication logs work, we need to understand the problems we face when there is a lag between leader and followers during the replication process and how to approach these problems.&lt;/p&gt;
&lt;h2&gt;Problems with Replication Lag&lt;/h2&gt;
&lt;p&gt;Using synchronous replication for all followers is not a great solution, as any small problem in replication (like a network lag) can block all write operations. On the other hand, asynchronous replication also has a tradeoff: in ideal scenarios, replication takes a fraction of a second, but when there is a network lag or any other issue, the replication takes much longer and creates &lt;em&gt;replication lag&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;When a client reads data both from the leader and a lagged follower at the same time, it will see differences in data. If a client waits for a follower to catch up and reads it, it will see updated data. That&apos;s why these systems (systems with replication lag) are called &lt;em&gt;eventually consistent.&lt;/em&gt; The word &quot;eventually&quot; is intentionally vague because it&apos;s not certain how long the lag can be.&lt;/p&gt;
&lt;p&gt;There are ways to overcome lag problems and/or shorten them.&lt;/p&gt;
&lt;h3&gt;Read-After-Write Consistency&lt;/h3&gt;
&lt;p&gt;If a client writes some data and immediately reads it, how can we ensure that it reads the latest version of the data? As write operations go to the leader and read goes to the follower, the replication lag may create inconsistency during these situations.&lt;/p&gt;
&lt;p&gt;To solve the problem, the client can read from the leader right after updating the data. This strategy is known as &lt;em&gt;read-after-write consistency&lt;/em&gt; (or &lt;em&gt;read-your-writes&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;There are a few ways to implement read-after-write consistency:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When the user wants to read something they &lt;em&gt;may&lt;/em&gt; have modified, read it from the leader. For example, in social networks, a user can always read their own profile from the leader replica because only the user updates their profile, no one else. The user can read other profiles from the followers.&lt;/li&gt;
&lt;li&gt;If most things in the app are editable by the user, use other criteria for the decision: for example, the last update time. If a user updated data in the last two seconds, use the leader replica while reading it.&lt;/li&gt;
&lt;li&gt;Another strategy is saving the last timestamp user wrote something. During the next read operation, the system can then check the timestamp and read from the leader to reflect updates at least until that timestamp. There are more complications if a user accesses the data from multiple devices, but we won&apos;t get into it now.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Monotonic Reads&lt;/h3&gt;
&lt;p&gt;Replication lags sometimes cause moving backward in time: a user writes data and reads it from one replica with a lesser replication lag, then refreshes the screen and reads old data from a follower with a greater replication lag. The user sees new data and old data in sequence. Monotonic reads mean that the user won&apos;t see the old data after they have seen the new data. It&apos;s a lesser guarantee than strong consistency but stronger than eventual consistency. One way to implement this is to ensure the user always reads from &lt;em&gt;the same&lt;/em&gt; replica.&lt;/p&gt;
&lt;h3&gt;Consistent Prefix Reads&lt;/h3&gt;
&lt;p&gt;Sometimes, data has causality, and the order of the write operations is crucial (like messages in a chat app); when different replicas are used in conversation, anomalies like broken message sequences can occur. Preventing these anomalies requires consistent prefix reads. This problem happens more in sharded databases. One solution is writing the causally related data to the same shard, but there are also some algorithms we can use. We&apos;ll talk about sharding (or partitioning) in the next chapter.&lt;/p&gt;
&lt;h3&gt;Solving Replication Lag&lt;/h3&gt;
&lt;p&gt;Replication lag is complex to handle in the application. In the application code, don&apos;t pretend the replication is synchronous when it&apos;s actually asynchronous.&lt;/p&gt;
&lt;p&gt;Transactions are there to prevent complexity in the application. Their role is to provide stronger consistencies. The book dives into it in later chapters.&lt;/p&gt;
&lt;h2&gt;Multi-Leader Replication&lt;/h2&gt;
&lt;p&gt;In this model, we have more than one leader who accepts writes, and each leader also acts as a follower to the other leaders.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Avoid multi-leader replication if you can. The benefits rarely outweigh the drawbacks it has.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are only certain situations where multi-leader configuration is reasonable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Multi-datacenter operation:&lt;/strong&gt; If the data needs to stay geographically close to users or the system needs to reduce the risk of an entire data center failure, choosing the closest data center as a leader and replicating writes to other data centers asynchronously makes sense (while having a single leader replica in each data center). This strategy increases the &lt;em&gt;perceived performance&lt;/em&gt; and better &lt;em&gt;tolerates data center outages&lt;/em&gt; and &lt;em&gt;network problems&lt;/em&gt;(e.g., interruptions don&apos;t prevent writes). The downsides are &lt;em&gt;conflicts&lt;/em&gt; and strategies to resolve them. Also, configuration pitfalls occur if there are auto-incrementing keys, triggers, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline working clients:&lt;/strong&gt; In theory, if a client works offline, each client becomes a leader because they keep data on their local system. Conflict resolution becomes a real problem because data synchronization can happen after hours, days, or even weeks. Mobile calendar apps are good examples.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collaborative Editing:&lt;/strong&gt; Think of apps like Miro or Google Docs. In this system, a user&apos;s change is applied to their local replica and asynchronously replicated to others. If the system doesn&apos;t maintain a lock on the database, it becomes multi-leader, and conflict resolution becomes a challenge. One strategy to keep conflicts minimum is &lt;em&gt;having the unit of change tiny&lt;/em&gt;. For example, Google Docs uses a keystroke as a unit of change.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Handling Write Conflicts&lt;/h3&gt;
&lt;p&gt;Write conflicts are one of the big problems of multi-leader configuration. There are several ways to handle them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Use synchronous conflict detection:&lt;/strong&gt; Waiting for the data to be replicated to all replicas before telling the user the write operation is successful. This strategy causes losing the main advantage of multi-leader configuration: asynchronously and separately accepting writes in each replica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avoid conflicts:&lt;/strong&gt; Designing the system to avoid conflicts in the beginning. For example, using only one data center for the same user whenever they write data avoid conflicts. Still, there should be mechanisms to handle when the user moves geographically and becomes closer to another data center.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Converge toward a consistent state:&lt;/strong&gt; Here, the goal is to have the same data in each replication. To ensure that, between conflicting operations, we can choose one write operation as the final one. There are various strategies, such as giving each write operation a unique ID and choosing the last one, including assigning each replica ID and choosing the higher ID in conflicts, merging values together (e.g., concatenating), or recording conflict in a special data structure and handling it in the application later in time (e.g., via prompting the user).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create custom resolution logic:&lt;/strong&gt; Multi-leader replication tools allow us to write application code that runs in conflicts. We can use them to build our own logic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Multi-Leader Replication Topologies&lt;/h3&gt;
&lt;p&gt;When there are more than two leaders, we have different replication strategies to use. &lt;em&gt;Circular&lt;/em&gt;(one replica sends data to another in a circle), &lt;em&gt;star&lt;/em&gt; (one replica sends data to all replicas), or &lt;em&gt;all-to-all&lt;/em&gt; (all replicas send data to all other replicas) topologies are different ways to send data to other leaders.&lt;/p&gt;
&lt;p&gt;The main problem of circular and star topologies is having a single point of failure.&lt;/p&gt;
&lt;p&gt;All-to-all is the most used topology, and its challenge is causality. For example, when a client creates and immediately updates a value, these two write operations have to be received in sequence by other leaders. As the connection between leaders may vary, some leaders can fall behind and receive the update operation first. Yet, they cannot update a value that doesn&apos;t exist. &lt;a href=&quot;https://martinfowler.com/articles/patterns-of-distributed-systems/version-vector.html#solution&quot;&gt;Version Vectors&lt;/a&gt; technique can be used, but these conflict detection mechanisms are often poorly implemented in database systems.&lt;/p&gt;
&lt;h2&gt;Leaderless-Replication&lt;/h2&gt;
&lt;p&gt;The replication approaches we learned all had leaders. The leaderless systems have one difference: every node can accept writes. These systems are also called Dynamo-style databases. Also, in some of these systems, there can be a coordinator that is different than a leader.&lt;/p&gt;
&lt;p&gt;The idea is simple (each node can accept write operation), but the problems are not. That&apos;s why instead of how implementing these systems, we will spend time understanding their challenges.&lt;/p&gt;
&lt;h3&gt;Writing to the Database When a Node Is Down&lt;/h3&gt;
&lt;p&gt;If one node is not available, what happens when we receive new writes from a client?&lt;/p&gt;
&lt;p&gt;Clients read from multiple replicas at the same time to solve this problem. Also, version numbers are used for data so that clients can decide which data is the latest one by looking at its version number.&lt;/p&gt;
&lt;p&gt;Another challenge is, what happens when this node comes back and has stale data?&lt;/p&gt;
&lt;p&gt;There are two mechanisms to repair stale data.&lt;/p&gt;
&lt;p&gt;One is &lt;strong&gt;read repair&lt;/strong&gt;: whenever the client reads stale data from a node that is behind and up-to-date data from the other nodes, the client sends updated data to the node that was behind.&lt;/p&gt;
&lt;p&gt;The other mechanism is the &lt;strong&gt;anti-entropy process&lt;/strong&gt;: the system regularly checks the differences between nodes and updates stale data. The anti-entropy process doesn&apos;t care about the order of data; it just syncs nodes.&lt;/p&gt;
&lt;p&gt;The read repair works well for values that are often read. The anti-entropy process is good for values that are rarely read. Both mechanisms improve &lt;em&gt;durability&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do we count a read or write operation as successful?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When there are &lt;em&gt;n&lt;/em&gt; nodes, we focus on getting a successful response from a certain number of them. All requests are still sent to all nodes, but we await only a few of them to return success. In general, we want to ensure we get up-to-date data from at least one node in every read and update data in most nodes in every write.&lt;/p&gt;
&lt;p&gt;We can formalize this.&lt;/p&gt;
&lt;p&gt;If every write must be confirmed by &lt;em&gt;w&lt;/em&gt; nodes to be considered successful, and we must query &lt;em&gt;r&lt;/em&gt; nodes to get up-to-date data in an &lt;em&gt;n&lt;/em&gt; node system, generally speaking, &lt;em&gt;w + r &amp;gt; n&lt;/em&gt; should give us &lt;em&gt;up-to-date reads&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For example, if we choose &lt;em&gt;n&lt;/em&gt; as 5, we need to choose &lt;em&gt;w&lt;/em&gt; and &lt;em&gt;r&lt;/em&gt; as 3, so every time, we will wait for 3 nodes to succeed while writing or reading data. Even if writing to the remaining two nodes fails, we will have one node with up-to-date data. While reading, we&apos;ll have at least one node where we get updated data. So, one node will always overlap.&lt;/p&gt;
&lt;p&gt;Reads and writes obey these rules are called &lt;em&gt;quorum reads&lt;/em&gt; and &lt;em&gt;quorum writes&lt;/em&gt;. A common choice is selecting &lt;em&gt;n&lt;/em&gt; as an odd number and setting the &lt;em&gt;w&lt;/em&gt; and &lt;em&gt;r&lt;/em&gt; as &lt;em&gt;w=r=(n+1)/2&lt;/em&gt; (rounded up). Keep in mind that writes and reads are still sent to &lt;em&gt;n&lt;/em&gt; replicas, but we only count &lt;em&gt;r&lt;/em&gt; and &lt;em&gt;w&lt;/em&gt; for how many nodes we wait for.&lt;/p&gt;
&lt;h3&gt;What are the limitations of Quorum Consistency?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;If Sloppy Quorum (details below) is used, there is no longer guaranteed overlap between &lt;em&gt;r&lt;/em&gt; nodes and &lt;em&gt;w&lt;/em&gt; nodes.&lt;/li&gt;
&lt;li&gt;When two concurrent writes happen, there are no guarantees which one will be the first (conflict resolution is required).&lt;/li&gt;
&lt;li&gt;If a read is concurrent with a write, there is no guarantee for the read to return after the write (or up-to-date value).&lt;/li&gt;
&lt;li&gt;If a write succeeds in fewer replicas than expected &lt;em&gt;w&lt;/em&gt;, there is no rollback mechanism for updated nodes.&lt;/li&gt;
&lt;li&gt;If a node with up-to-date data fails and a replica with a stale value is used for recovery, the &lt;em&gt;w&lt;/em&gt; quorum condition can be broken.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Sloppy Quorums and Hinted Handoff&lt;/h3&gt;
&lt;p&gt;Sometimes, due to networks or any other issues, clients cannot reach the nodes to write data and cannot satisfy &lt;em&gt;w + r &amp;gt; n&lt;/em&gt; to reach a quorum. A client can still reach a few nodes but not &quot;home nodes&quot; of data. In this case, database designers have a tradeoff: either return an error or write to available nodes that are not among &lt;em&gt;n&lt;/em&gt; nodes that need to be written to. The latter case is called a &lt;strong&gt;sloppy quorum&lt;/strong&gt;. Once the nodes come back, any writes in these temporary nodes are sent to the &quot;home nodes,&quot; and this operation is called &lt;strong&gt;hinted handoff&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Detecting Concurrent Writes&lt;/h3&gt;
&lt;p&gt;There is no good database-level solution to solve conflicts that arise from concurrent writes. Application developers have to know and handle the conflicts in the application code. There are mechanisms that help them.&lt;/p&gt;
&lt;p&gt;First, we need to understand what concurrent means, then we can define ground rules to solve conflicts.&lt;/p&gt;
&lt;p&gt;If clients A and B write to a key simultaneously, we cannot tell which is first because there is no first—they are simultaneous. We can keep some identifiers like timestamps to define which write operation is the last one and use that one while discarding the rest. This strategy is called &lt;em&gt;Last-Write-Wins (LWW)&lt;/em&gt;. But it is problematic because of the challenges of clock synchronization between nodes (more details are in later chapters), and we lose data if we discard the rest of the data that is not the last.&lt;/p&gt;
&lt;p&gt;We actually define concurrency differently: when two nodes are not aware of each other&apos;s write operation, they are concurrent. It&apos;s not directly related to timing and clocks. While replicating data, nodes eventually catch up (eventual consistency). While catching up, there can be some write operations to nodes that are behind. We count these write operations as concurrent even though they happened later in time, just because the node is not aware of another node&apos;s data.&lt;/p&gt;
&lt;p&gt;We can use &lt;em&gt;version numbers&lt;/em&gt; to solve conflicts. Each request to write data gets a new version number from the server, and clients send these version numbers back in each write request. So, the server can decide if the client has outdated data by looking at its version. Meanwhile, the server keeps older versions to perform merge operations. Also, applications can merge data: when it receives updated data, they can merge it with a new value they have and send it to the server together along with the version number they received from the server.&lt;/p&gt;
&lt;p&gt;A client has to read a key before write. When a client reads a key, the server returns all values that are not overwritten with their latest version numbers. When the client merges values it received from the server and the value it owns, it sends back, and then, the server overwrites the values.&lt;/p&gt;
&lt;p&gt;When a client wants to remove data, the system doesn&apos;t remove it but puts a delete marker that is often known as &lt;em&gt;a tombstone&lt;/em&gt;. This way, no data is lost, but clients have to do some work.&lt;/p&gt;
&lt;p&gt;This whole strategy is efficient for a single replica, but what about leaderless replicas?&lt;/p&gt;
&lt;p&gt;We need to keep another version number for a replica as well and use it with the version number within the replica. The algorithm is the same as above, but this time each replica increments its own version number when a new &lt;em&gt;write&lt;/em&gt; comes in and keeps track of the other replicas. A collection of version numbers from all replicas is called the &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Version_vector&quot;&gt;version vector&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/data-replication-in-distributed-systems/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/data-replication-in-distributed-systems/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #41: One Thing At A Time: Multitasking for Software Engineers</title><link>https://candost.blog/newsletter/mektup-41/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-41/</guid><pubDate>Tue, 04 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;As a manager, I coach engineers at various seniority levels. Some of them have much more experience in the industry than me, some have a similar experience, and some are less experienced. Regardless of the experience levels, I often see similarities between each one of them. Today, I write you about one similarity I often observe: &lt;em&gt;trying&lt;/em&gt; to multitask.&lt;/p&gt;
&lt;p&gt;There is tons of research about multitasking (&lt;a href=&quot;https://scholar.google.com/scholar?hl=en&amp;amp;q=multitasking&quot;&gt;191k results on Google Scholar&lt;/a&gt;), and there is a common finding: people cannot perform two attention-demanding activities simultaneously. People like software engineers need focus, and context-switching harms their train of thought.&lt;/p&gt;
&lt;p&gt;Every task comes with a cognitive load that must be absorbed and kept while on the task. The cognitive load is what makes software engineering difficult and context-switching problematic.&lt;/p&gt;
&lt;p&gt;In management roles, the cognitive load is a bit lighter. Managers don&apos;t have to know every detail of the task, its technicalities, and its solution like software engineers. For managers, other factors like challenges, risks, clarity of requirements, and timeline are more important.&lt;/p&gt;
&lt;p&gt;Juggling multiple things at a time is common between engineering managers and staff engineers. It&apos;s due to a lack of company focus, not having enough people, or high expectations for productivity. Most of these issues are not in our hands, but there is one thing we can do. Within the endless backlog of tasks, features, and meetings, we have to &lt;em&gt;stay focused&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The common advice I give junior engineers is to &lt;strong&gt;take one task with you, which is split thoughtfully and doesn&apos;t entangle with any other tasks.&lt;/strong&gt; Then create a small pull request (or merge request) that does &lt;em&gt;one thing&lt;/em&gt; from end to end. Most juniors I&apos;ve seen struggle to stick to the scope of the task and get it to the finish line.&lt;/p&gt;
&lt;p&gt;When I became a manager, I forgot this advice myself and jumped into a lot of things and tried to do them &lt;em&gt;simultaneously&lt;/em&gt;. Because similar to the junior engineers, I didn&apos;t know what I was supposed to do because I had no experience in management. There were tons of new things that I had to comprehend and figure out solutions for.&lt;/p&gt;
&lt;p&gt;The same applies to staff engi­neers (at least for &lt;a href=&quot;https://staffeng.com/guides/staff-archetypes&quot;&gt;Architect and Right-Hand archetypes&lt;/a&gt;). Once senior engineers get a promotion, they must figure out many new things and how to become successful at their new job, which is often different from what they did until that time.&lt;/p&gt;
&lt;p&gt;I was trying to achieve something between multiple tasks, projects, and people&apos;s problems and wishes, and my coaches recommended various strategies. They ranged from complicated &lt;a href=&quot;https://www.wikiwand.com/en/Getting_Things_Done&quot;&gt;Getting Things Done&lt;/a&gt; methodology to calendar management techniques, from delegation to learning how to say no. What they had in common was (and I wish I had seen it clearly at that time) to &lt;em&gt;do one thing at a time&lt;/em&gt;. The &lt;em&gt;exact same&lt;/em&gt; advice I give to engineers.&lt;/p&gt;
&lt;p&gt;So, that is my recommendation for your whole life, independent from you being an engineer or manager. Stick to it, and you will achieve a lot.&lt;/p&gt;
&lt;p&gt;Doing one thing at a time helps you focus on one just thing, do it &lt;em&gt;well&lt;/em&gt; and finish it &lt;em&gt;on time&lt;/em&gt;. &lt;strong&gt;It makes you reliable, trustworthy, and a problem-solver.&lt;/strong&gt; When you do one thing well, you will also be surprised that you will have time for other things that need your partial attention.&lt;/p&gt;
&lt;p&gt;When you&apos;re focused, nobody can pull you into side tracks. When they try, you kindly decline because focus &lt;em&gt;demands&lt;/em&gt; saying no. Especially in leadership roles, you have to say no, decline meetings, and stay on track. I&apos;ll write in the future about these strategies, but for now, have a look at how many things you&apos;re trying to achieve. Are you multitasking? If you&apos;re, choose one topic and keep working on it until it&apos;s done.&lt;/p&gt;
&lt;p&gt;Meanwhile, I don&apos;t recommend reducing all your projects, initiatives, or tasks to one and abandoning the rest. You&apos;ll have to learn how to run multiple things in parallel to have a greater impact. The point is &lt;strong&gt;to have&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;only one of them&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;in your focus and reduce context switching during the day and—if possible—during the week.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Choose your focus and keep pace with others slowly.&lt;/p&gt;
&lt;p&gt;Give it a try, and let me know how it goes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;*P.S.&lt;/strong&gt; &lt;a href=&quot;/newsletter/mektup-5/&quot;&gt;If you don&apos;t know what to focus on next.&lt;/a&gt;*&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What I Published Over The Last Two Weeks&lt;/h2&gt;
&lt;h3&gt;Questioning vs. Asking&lt;/h3&gt;
&lt;p&gt;I wrote &lt;a href=&quot;/questioning-vs-asking/&quot;&gt;a short essay&lt;/a&gt; about the subtle difference between questioning and asking a question.&lt;/p&gt;
&lt;h3&gt;Data Storage and Retrieval&lt;/h3&gt;
&lt;p&gt;As you know from &lt;a href=&quot;/newsletter/mektup-40/&quot;&gt;the last Mektup&lt;/a&gt;, I started reading the book Designing Data-Driven Applications. Last week, I published &lt;strong&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;my notes from the third chapter&lt;/a&gt;&lt;/strong&gt; (read chapters &lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;1&lt;/a&gt; and &lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;2&lt;/a&gt; here).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;At the fundamental of any database, it stores data when we give it and retrieves data when we ask for it. We won&apos;t build a new database engine, but we roughly need to know how these operations work with hash indexes, LSM trees, SSTables, and B-Trees.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-41/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-41/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Questioning vs. Asking</title><link>https://candost.blog/questioning-vs-asking/</link><guid isPermaLink="true">https://candost.blog/questioning-vs-asking/</guid><description>The difference between questioning and asking.</description><pubDate>Fri, 30 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;These two words—questioning and asking—have different meanings, although both often refer to the same meaning.&lt;/p&gt;
&lt;p&gt;When we question a person or a piece of work, we meet with resistance. Questioning judges, investigates or interrogates. It looks for gaps, expects a valid reason why there are gaps, and tells that there might be consequences.&lt;/p&gt;
&lt;p&gt;In facing with resistance, we simply say, &quot;I&apos;m just asking!&quot; trying to release some tension.&lt;/p&gt;
&lt;p&gt;We don&apos;t say, &quot;I&apos;m just questioning!&quot;&lt;/p&gt;
&lt;p&gt;That&apos;s the nuance.&lt;/p&gt;
&lt;p&gt;When asking (non-rhetorical questions), we have &lt;em&gt;curiosity&lt;/em&gt;, we &lt;em&gt;seek&lt;/em&gt; information purely to fill our knowledge gap. We ask because we want to &lt;em&gt;learn&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;That&apos;s why the advice for young professionals (e.g., junior software engineers) is &quot;ask questions,&quot; not &quot;question things.&quot; Although we want them to &lt;em&gt;question the status quo&lt;/em&gt;, we expect them to &lt;em&gt;ask first&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;We may argue about both being the same if the &lt;em&gt;&lt;strong&gt;intention&lt;/strong&gt;&lt;/em&gt; is correct. I don&apos;t think so. Because the intention is &lt;strong&gt;invisible&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We don&apos;t &lt;em&gt;see&lt;/em&gt; anyone&apos;s intention when they question us or ask us questions. When someone messages me, I &lt;em&gt;read&lt;/em&gt; the message. I pay attention to the words they choose.&lt;/p&gt;
&lt;p&gt;If we&apos;re in a conversation, the other side may make their intention somehow visible. Because we hear their voice. We observe their behavior and body language.&lt;/p&gt;
&lt;p&gt;As long as they don&apos;t reflect their intentions in their tone, body language, behavior, or words, we hear them as either condescending or uninterested in learning how things are done.&lt;/p&gt;
&lt;p&gt;If we say, &quot;I&apos;m just asking!&quot; one more time, we &lt;em&gt;know&lt;/em&gt; where we stand.&lt;/p&gt;
&lt;p&gt;Now, I ask, are you questioning or asking a question?&lt;/p&gt;
&lt;p&gt;If you&apos;re going to ask, ask. Don&apos;t question.&lt;/p&gt;
&lt;p&gt;If you&apos;re going to question, first ask, &lt;em&gt;then&lt;/em&gt; question.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/questioning-vs-asking/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/questioning-vs-asking/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>DDIA: Data Storage and Retrieval</title><link>https://candost.blog/books/data-storage-and-retrieval/</link><guid isPermaLink="true">https://candost.blog/books/data-storage-and-retrieval/</guid><description>At the fundamental of any database, it stores data when we give it and retrieves data when we ask for it. These fundamentals require different data structures.</description><pubDate>Fri, 23 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article is part of my notes from Chapter 3 on &lt;a href=&quot;https://dataintensive.net/&quot;&gt;Designing Data-Intensive Applications by Martin Kleppmann&lt;/a&gt;. You can read other chapter notes as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;Chapter 2: Data Models and Query Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;Chapter 3: Data Storage and Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;Chapter 4: Encoding, Decoding, Schemas, and Data Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Chapter 5: Data Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;Chapter 6: Database Partitioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Chapter 7: Transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;Chapter 8: The Trouble with Distributed Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;Chapter 9: Consistency and Consensus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chapter 10: Batch Processing&lt;/li&gt;
&lt;li&gt;Chapter 11: Stream Processing&lt;/li&gt;
&lt;li&gt;Chapter 12: The Future of Data Systems&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;If we think about the fundamental of any database, we can think that it &lt;em&gt;stores data&lt;/em&gt; when we give it, and &lt;em&gt;retrieves data&lt;/em&gt; when we ask for it. Sure, we&apos;re probably not going to build a database engine, but we should know roughly how they fundamentally work so we can make an informed decision while choosing a database engine for our application.&lt;/p&gt;
&lt;p&gt;To understand these fundamentals, we start looking at data structures that power our databases, such as hash indexes, LSM trees, SSTables, and B-Trees.&lt;/p&gt;
&lt;h2&gt;Data Structures That Power Our Database&lt;/h2&gt;
&lt;p&gt;Let&apos;s think of the simplest database that stores key-value pairs. We can have one function for retrieving an entry by searching the key and one function for saving the pair into a file. When there are a few key-value pairs, everything sounds good because when we search, we can go one by one and look for the key. Also, writing a new pair to the end of the file is not a problem at all.&lt;/p&gt;
&lt;p&gt;However, the problem starts when our number of key-value pairs increases. Imagine going through all the keys in millions of key-value pairs one by one while searching for a key. That definitely is costly when we want to retrieve data, while it doesn&apos;t cost that much when we want to save it (if we keep writing data at the end of the file).&lt;/p&gt;
&lt;p&gt;To solve this problem, we need a different data structure: &lt;em&gt;index.&lt;/em&gt; &lt;strong&gt;While storing data, we keep some metadata on the side (&lt;em&gt;index&lt;/em&gt;) that acts as a signpost that helps to find data.&lt;/strong&gt; Adding and removing indexes don&apos;t affect the content of the database; it affects the query performance. Maintaining additional structure, of course, has an overhead.&lt;/p&gt;
&lt;p&gt;Keeping indexes has a drawback on write performance because every write requires an additional operation to update the index. That&apos;s why databases don&apos;t index everything by default and require us to choose indexes manually.&lt;/p&gt;
&lt;p&gt;There are multiple ways of indexing.&lt;/p&gt;
&lt;h3&gt;Hash Indexes&lt;/h3&gt;
&lt;p&gt;The most common kind of data we can index is key-value data. In the simplest indexing strategy, we can keep a hash map where every key is mapped to a byte offset. When we seek a key in the hash map, it gives the byte offset that tells the location of the data in the disk. Then, we can go to data in one disk I/O.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/designing-data-intensive-applications/Hash-Index.jpeg&quot; alt=&quot;Hash indexing and update log on disk&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As we keep the hash map in the memory (RAM), we don&apos;t seek disk I/O for searching the data; finding the data will be fast. We only have one disk seek for any data we need. When we add new data, we add its location to the hash map.&lt;/p&gt;
&lt;p&gt;But so far, whenever we add new data, we append its byte offset in the log file. As the hash map is on memory, our space is limited.&lt;/p&gt;
&lt;p&gt;How do we avoid running out of space? One solution is to break the log into segments and close segments when it reaches a certain size and make writes to a new segment file. We can then perform &lt;em&gt;compaction&lt;/em&gt; on these files.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/designing-data-intensive-applications/Compaction-on-disk-segment.jpeg&quot; alt=&quot;Compaction on update log on disk segment to reduce the size of the data.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We can also &lt;em&gt;merge segment files&lt;/em&gt; during compaction. These operations can be done in a background thread, and we can still serve read requests from old segments until we&apos;re done. Meanwhile, write requests can go to a new segment file. As we have multiple segments, reading will start from the most recent segment file and go back until we find the key. As much as this looks simple, in reality, there are various challenges: file format, deleting records, crash recovery, partially written records, and concurrency control.&lt;/p&gt;
&lt;p&gt;Having an &lt;em&gt;append-only log&lt;/em&gt; turns out to be good compared to updating files in place for a few reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sequential write operations (append and segment) are faster than random writes.&lt;/li&gt;
&lt;li&gt;Concurrency and data recovery after crashes are simpler if segment files are append-only and immutable.&lt;/li&gt;
&lt;li&gt;Merging old segment files prevents fragmented data files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yet, there are limitations: &lt;strong&gt;hash table must fit into memory&lt;/strong&gt;. If we have a very large number of keys, it doesn&apos;t work. Keeping a hash table on disk instead of memory doesn&apos;t solve the problem either because of the performance drawback of random access I/O on disk. The other limitation is inefficient range queries; we can&apos;t query keys in certain ranges.&lt;/p&gt;
&lt;p&gt;That&apos;s where SSTables and LSM Trees jump in.&lt;/p&gt;
&lt;h3&gt;SSTables and LSM-Trees&lt;/h3&gt;
&lt;p&gt;In the hash index table, we recorded key-value pairs. Whenever there was new data, we appended it to the end of the file. Now, we make a small change and make the keys in the file always sorted instead of appending to the end. We call this format a &lt;em&gt;Sorted String Table&lt;/em&gt; (SSTable), which has several advantages over hash index logs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Merging segments is simpler—even with multiple key appearances—since the keys are sorted.&lt;/li&gt;
&lt;li&gt;No need to keep an index of all keys in memory to find a key. If we know some of the offsets of other keys that are closer to the key we&apos;re searching for, we can narrow down our search to that range. We can then go to that range and scan our key there. We still need an in-memory index of certain keys, but it can be sparse. It&apos;s quicker to scan only a short offset range.&lt;/li&gt;
&lt;li&gt;In SSTables, read requests scan over several key-value pairs in the requested range. Since we already do this, we can group these key-value pairs and compress them before writing to the disk.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;How do we construct and maintain SSTables?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Maintaining a sorted order key value in memory is easier than on disk. We know some tree structures work well (AVL, red-black) where inser­tion is in any order, and reading is sorted.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In new writes, write to the in-memory balanced tree (memtable).&lt;/li&gt;
&lt;li&gt;If the memtable is bigger than a threshold, write it to the disk as SSTable. SSTable becomes the most recent segment. During SSTable write, a new memtable is used for write operations.&lt;/li&gt;
&lt;li&gt;While reading, start from memtable, then to recent disk segments.&lt;/li&gt;
&lt;li&gt;Frequently run a merging and compaction process to maintain order.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This scheme suffers from one problem: &lt;strong&gt;if the database crashes, values in the memtable are lost&lt;/strong&gt;. We can prevent it by keeping a separate log on the disk that we immediately append every new write (we can discard this log when the memtable is written out to SSTable). Storage engines that are based on this algorithm are often called as &lt;strong&gt;Log-Structured Merge (LSM)&lt;/strong&gt; storage engines, and the indexing structure is called LSM-Tree. To increase the performance, storage engines use &lt;a href=&quot;https://www.youtube.com/watch?v=V3pzxngeLqw&quot;&gt;bloom filters&lt;/a&gt; to identify if a key exists or not. Engines also use &lt;em&gt;size-tiered&lt;/em&gt; or &lt;em&gt;leveled compaction&lt;/em&gt; to determine the timing and order of how SSTables are compacted and merged.&lt;/p&gt;
&lt;p&gt;The LSM-tree idea (keeping a cascade of SSTables that are merged in the background) is powerful. Even when the dataset is bigger than available memory, it works well, supports range queries, and has high write-throughput.&lt;/p&gt;
&lt;h3&gt;B-Trees&lt;/h3&gt;
&lt;p&gt;The most widely used indexing structure is not log-structured indexes; it&apos;s the B-Tree.&lt;/p&gt;
&lt;p&gt;B-Trees keep key values sorted by key. B-Tree breaks down data into fixed-size pages instead of variable-size segments.&lt;/p&gt;
&lt;p&gt;Each page has a reference to be identified, and parent pages can refer to children with these references. The number of references to child pages in one page of the B-tree is called &lt;em&gt;the branching factor&lt;/em&gt;. &lt;strong&gt;The B-tree always stays balanced&lt;/strong&gt;. Elements of parent pages are ranges and references to child pages. This makes range queries easy to execute as well. Between two ranges in a parent, there is a reference to the child page that indicates keys between these ranges are inside the child.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/designing-data-intensive-applications/B-Trees.jpeg&quot; alt=&quot;B-Trees with a branching factor 4.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Updating any value for an existing key is also easy. Search for the leaf page containing the key, and change the value. When we want to add a new key, find the page whose range encompasses the new key and add it there. If the new key causes overflow, split the page into two from the middle and update the parent to reflect new ranges. This algorithm keeps the tree always balanced. As a result, a B-tree with &lt;em&gt;n&lt;/em&gt; number of keys always has a depth of &lt;em&gt;O(logn)&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;When adding a new key, the overflow requires pages to be rewritten. The database can crash mid-way through this operation. A child page might become an orphan, or splitting pages might not be finished. How can we recover from there? To make B-Trees reliable, it&apos;s common to keep a &lt;em&gt;write-ahead-log&lt;/em&gt; (WAL) as an append-only file. Before doing any operation on the tree, it has to be written to WAL.&lt;/p&gt;
&lt;p&gt;Latches (lightweight locks) are also used to coordinate concurrent threads accessing and editing the tree so that threads don&apos;t see the tree in an inconsistent state.&lt;/p&gt;
&lt;h4&gt;Comparing B-Trees and LSM-Trees&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Advantages of LSM-Trees&lt;/th&gt;
&lt;th&gt;Disadvantages of LSM-Trees&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A B-tree index writes data twice. Once to WAL and second to the tree.&lt;/td&gt;
&lt;td&gt;Compaction can interfere with &lt;em&gt;read&lt;/em&gt; &amp;amp; _write_s.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Log structured indexes write the data several times due to compaction and merge (write amplification)&lt;/td&gt;
&lt;td&gt;The bigger the DB, the more disk bandwidth is required for compaction.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;On average, LSM trees are better in write throughput than B-trees.&lt;/td&gt;
&lt;td&gt;Need explicit monitoring of compaction and incoming writes. Sometimes compaction cannot keep up, and the database slows down.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LSM trees can be compressed better.&lt;/td&gt;
&lt;td&gt;Log-structured storage engine has multiple copies of keys in different segments. In many databases, transaction isolation is done with locks on range keys.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;There are other indexing structures that commonly use secondary indexes. These indexing structures store values within the index, use multi-column indexes, full-text search, and fuzzy indexes, and keep everything in memory.&lt;/p&gt;
&lt;h2&gt;Online Analytic Process (OLAP)&lt;/h2&gt;
&lt;p&gt;What we have talked about earlier doesn&apos;t work well for analytic and business intelligence queries which process larger amounts of data, and often they have been executed either one-off or once a day. While Online Transaction Processing systems (OLTP) reads a small number of records in each query, OLAP systems read in bulk and aggregate data. OLAP mainly uses bulk import or event streaming to write, while OLTP has low-latency writes in random access order.&lt;/p&gt;
&lt;p&gt;The data itself is also very different; in OLTP, the data presents the current point in time, while in OLAP, the data is historical (events that happened at a certain point in time).&lt;/p&gt;
&lt;p&gt;These differences demanded different approaches to data storage and data retrieval. OLAP systems use column-based storage instead of row-based (SQL-like) or document-based (NoSQL-like), or graph-based storage. Therefore their &lt;em&gt;read&lt;/em&gt; patterns are also different.&lt;/p&gt;
&lt;p&gt;In OLTP systems, the disk-seek time is often the bottleneck because the number of queries is high (even though the data they require is small). In OLAP systems, disk bandwidth is often the bottleneck because even though there are fewer queries that process data, they often are demanding, requiring a big chunk of data to be scanned quickly.&lt;/p&gt;
&lt;p&gt;In OLTP, there are two schools of thought: log-structured school (only append to file and delete obsolete files) and update-in-place school (treats the disk as a fixed-size, e.g., B-trees). These indexing strategies don&apos;t work for OLAP systems. In OLAP systems, it&apos;s important to encode data in a compact way and minimize the amount of data that the query needs to read from the disk.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/data-storage-and-retrieval/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/data-storage-and-retrieval/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #40: Pros and Cons of Changing Tech Stacks</title><link>https://candost.blog/newsletter/mektup-40/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-40/</guid><pubDate>Wed, 21 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Lately, I had a conversation with an iOS developer who wants to change to the gaming industry and asked me how I switched my tech stack from iOS to the backend and my experience. Today, I will talk about the tech stack change, its effects on your career, advantages, and disad­vantages you will get.&lt;/p&gt;
&lt;p&gt;In short,&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Advantages&lt;/th&gt;
&lt;th&gt;Disadvantages&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gaining technical breadth&lt;/td&gt;
&lt;td&gt;Losing technical depth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New and transferred skills&lt;/td&gt;
&lt;td&gt;Low-skill evaluation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Higher compensation in long-term&lt;/td&gt;
&lt;td&gt;Lower compensation in short-term&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fresh perspective&lt;/td&gt;
&lt;td&gt;Short-term stress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Always having a backdoor&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;On top of these, there is a key difference between switching and sticking to a tech stack that is neither an advantage nor a disadvantage:&lt;/p&gt;
&lt;p&gt;If you stay in one tech stack, your career progress toward more of a tech lead; if you switch, you progress towards more of an architect or manager.&lt;/p&gt;
&lt;p&gt;How these pros/cons play out will differ for specific tech stacks and companies. But these are the most common ones that encompass various tech stack changes.&lt;/p&gt;
&lt;p&gt;Let&apos;s dive into the advantages and disadvantages.&lt;/p&gt;
&lt;h3&gt;Technical Breadth vs. Technical Depth&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;/newsletter/mektup-8/&quot;&gt;I wrote about the difference in a previous Mektup&lt;/a&gt;, and I&apos;m not going to go into details here. When switching tech stack, technical depth (expertise in one area) loses its strength. The moment you stop working in one tech stack, the knowledge gap starts to build. On the other hand, when you switch to another stack, you can still follow trends and novel features in your previous tech stack. Switching tech stack helps to build technical breadth (broad area of knowledge). While gaining new skills, you can stay up-to-date with your previous ones.&lt;/p&gt;
&lt;h3&gt;New and transferred skills&lt;/h3&gt;
&lt;p&gt;When you switch tech stacks, it&apos;s not like you lose all your knowledge in one day. You may stop using specific knowledge daily but transfer most of what you have learned. The fundamentals of software enginee­ring and business are transferrable. Although how you work in a team might differ, soft skills and work processes are also often similar—or at least adaptable.&lt;/p&gt;
&lt;h3&gt;Career progression&lt;/h3&gt;
&lt;p&gt;When you change your tech stack, you broaden your horizon. Working on one stack keeps you on track for tech lead-like roles where your expertise in one topic is needed the most and the enormous impact you can have.&lt;/p&gt;
&lt;p&gt;When you have worked on multiple stacks, you prog­ress towards architect-like roles where your technical breadth is more appreciated and expected. I &lt;a href=&quot;/newsletter/mektup-7/&quot;&gt;wrote on a previous Mektup&lt;/a&gt; and &lt;a href=&quot;https://candost.substack.com/p/19-software-architect-role-and-archicture&quot;&gt;talked on my podcast&lt;/a&gt; about expecta­tions from software architects; check them out for more details.&lt;/p&gt;
&lt;p&gt;When we think about managerial roles, it&apos;s up to the company&apos;s expectations. There are companies where managers are experts in one topic, and also there are companies where managers are expected to have more technical breadth than depth. So, both tracks can end up in management roles.&lt;/p&gt;
&lt;h3&gt;Impact on Compensation&lt;/h3&gt;
&lt;p&gt;Let&apos;s address the elephant in the room—money. The company in which you&apos;re changing the stack will play a critical role here. If you&apos;re joining a big company like Amazon, your leveling will be lower than your expertise if you&apos;re changing tech stack by joining Amazon. I had a friend who got lower level because they joined a team that was not working in their expertise area.&lt;/p&gt;
&lt;p&gt;On the other hand, if you&apos;re staying in the same company, you &lt;em&gt;may&lt;/em&gt; negotiate. I had a friend who did the change and did not have an impact on the compensation. The possible scenario is you won&apos;t get any raise for another year, and if you&apos;re up for promotion, changing the tech stack will probably delay it.&lt;/p&gt;
&lt;h3&gt;Long- vs. Short-term Impact&lt;/h3&gt;
&lt;p&gt;When switching tech stack, you&apos;re making a move for your long-term career. It gives you new perspectives that will broaden your horizon in the long run. Yet, in the short term, it causes stress. In the short term, you must put extra effort into catching up and becoming proficient in the new tech stack. Simply put, you will become a newbie again. Some folks don&apos;t like this fee­ling, but I love it. Feeling stupid and learning something I didn&apos;t know amazes me and drives me to put in extra effort in the short term.&lt;/p&gt;
&lt;h3&gt;Can you go back? And if you go back, how will it be perceived?&lt;/h3&gt;
&lt;p&gt;In my first attempt to switch to a new tech stack, I worked on the backend after working on iOS. Six months later, I returned to iOS by changing companies. Although I didn&apos;t enjoy my initial backend experience, it gave me a new perspective and made me a better developer. I improved not only my technical skills but also my communication and empathy skills toward backend engineers. Working with backend folks became much easier, and everyone was happier.&lt;/p&gt;
&lt;p&gt;So, returning is the option you will &lt;em&gt;always&lt;/em&gt; have, and people will perceive you as a better engineer when you return. In case you have a chance to work on a different tech stack, I highly recommend giving it a try.&lt;/p&gt;
&lt;p&gt;We had a live stream about generalist engineering where we talked about switching tech stacks often in detail. You can &lt;a href=&quot;https://superpeer.com/candost/event/12-the-life-of-a-generalist-engineer?ref=candost.blog&quot;&gt;watch the recording here&lt;/a&gt; or &lt;a href=&quot;https://candost.substack.com/p/12-the-life-of-a-generalist-software-engineer&quot;&gt;listen to it in any podcast app here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. &lt;a href=&quot;/how-to-approach-software-architecture-design/&quot;&gt;Switching tech stack positively impacts your software architecture design skills.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-40/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-40/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Real Difficulty of Engineering Leadership is Not What They Say</title><link>https://candost.blog/the-real-difficulty-of-engineering-leadership/</link><guid isPermaLink="true">https://candost.blog/the-real-difficulty-of-engineering-leadership/</guid><description>The biggest leadership development happens with solving internal challenges, not external challenges. If we want to create a healthy work environment and keep the team motivated, we have to develop effective leadership skills.</description><pubDate>Mon, 12 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For a while, I&apos;ve been thinking about what makes leadership difficult and why it challenges me—and others—that much. Before becoming a manager, I had a few discussions with some leaders to figure out the difficulties. I asked them what was their biggest challenge after they became a manager. The answers varied: context switching, stakeholder management, lack of focus time, prioritization, leading people to get things done, and a few others. Although I faced these common leadership challenges after becoming a manager, I realized that all of them had one greater difficulty behind: &lt;strong&gt;&lt;em&gt;learning to let go&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Before becoming a leader, our life was focused on telling what should be done, giving input on a problem to solve, getting our ideas in public, and applying what we&apos;ve learned. We got many—small or big—rewards for expressing our thoughts and executing ideas. Until the promotion to management, we were expected to give input on projects, and even we may have received a promotion for our execution work and thus became a manager.&lt;/p&gt;
&lt;p&gt;The moment after the promotion, the tables turn. Many managers don&apos;t realize this moment or can&apos;t quite figure out what to change. &lt;strong&gt;The difficulty after the promotion is to alter our behavior which is shaped as a result of what we have been rewarded for years.&lt;/strong&gt; In most situations, we have to listen, not give input. We have to ask questions, not give answers. Even when we know the solution, we must let others figure it out on their own and reward them when they do. That&apos;s what I&apos;ve been struggling with for a while.&lt;/p&gt;
&lt;p&gt;I am known for getting things done. For years, when I had a task, I pursued it to the end. Anyone working with me gave the same feedback: give me the job and forget about it; it will be done. Now, as a leader, it doesn&apos;t work as it used to. I can&apos;t bring the job to an end, even if I know how to do it. Not only do I have to guide, coach, mentor, or influence people to get things done, I must stay silent, listen, and ask questions instead of giving input when team members are trying to figure out a solution. As an engineer, I&apos;ve been providing solutions for years, and I developed the behavioral patterns to share what I think is correct, execute work, and get instant rewards. As a leader, staying silent so others can create these behavioral patterns is utterly backbreaking. And this challenge doesn&apos;t stop with remaining silent.&lt;/p&gt;
&lt;p&gt;Let&apos;s take delegating tasks as an example: the formal version of letting others do the job. Until leadership or senior roles, I have got a task that was mine until the end. I implemented, tested, published, followed up, and did more similar things. In a leadership position, it&apos;s about creating an initiative, starting the execution, pulling myself back, and giving it to someone so they can grow. In general, this behavior gives the leader time to work on more impactful and strategic work. It sounds simple and effective in theory, but doing it is challenging. Because often, the initiatives we—leaders—kick off easily become our baby, and handing it over to someone else turns out to be not easy. Yet, we somehow have to let it go. We must learn to let it go.&lt;/p&gt;
&lt;p&gt;We are rewarded for years because we were great at what we did. Now, accepting the new role and letting others become the best at what we have done for years is challenging. Yet, it is the only way. Effective leadership *requires asking questions and not giving answers—&lt;strong&gt;especially when there is no question*&lt;/strong&gt;. It demands staying silent—even when we know how to solve a problem—and guiding others to find the &lt;strong&gt;right&lt;/strong&gt; solution &lt;em&gt;without telling them the solution&lt;/em&gt;. I&apos;m not saying that we should always stay silent; leaders need or have to know &lt;em&gt;when&lt;/em&gt; to stay silent.&lt;/p&gt;
&lt;p&gt;One part of &lt;em&gt;letting things go&lt;/em&gt; doesn&apos;t require staying silent—contrary, it demands to be vocal. When I was a senior engineer, I gave inputs on the projects and explained how complex or easy to implement they were. I asked questions to figure out the priority of a feature or task. Although I was involved in prioritization discussions—and again gave my input—my focus was still on the execution. The prioritization decision was always on the &lt;em&gt;&quot;leadership role&quot;&lt;/em&gt; or function of the project or team. After I became a manager, I learned that prioritization skill doesn&apos;t develop easily. I tried to implement the same good old friend &lt;em&gt;letting things go&lt;/em&gt; strategy—staying silent and asking questions—and failed miserably.&lt;/p&gt;
&lt;p&gt;I learned that prioritization demands letting projects/features/tasks go, not giving input. It involves &lt;em&gt;consistently saying no&lt;/em&gt; and encouraging to give input as a manager. We can&apos;t solve every problem, implement every feature, plan every project, or tackle every organizational challenge. That&apos;s why &lt;strong&gt;we have to say no to good things to be able to say yes to great things&lt;/strong&gt;. When we do, we have to explain &lt;em&gt;why&lt;/em&gt; we say no and give constructive input about how and when the thing can be done. Simply saying no doesn&apos;t work; I tried. Our input as a manager is crucial and has to be clear while we&apos;re letting some work go.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://www.paulgraham.com/makersschedule.html&quot;&gt;The difference between Maker&apos;s vs. Manager&apos;s Schedule&lt;/a&gt; was the actual definition of why I lack focus time. I read that post before I become a manager. So, I knew what I was getting in. During my first few months as a manager, I indeed struggled to find focus time, and I&apos;m still not in a place where I was as a software engineer and will never be. However, when I experimented with delegating work and started lettings things go or saying &quot;No&quot; to various things, my focus time increased. Eventually, letting things go and leading others to do the work improved my focus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;Letting things go&lt;/em&gt; is the underlying reason for many other challenges leaders face: lack of focus time, micromanagement, not getting things done, failure to grow others, wrong prioritization, and more. I had managers who always gave input and got their way implemented. I also had managers who stayed silent in the wrong place and failed to say no consistently. Now, I realize they just kept what they have learned over the years as engineers and did not change their behavioral patterns after getting a promotion. They were not bad managers, but also not great ones. They were not effective and couldn&apos;t unleash their potential. Now, I&apos;m on the same train, trying to unleash &lt;em&gt;my&lt;/em&gt; potential. It&apos;s a difficult journey, but worth a try.^[Recently, I was listening to &lt;a href=&quot;https://fs.blog/knowledge-project-podcast/marshall-goldsmith/&quot;&gt;Marshall Goldsmith on The Knowledge Project podcast&lt;/a&gt;, where he talked about the essentials of leadership. He mentioned a simple strategy to overcome leadership challenges, and that&apos;s what I will try for a while. Wherever I want to say something, I will take a breath and ask myself: does it worth saying what I&apos;m going to say? If the answer is a no, I will stay silent or only ask questions. If it&apos;s a yes, then I&apos;ll give my input.] Will I succeed? I&apos;m not seeking an answer to this question anymore. I had let it go. Time and people will tell, not me.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/the-real-difficulty-of-engineering-leadership/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/the-real-difficulty-of-engineering-leadership/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #39: How I got a promotion offer from another company</title><link>https://candost.blog/newsletter/mektup-39/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-39/</guid><pubDate>Tue, 06 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was thrilled when I received an email from a company—let&apos;s call them Acme Inc.—to lead a team of six engineers, including mobile app developers, reverse engineers, and a QA specialist. Although I&apos;m happy that I took the counteroffer my company gave me at that time, I want to finish the story I started in the last Mektup.&lt;/p&gt;
&lt;p&gt;During the interviews, I had a technical challenge and leadership, team, and hiring manager interviews—pretty much the common interviews for that level. After I got the offer, I had a &lt;a href=&quot;https://blog.pragmaticengineer.com/reverse-interviewing/&quot;&gt;reverse interview&lt;/a&gt; to ask my questions about the team, challenges, company, and manager.&lt;/p&gt;
&lt;p&gt;But everything started a long time before the interviews. &lt;strong&gt;I &lt;a href=&quot;/studying-and-learning-leadership/&quot;&gt;self-studied leadership&lt;/a&gt;, read many books and articles, and took responsibilities that taught me how to influence others without authority&lt;/strong&gt;—a skill every engineer has to learn at the beginning of their careers but most overlook it.&lt;/p&gt;
&lt;p&gt;:::note
💫 Study leadership to learn how to act in certain situations and how to influence others without authority.
:::&lt;/p&gt;
&lt;p&gt;By the time I started interviewing for leading roles, I had been in the industry for 6-7 years and mainly worked as an iOS engineer and partially as a backend engineer. Although my focus was on coding most of the time, the last 1-2 years went with leading projects, dividing the project into sed chunks and tasks so that people could just grab the next task and go focus on it.&lt;/p&gt;
&lt;p&gt;That was the first step towards leadership and what companies look for from leaders: &lt;strong&gt;manage a project&lt;/strong&gt;. I know, I know we have a project manager, and it&apos;s their job. Yet, you &lt;a href=&quot;/newsletter/mektup-32/&quot;&gt;shouldn&apos;t leave them alone and give them a hand or two&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;:::note
💫 Manage a project to learn the dynamics of task prioritization, stakeholder communication, and staff planning. You&apos;ll also understand the customer perspective fully.
:::&lt;/p&gt;
&lt;p&gt;After getting used to projects (with successful and failed ones) and how to manage them, I began to have a holistic picture of the work. I learned &lt;strong&gt;prioritization, trade-offs, and influencing others without being a manager&lt;/strong&gt; (someone with authority).&lt;/p&gt;
&lt;p&gt;At that point, I realized that I like helping others do their jobs in the best way possible, prioritizing work according to business needs, the number of work people has, and the sustainability of the project. Once I realized which path lies in front of me—engineering management or, more broadly, people management—I went all in. &lt;strong&gt;I talked with my manager, and we worked towards growing my career in that direction by finding opportunities and creating initiatives to sharpen my leadership skills and learn new ones.&lt;/strong&gt; &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;The RFC process that I worked on&lt;/a&gt; was the first cross-team initiative to solve the feedback problem.&lt;/p&gt;
&lt;p&gt;:::note
💫 Talk with your manager and work with them to grow your career in the direction you want. Even though you might not get a promotion, they will help you to learn a lot of stuff that you will need later.
:::&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I started &lt;a href=&quot;https://candost.substack.com/p/22-effective-11-meetings-for-software&quot;&gt;having one-on-ones&lt;/a&gt; with my peers&lt;/strong&gt; and tried solving some of their problems.&lt;/p&gt;
&lt;p&gt;Later on, I changed teams because my team was dissolved 🤷. &lt;em&gt;It was a setback.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In my new team, I &lt;strong&gt;talked with my new manager and started taking over organizational tasks and career development work for other team members.&lt;/strong&gt; I held workshops for building the team culture (where there were a &lt;em&gt;ton&lt;/em&gt; of problems in the team).&lt;/p&gt;
&lt;p&gt;:::note
💫 Ask your manager to delegate some of their work to you. Learning &lt;em&gt;on&lt;/em&gt; the job is always better than studying and not practicing it.
:::&lt;/p&gt;
&lt;p&gt;Meanwhile, I was a backend engineer coding in a project. All the extra responsibilities I took were aligned with my career goals, team&apos;s, and business&apos;s needs. Also, &lt;strong&gt;nobody wanted to tackle the problems I wanted to solve.&lt;/strong&gt; Every other engineer was focused on technical problems, which were a lot. Later, my efforts helped the team to become a high-performing team.&lt;/p&gt;
&lt;p&gt;:::note
💫 There are always boring problems that nobody wants to tackle. These problems are often a real gem. If you can solve them, the reward is always bigger.
:::&lt;/p&gt;
&lt;p&gt;All of these initiatives and study on the side helped me solve complex team and staff problems and the career growth challenges of others. In the interviews for engineering manager (EM), I already have some experience that I could talk about.&lt;/p&gt;
&lt;p&gt;Of course, it was apparent that I didn&apos;t have much manager experience because my manager was accountable for all the things I did. Although I had a lot of freedom, being the accountable and responsible person for a piece of work is different than just doing the work from start to end. &lt;strong&gt;It&apos;s not the authority that has the weight but the lack of &lt;em&gt;official responsibilities&lt;/em&gt;&lt;/strong&gt; (e.g., having performance review feedback of engineers).&lt;/p&gt;
&lt;p&gt;As it is apparent that I never had a direct reporting person at that point, I was still knowledgeable to answer many questions using &lt;a href=&quot;https://lethain.com/star-method/&quot;&gt;the STAR method&lt;/a&gt; during interviews: I talked with my real-life experience.&lt;/p&gt;
&lt;p&gt;Acme Inc. was okay with hiring junior EMs because &lt;strong&gt;they had the time and resources to train the managers&lt;/strong&gt;. There are a lot of companies that are okay with hiring junior EMs. Your job is finding them (and theirs is finding you) and applying to open positions.&lt;/p&gt;
&lt;p&gt;Still, it&apos;s easier to get a promotion in your current company. But if they are unwilling to give it to you or have no positions, don&apos;t lose that much time and look for something else.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It is easier to get a promotion in your current company because usually, instead of hiring a junior EM, they can promote someone internally.&lt;/strong&gt; Companies only hire externally when there is no one in the company who wants to become an EM or when that person has no experience at all.&lt;/p&gt;
&lt;p&gt;:::note
💫 Ask yourself, &quot;Why should they hire you instead of promoting someone from inside of the company?&quot; and find good answers.
:::&lt;/p&gt;
&lt;p&gt;Lately, finding good EMs has become challenging. Before, management was the only way to get a promotion. These days I see more and more folks choosing the Individual Contributor (IC) track over management because of the availability of the IC track career. As great as having an IC track, the management track has become lonelier, and &lt;strong&gt;the competition for EM roles is decreasing&lt;/strong&gt;. That&apos;s why &lt;strong&gt;I see a bigger trend coming up for hiring junior EMs and training them&lt;/strong&gt;. Also, many good EMs are switching to the IC track.&lt;/p&gt;
&lt;p&gt;As finding new EMs has become challenging, applying for these positions might be worth your time. You never know what kind of leader they are looking for before applying. Even if they require some years of experience in the requirements, still go for it. &lt;strong&gt;I&apos;ve never seen a person checking every item in the requirements list.&lt;/strong&gt; Companies make sacrifices, and hiring someone will always have trade-offs and risks. It&apos;s up to the company to decide which trade-off they want to tackle.&lt;/p&gt;
&lt;p&gt;In the worst-case scenario, you will improve your interviewing skills.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-39/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-39/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>DDIA: Data Models and Query Languages</title><link>https://candost.blog/books/data-models-and-query-languages/</link><guid isPermaLink="true">https://candost.blog/books/data-models-and-query-languages/</guid><description>The relational, document-based, and graph-based data models are the fundamentals of understanding data-intensive applications along with query languages.</description><pubDate>Sun, 04 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article is part of my notes from Chapter 2 on &lt;a href=&quot;https://dataintensive.net/&quot;&gt;Designing Data-Intensive Applications by Martin Kleppmann&lt;/a&gt;. You can read other chapter notes as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;Chapter 2: Data Models and Query Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;Chapter 3: Data Storage and Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;Chapter 4: Encoding, Decoding, Schemas, and Data Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Chapter 5: Data Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;Chapter 6: Database Partitioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Chapter 7: Transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;Chapter 8: The Trouble with Distributed Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;Chapter 9: Consistency and Consensus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chapter 10: Batch Processing&lt;/li&gt;
&lt;li&gt;Chapter 11: Stream Processing&lt;/li&gt;
&lt;li&gt;Chapter 12: The Future of Data Systems&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;Data modeling might be one of the most difficult processes of software engineering. On top of that, data presentations differ for application developers from hardware engineers. Within these difficulties, we must learn how data modeling approaches work to choose the best one for our problem.&lt;/p&gt;
&lt;h2&gt;What is a Data Model?&lt;/h2&gt;
&lt;p&gt;Data modeling is creating a simplified data representation of our application&apos;s data from the real-world or other services we use and defining how this data flows through the application by using a database management system.&lt;/p&gt;
&lt;p&gt;There are &lt;strong&gt;two schools for data modeling&lt;/strong&gt;. Both of them have advantages and disadvantages. As it&apos;s the same for everything in software engineering, the modeling approach of choice will depend on our use case.&lt;/p&gt;
&lt;h2&gt;Relational Data Model vs. Document Data Model&lt;/h2&gt;
&lt;p&gt;Structured Query Language (SQL) is the best-known data query language based on the relational model that was proposed in 1970 by Edgar Codd. It has been here for decades, and no other data models have overthrown its dominance. NoSQL is the latest attempt to do that and was born because of the need for scalability with very large datasets, people looking for open-source and free software instead of commercial data­bases, businesses&apos; need for specialized query operations, and the need for more dynamic and expressive data models.&lt;/p&gt;
&lt;p&gt;Yet, it looks like SQL is not going away and will stay together with non-relational databases.&lt;/p&gt;
&lt;h3&gt;The Root Problem of Data Modeling: The Object-Relation Mismatch&lt;/h3&gt;
&lt;p&gt;A lot of applications are written with object-oriented programming. When these applications want to store data in a relational database, they require a translation layer because data models between the application (object or class definitions) and the database (tables defined by schemas) don&apos;t match. This mismatch is called &lt;em&gt;impedance mismatch&lt;/em&gt; (&lt;a href=&quot;https://en.wikipedia.org/wiki/Impedance_matching&quot;&gt;borrowed&lt;/a&gt; from electrical engineering).&lt;/p&gt;
&lt;p&gt;When we consider a social profile as an example (LinkedIn), we can store profile data in relational databases. Although we will have one field for a person&apos;s name and/or surname, one person may have multiple jobs and educations that we have to store somehow. Earlier versions of SQL used foreign keys to connect separate tables (education table, profile table, job positions table, etc.). We may use the same approach or use newer versions that allow storing multiple entries in one row using struc­tured data types (XML, JSON) while keeping the querying option.&lt;/p&gt;
&lt;p&gt;We can also encode the data in JSON/XML and store it in a text column and let the application handle its data structure and content. For applications like LinkedIn, JSON representation is better. It has a better locality than the multi-table schema and makes the one-to-many structure (one person → multiple jobs, education, etc.) explicit.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Locality: all data is in one place and accessible via a single query.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even though JSON is good for one-to-many, there are many-to-many relationships that we have to consider.&lt;/p&gt;
&lt;h3&gt;Many-to-One and Many-to-Many Relationships&lt;/h3&gt;
&lt;p&gt;Applications are evolving and changing day by day. &lt;strong&gt;The initial data model of applications often does not fit into the future requirement.&lt;/strong&gt; For example, think about Facebook and city and institution names. Initially, we might save the city as a string in the profile database. But how can we update the city name in every profile it&apos;s used? City names can change due to a political change, or Facebook might give every city a page. In these cases, updating the city string to ID will be the solution.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We can remove duplications and replace them with IDs that refer to other rows in other tables. This operation is called &lt;strong&gt;normalization&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When IDs are used, the relational databases can run &lt;em&gt;join&lt;/em&gt; operations easily to collect data across multiple databases.&lt;/p&gt;
&lt;p&gt;On the other hand, &lt;strong&gt;document databases often don&apos;t support &lt;em&gt;join&lt;/em&gt; operations&lt;/strong&gt;. This operation is moved to the application. The application has to emulate join operations by making multiple queries to the database.&lt;/p&gt;
&lt;p&gt;When considering different types of relationships, relational and document-based databases have pros and cons.&lt;/p&gt;
&lt;h3&gt;Relational Databases vs. Document Databases: Pros and Cons&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/designing-data-intensive-applications/relational-vs-document-databases.png&quot; alt=&quot;Relational Databases vs. Document Databases&quot; /&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Relational Databases&lt;/th&gt;
&lt;th&gt;Document Databases&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Join operations and references support many-to-one and many-to-many relationships nicely. However, if the application doesn&apos;t have these relationships a lot, it might not need a relational database.&lt;/td&gt;
&lt;td&gt;It&apos;s not possible to refer directly to the nested items. Yet, if there is no deep nesting, document databases are usually fine. The poor support for &lt;code&gt;join&lt;/code&gt;s may or may not be a problem. It depends on our application. If there are a lot of many-to-one or many-to-many relationships, the document model is not that great because these cases need to be handled by the application.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Shema-on-write:&lt;/strong&gt; Enforcing schema on write operations is similar to static type checking (compile-time) in programming languages. Ensures data schema is the same, and nobody can put broken data into the database. When we want to change data format, we have to perform a migration. (e.g., initially having one field for name and surname and separating it later). These schema changes (migrations) might be slow depending on which database is used (MySQL, PostgreSQL, etc.). Some databases might even require downtime.&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Schema-on-read:&lt;/strong&gt; Seeking schema on read is similar to dynamic type checking (run-time). This operation moves schema constraint to application. When we want to change the data format, we have to support old documents in the application code and start using the new format in the new documents.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Advantageous when data is homogeneous because it enforces a mechanism and documents it (with explicit schemas).&lt;/td&gt;
&lt;td&gt;If the data is heterogeneous, it&apos;s advantageous. No explicit schema makes it adaptable.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage locality is supported in some databases (e.g., Spanner, Oracle, Big table) but in different strategies to group related data together.&lt;/td&gt;
&lt;td&gt;Provides data locality, which can be powerful or harmful. If the document is big, the performance gets worse. When we need a small section of a document, we have to read the whole document. &lt;em&gt;Rule of thumb: keep documents fairly small &amp;amp; avoid writes that increase the document size.&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Overall relational databases have document features that allow storing and performing &lt;code&gt;join&lt;/code&gt; operations on XML and JSON. Also, document databases (e.g., RethinkDB, MongoDB) have relational-like &lt;code&gt;join&lt;/code&gt;s that are similar to relational databases. Although these &lt;code&gt;join&lt;/code&gt; operations are slow—as they require a network round trip—&lt;strong&gt;both relational and non-relational approaches are becoming more similar and adapting good sides from each other.&lt;/strong&gt; These feature intersections are good for the future of databases.&lt;/p&gt;
&lt;h2&gt;Query Languages: Imperative vs. Declarative&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/designing-data-intensive-applications/declarative-vs-imperative-languages.jpeg&quot; alt=&quot;Imperative vs. declarative languages&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Most programming languages are &lt;em&gt;imperative:&lt;/em&gt; we define how the algorithm will work step by step. We tell the computer line by line what it should do.&lt;/p&gt;
&lt;p&gt;On the other side, SQL is a &lt;em&gt;declarative&lt;/em&gt; language: we define what we want in the end, the criteria that the result should fit into, and how we want the data to be transformed. We don&apos;t get into defining the algorithm or steps that the database engine needs to execute in order. Our focus is on the end result.&lt;/p&gt;
&lt;p&gt;Declarative languages—such as SQL—hide the implementation details. &lt;strong&gt;When we write an SQL query, it&apos;s up to the query optimizer to decide which operations the query needs and the algorithm it will use during execution.&lt;/strong&gt; As we don&apos;t care how the data is retrieved from the storage, the query optimizer can decide the order of operations as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This abstraction (asking for the end result) allows the database to do behind the scene imp­rovements.&lt;/strong&gt; If memory optimization is needed, the database can move data from one place to another without breaking any query written before. As we define the order of data we want in the query, we don&apos;t know how the data is stored. If we were using an imperative style, the database couldn&apos;t do that because we would need to write the query according to how the data is stored.&lt;/p&gt;
&lt;p&gt;Lastly, declarative languages have the advantage of running tasks in parallel. They have a better chance for parallelization because we only define the resulting pattern, not the algorithm, to determine the results. The query optimizer can run tasks in parallel if it needs. In imperative languages, parallelization is more problematic because we define the order of operations one by one.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;The fact that SQL is more limited in functionality gives the database much more room for automatic optimizations.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;MapReduce Querying&lt;/h3&gt;
&lt;p&gt;MapReduce is used in document-based databases. It is a lower-level programming model than SQL. MapReduce supports using Javascript in the middle of a query, which is great but writing carefully designed Javascript functions is not that easy. There are also limitations (like in MongoDB, map and reduce functions have to be &lt;a href=&quot;https://en.wikipedia.org/wiki/Pure_function&quot;&gt;&lt;em&gt;pure functions&lt;/em&gt;&lt;/a&gt;). That&apos;s why MongoDB added an &quot;&lt;a href=&quot;https://www.mongodb.com/docs/manual/core/aggregation-pipeline/&quot;&gt;&lt;em&gt;aggregation pipeline&lt;/em&gt;&lt;/a&gt;&quot; to support a declarative approach.&lt;/p&gt;
&lt;h2&gt;Graph-Like Data Models and Graph Query Languages&lt;/h2&gt;
&lt;p&gt;Relational databases support many-to-many relations already, but when it&apos;s too much, it becomes challenging to manage, connect, and query data. &lt;strong&gt;When many-to-many relationships are common in the application, graph-like data models are better solutions.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/designing-data-intensive-applications/Graph-Like-Model.png&quot; alt=&quot;Graph-like data store. Vertices are connected with edges.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A graph has two object types: &lt;strong&gt;vertices&lt;/strong&gt; (also called nodes, entities) and &lt;strong&gt;edges&lt;/strong&gt; (also called relationships, arcs).&lt;/p&gt;
&lt;p&gt;There are two graph models to structure and query data: &lt;em&gt;the property graph model&lt;/em&gt; and &lt;em&gt;the triple-store graph model&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;Property Graphs&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/designing-data-intensive-applications/Labeled-Property-Graphs.jpeg&quot; alt=&quot;Property Graphs&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Each vertex has a unique ID, set of outgoing edges, set of incoming edges, and collection of properties (key-value pairs).&lt;/p&gt;
&lt;p&gt;Each edge has a unique ID, the vertex the edge starts (tail), the vertex the edge ends (head), a &lt;strong&gt;label&lt;/strong&gt; to describe the relationship between two vertices, and a collection of properties (key-value pairs).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;There is no schema restriction in this model.&lt;/strong&gt; We can have any vertex connecting to others for anything. We can also traverse the graph because we know any vertex&apos;s incoming and outgoing edges. Additionally, labels give the flexibility to define the relationship between two vertices.&lt;/p&gt;
&lt;p&gt;This model gives us &lt;em&gt;&lt;strong&gt;flexibility&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;evolvability&lt;/strong&gt;&lt;/em&gt;. When we need to extend our features in the application, we keep adding new data to the existing graph. However, the graph data store easily becomes a mess. We need to be careful with a single graph data store.&lt;/p&gt;
&lt;h3&gt;Triple-Stores&lt;/h3&gt;
&lt;p&gt;In Triple-Stores, the data is stored in three-part statements: &lt;code&gt;(subject,predicate,object)&lt;/code&gt;. This model is mainly equivalent to the property-graph model. The subject is equivalent to the vertex. The object is one of two things: a value in a primitive data type or another vertex. When it&apos;s another vertex, the predicate is on the edge of the graph, the subject is the tail, and the object is the head.&lt;/p&gt;
&lt;p&gt;Examples: &lt;code&gt;(alice,age,23)&lt;/code&gt;, &lt;code&gt;(alice,marriedTo,bob)&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;The Foundation: Datalog&lt;/h3&gt;
&lt;p&gt;The data model is similar to triple-stores but generalized a bit.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;(subject,predicate,object)&lt;/code&gt; becomes &lt;code&gt;predicate(subject, object)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;We can also define rules to tell the database new predicates on top of the data&apos;s predicates. It&apos;s similar to functions. These aren&apos;t triples in the database. They are derived from data or other rules. Rules can call others or themselves recursively.&lt;/p&gt;
&lt;p&gt;Datalog is a subset of Prolog and uses a bottom-up approach instead of a top-down approach Prolog takes.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Choosing a database query language and data model is difficult. Data modeling processes are important in database management systems to support the application we&apos;re developing. Representing physical data models or logical data models in conceptual data models will always be difficult. Once we understand the basics, we can make an informed decision about our data architecture and database design.&lt;/p&gt;
&lt;p&gt;Document databases are good for one-to-many data modeling. Relational databases are good for one-to-many, many-to-many, and many-to-one relationships. When many-to-many relationships are extensive in the database, graph-based models are better for storing and representing data.&lt;/p&gt;
&lt;p&gt;Relational databases are also suitable for homogenous data, while document-based databases are better for heterogeneous data due to the lack of a fixed schema.&lt;/p&gt;
&lt;p&gt;When it comes to languages, a declarative language is designed as an abstraction layer for the details and has a huge advantage for behind-the-scenes optimizations. On the other hand, imperative languages are better for programming languages and services. When it comes to query operations, declarative languages (such as SQL) are the way to go.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/data-models-and-query-languages/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/data-models-and-query-languages/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Speaking, Writing, and High-Quality Ideas</title><link>https://candost.blog/speaking-writing-and-high-quality-ideas/</link><guid isPermaLink="true">https://candost.blog/speaking-writing-and-high-quality-ideas/</guid><description>Your success in life will be determined largely by your ability to speak, your ability to write, and the quality of your ideas. In that order. — Patrick Winston</description><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In a lecture, Patrick Winston said,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Your success in life will be determined largely by your ability to speak, your ability to write, and the quality of your ideas. In that order.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I pondered on that sentence for days. The longer I thought about it, the more I recognized Patrick right.&lt;/p&gt;
&lt;p&gt;I thought about the leaders I follow, the leaders in the organizations I worked in, and the leaders who lived long before I was born. Many are great speakers but cannot write two paragraphs that connect two thoughts. Some of them are fantastic writers but full of crappy ideas. However, all the highly successful ones dedicated a significant amount of time to improving themselves in these three abilities. They are fantastic thinkers because of their excellent writing skills. They are great at persuading because they can speak well with ideas that are well thought out.&lt;/p&gt;
&lt;p&gt;Whoever speaks well will have the advantage of convincing others to follow them.&lt;/p&gt;
&lt;p&gt;Whoever writes well will create a margin in their thinking.&lt;/p&gt;
&lt;p&gt;Whoever has the best ideas will have a chance to impact the world. However, they won’t be able to move a needle if they cannot write or speak about it.&lt;/p&gt;
&lt;p&gt;Think about a leader who speaks well. If they are extraordinary speakers, we might be surprised to see how much they climb up the success ladder. But does it make these people great intellectuals? They often fall suddenly, and the results are usually miserable. If they don’t pursue the writing path, their success collapses because their ideas begin to rot.&lt;/p&gt;
&lt;p&gt;Whoever succeeds in these three fronts succeeds in life. Growing in only one is already difficult, yet how can one become the best?&lt;/p&gt;
&lt;p&gt;I leave &lt;a href=&quot;https://www.youtube.com/watch?v=Unzc731iCUY&quot;&gt;here Patrick Winston’s lecture&lt;/a&gt;. I highly recommend watching it.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/speaking-writing-and-high-quality-ideas/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/speaking-writing-and-high-quality-ideas/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The CAP Theorem</title><link>https://candost.blog/notes/48c/</link><guid isPermaLink="true">https://candost.blog/notes/48c/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“Strong Consistency, Availability, and Partition tolerance: pick two out of three” — The CAP Theorem&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;PACELC theorem&lt;/em&gt;: “In case of network partitioning in a distributed system, one has to choose between Availability and Consistency, but else, even when the system is running normally in the absence of partitions, one has to choose between latency and consistency.”&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/45/&quot;&gt;45: Software Architecture Patterns and Models&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://understandingdistributed.systems/&quot;&gt;Understanding Distributed Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://candost.substack.com/p/24-understanding-distributed-systems&quot;&gt;Software World #24: Understanding Distributed Systems with Roberto Vitillo&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/48c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/48c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Elasticity in Software Systems</title><link>https://candost.blog/notes/48d/</link><guid isPermaLink="true">https://candost.blog/notes/48d/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Elasticity is a service’s ability to handle bursts of traffic. It’s often confused with scalability. Scalability is the ability to handle a large number of concurrent requests.&lt;/p&gt;
&lt;p&gt;Although these two are different, elastic systems also need scalability.&lt;/p&gt;
&lt;p&gt;For example, ticketing or bidding systems usually need elastic scaling as they will have bursts of traffic in a short amount of time. They need to scale up and down with a different load of requests coming in. However, a growing no-discount e-commerce website will scale differently as it probably won’t need any elasticity and can scale up with the overall increasing number of users.&lt;/p&gt;
&lt;p&gt;We might need to uncover the real need for the software. Sometimes, these Architecture Characteristics might come with requirements, but some of them can be hidden in the problem domain.&lt;/p&gt;
&lt;p&gt;Serverless architecture is one of the most elastic systems. You pay-per-use, and it scales up and down all the time by adding more resources when you trigger a serverless function.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;http://fundamentalsofsoftwarearchitecture.com/&quot;&gt;Fundamentals of Software Architecture by Mark Richards &amp;amp; Neal Ford&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/48d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/48d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Key-Value Partitioning (Key or Hash)</title><link>https://candost.blog/notes/55d/</link><guid isPermaLink="true">https://candost.blog/notes/55d/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In hash partitioning, we use hash functions for ranges to distribute data evenly between partitions. The range-based partitions still have the disadvantage of loading one partition with more data. With hash functions, we solve this problem. Putting the identifier into a hash function produces a unique hash. We can then use this hash to write data to a related partition.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/55d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/55d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Diseconomy of Scale</title><link>https://candost.blog/notes/57/</link><guid isPermaLink="true">https://candost.blog/notes/57/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The size of the project matters a lot in the diseconomy of scale. In Software Estimation, Steve McConnell talks about estimating projects on different scales and considering important factors. Typically, we talk about economies of scale by saying, “If we build five more factories, the cost per unit we produce will be lower.” However, in software engineering, it’s quite the contrary. When we build larger systems, we significantly increase the costs. That’s why it’s called diseconomy of scale: different factors, such as the cost of communication, increase exponentially.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2e/&quot;&gt;2e: Elements of a Story&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/49/&quot;&gt;49: Accidental Complexity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/9c1/&quot;&gt;As we can’t comprehend the growing scope&lt;/a&gt;, it becomes difficult to plan projects at scale.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/92b/&quot;&gt;The reason why cities are richer&lt;/a&gt; is due to economies of scale.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Software Estimation Book by Steve McConnell&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/57/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/57/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Scalability in Software Systems</title><link>https://candost.blog/notes/58/</link><guid isPermaLink="true">https://candost.blog/notes/58/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Defining the system load and performance is important to understand scalability. Scalability is the system&apos;s ability (performance) to cope with increased load.&lt;/em&gt; The load doesn&apos;t say anything when it&apos;s used alone. The load can be anything, depending on the system&apos;s architecture. For Twitter, as an example, it can be the number of tweets posted in a second or the number of tweets read in a second.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Scalability: Ability for the system to perform and operate as the number of users or requests increases. — Fundamentals of Software Architecture&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Scalability is not a label that we can define a service as scalable. Scalability means thinking about the strategies to deal with the growing load.&lt;/p&gt;
&lt;p&gt;When we try to understand how scalable the system is, we usually ask questions like, “How does the system perform when it gets 10x more load than now?” and “How can we add more resources to cope with the increasing load?”&lt;/p&gt;
&lt;p&gt;Before we look at the strategies to handle the increasing load, we have to understand how we measure the scalability and what load and performance mean.&lt;/p&gt;
&lt;p&gt;The capacity of a system is often measured by throughput and response time. Throughput means the number of operations processed per second; response time means the time between request and response.&lt;/p&gt;
&lt;p&gt;Defining the load depends on the system. As Martin Kleppmann explains in Designing Data-Intensive Applications,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The load can be described with a few numbers, which we call load parameters. The best choice of parameters depends on the architecture of your system: it may be the requests per second to a web server, the ratio of reads to writes in a database, the number of simultaneously active users in a chat room, the hit rate on a cache, or something else.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Once we know the load, we can understand the capacity of the systems.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://understandingdistributed.systems/&quot;&gt;Understanding Distributed Systems&lt;/a&gt;;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Don’t confuse it with Elasticity which is mentioned in the &lt;a href=&quot;http://fundamentalsofsoftwarearchitecture.com/&quot;&gt;Fundamentals of Software Architecture by Mark Richards &amp;amp; Neal Ford&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are different types of scaling. It’s crucial to understand Horizontal vs Vertical Scaling.&lt;/p&gt;
&lt;p&gt;Load Balancer is required in Horizontal Scaling.&lt;/p&gt;
&lt;p&gt;Scalability in Cracking the Coding Interview gives a good overview of concepts related to Scalability and System Design.&lt;/p&gt;
&lt;p&gt;It’s all trade-offs.&lt;/p&gt;
&lt;p&gt;How does it work in Microservices architecture? Read the &lt;a href=&quot;https://samnewman.io/books/building_microservices_2nd_edition/&quot;&gt;Building Microservices&lt;/a&gt; book on page 216.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/55/&quot;&gt;55: Database Partitioning (Sharding)&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Designing Data-Intensive Applications by Martin Kleppmann&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/58/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/58/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Defining System Load</title><link>https://candost.blog/notes/58a/</link><guid isPermaLink="true">https://candost.blog/notes/58a/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;To talk about increasing load and scalability, we first need to define the system&apos;s &lt;em&gt;current&lt;/em&gt; load. There is no one way of doing it as it depends on the project and its architecture, but we use &lt;em&gt;load parameters&lt;/em&gt;. These parameters will be different for every application.&lt;/p&gt;
&lt;p&gt;When we think about Twitter, the load parameter is not how many tweets are posted per second alone because it&apos;s not a high number that requires scaling the whole system. If there are 12000 tweets (write operation) per second, it&apos;s easy to handle. The load parameter for Twitter is the &lt;a href=&quot;https://en.wikipedia.org/wiki/Fan-out_(software)&quot;&gt;&lt;em&gt;fan-out&lt;/em&gt;&lt;/a&gt; effect of posting tweets. Each Twitter user follows many people, and each user is followed by many. How to build this system with 12000+ incoming tweets every second is the scalability problem of Twitter.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Designing Data-Intensive Applications by Martin Kleppmann&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/58a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/58a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Defining System Performance</title><link>https://candost.blog/notes/58b/</link><guid isPermaLink="true">https://candost.blog/notes/58b/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Besides load, we have to understand the performance of the system before trying to scale the application. We use performance metrics. These metrics vary in different systems. In batch processing systems, it is &lt;em&gt;throughput&lt;/em&gt; (the # of records the system can process per second); in online systems, it&apos;s the &lt;em&gt;response time&lt;/em&gt; (the time between request and response, not latency).&lt;/p&gt;
&lt;p&gt;When we take the response time, measuring it is simple: put a timer between the time the request is made and the response is received. Yet, talking about response time demands something else. We cannot only look at one single response time. Because each time we make a request, the response might arrive at different times for various reasons: network delay, database crash, garbage collection pause, package lost in the network, waiting for another system&apos;s response, etc. That&apos;s why we cannot take one request-response pair and define the performance. We need to gather a lot of pairs in a certain timeframe and analyze the response time from there by using &lt;em&gt;percentiles&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When we talk about average performance, we usually talk about the &lt;em&gt;arithmetic mean&lt;/em&gt;. The average is rarely useful because it doesn&apos;t say anything about how many users are experiencing delays. That&apos;s why we use percentiles.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Understanding percentiles is crucial because they are the required elements of &lt;a href=&quot;https://www.atlassian.com/incident-management/kpis/sla-vs-slo-vs-sli&quot;&gt;&lt;em&gt;Service Level Agreements (SLAs)&lt;/em&gt;—the contracts that define the expected performance and availability of a service—and &lt;em&gt;Service Level Objectives (SLOs)&lt;/em&gt; and &lt;em&gt;Service Level Indicators (SLIs)&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To calculate average performance (the arithmetic mean), we get all our response times in a certain period. Let&apos;s say we have 100 requests in a second. We order response times from fastest to slowest. When we draw a line in the 50th response time in the ordered list, that is our median response time. If the 50th item is 100ms, it means 50% of our response times are faster than 100ms, and 50% of them are slower than 100ms. The arithmetic mean is called the 50th percentile—&lt;em&gt;p50. Be careful: percentiles are not percentages.&lt;/em&gt; Percentile represents a single entry in the ordered list.&lt;/p&gt;
&lt;p&gt;Let&apos;s take the 99th item in our previous list as another example. If it is 200ms, then we can say that the 99th percentile (often referred to as p99) will be 200ms. That means 99% of the response times will be faster than 200ms. Amazon uses the 99.9th percentile (&lt;em&gt;p999&lt;/em&gt;) in its internal systems. That means 1 out of 1000 response times will be above a certain threshold that they defined.&lt;/p&gt;
&lt;p&gt;Now that we understand how we can describe performance and load, we can define SLAs in our systems and track them properly. But still, how can we approach handling the increasing load and prevent breaking our SLAs?&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Designing Data-Intensive Applications by Martin Kleppmann&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/58b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/58b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Approaches for Coping with Increased Load in Software Systems</title><link>https://candost.blog/notes/58c/</link><guid isPermaLink="true">https://candost.blog/notes/58c/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There are two methods of scaling (a dichotomy): scaling up (vertical scaling) and sealing out (horizontal scaling). Although neither is a silver bullet, implementing either one or a combination of two is often the right action. Choosing which way to go depends on the application and operation overall.&lt;/p&gt;
&lt;p&gt;Some services are &lt;a href=&quot;/notes/48d/&quot;&gt;elastic&lt;/a&gt;; they can add or remove resources depending on the need. Some of them need manual scaling, which leads to a simpler system and fewer operational surprises.&lt;/p&gt;
&lt;p&gt;What kind of scaling to use will always depend on the system. The system that scales well will be built around assumptions of defined load parameters (predicted common and rare operations).&lt;/p&gt;
&lt;p&gt;In start-ups and non-proven products, it&apos;s more important to iterate on the product instead of building the system for a hypothetical future load.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48d/&quot;&gt;48d: Elasticity in Software Systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Designing Data-Intensive Applications by Martin Kleppmann&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/58c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/58c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pros and Cons of Vertical Scaling (Scaling Up)</title><link>https://candost.blog/notes/58d/</link><guid isPermaLink="true">https://candost.blog/notes/58d/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Increasing the size of the instances and, for example, increasing the server&apos;s memory to handle load changes.&lt;/p&gt;
&lt;h2&gt;Advantages&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Doesn’t need I/O operations. Processing is within a machine.&lt;/li&gt;
&lt;li&gt;Data Consistency.&lt;/li&gt;
&lt;li&gt;Easy implementation.&lt;/li&gt;
&lt;li&gt;Fast development.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Disadvantages&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Hardware limitations (cannot scale infinitely).&lt;/li&gt;
&lt;li&gt;Single point of failure.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/58d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/58d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Functional Decomposition in Software Systems</title><link>https://candost.blog/notes/59/</link><guid isPermaLink="true">https://candost.blog/notes/59/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Functional decomposition is separating parts of your application into their own sections and allowing teams to develop these sections independently. Splitting the application by business capabilities and defining boundaries that enable teams to work independently is at the core of functional decomposition.&lt;/p&gt;
&lt;p&gt;If you’re developing backend applications, one way to do functional decomposition is by splitting your monolith into microservices.&lt;/p&gt;
&lt;p&gt;If you’re developing mobile applications, one way is by splitting your application into several frameworks and enabling teams to work within these frameworks.&lt;/p&gt;
&lt;p&gt;The advantages of this approach are reducing communication overhead, easier maintenance of the small codebase, easy scaling, ease of deployment, replaceability, and resiliency. Communication between 4 people is way easier than communication between 20 people. As these small teams handle smaller codebases, they can deploy and scale easily. Whenever something goes wrong, it’s easy to replace the whole service.&lt;/p&gt;
&lt;p&gt;Of course, it comes with disadvantages. Although small teams are independent in making decisions and moving fast, it becomes difficult to create developer tools and automate workflows when everyone chooses their tech stack and architecture. When the organization scales, automation, and developer tools become essential. With some technological governance, these issues can be minimized. For example, Netflix strictly uses Java, Python, and Javascript and developed tools for their teams to work effectively.&lt;/p&gt;
&lt;p&gt;Other disadvantages are the difficulty of debugging and testing. As the number of independent modules grows, testing the integration of these modules becomes tricky. Testing the whole user journey becomes a challenge. It’s the same for debugging. Finding the root cause of a bug demands excellent monitoring and observability practices.&lt;/p&gt;
&lt;p&gt;The last one I’ve experienced is the maintenance overhead. Teams create tiny modules, and each module requires maintenance. I would argue about starting a service to do only one thing. The overhead it creates is often more significant than the benefit it brings. One maintenance overhead is once you have an API definition, you have to maintain it for your clients. There are solutions, like API gateway, to solve the problem, but it will always be another thing to develop, deploy, and maintain. Also, the API gateway is coupled with multiple services and needs to be updated whenever there is an update in the services it is connected to.&lt;/p&gt;
&lt;p&gt;The challenges of decomposing mobile apps and backend services are very different. Decomposing mobile apps often creates problems in dependency and release management. Decomposing backend applications create more points of failure and reduce resiliency. Although there are practices to reduce these risks, such as dependency inversion for mobile and chaos engineering for the backend, some challenges will always be unique to the tech stack and require knowledge in the area.&lt;/p&gt;
&lt;p&gt;If you want to expand your knowledge in splitting monolith to microservices, I recommend reading Monolith to Microservices or Building Microservices, both by Sam Newman.&lt;/p&gt;
&lt;p&gt;If you want to expand your knowledge in scaling mobile apps, I recommend reading Building Mobile Apps at Scale by Gergely Orosz. Although the book is not a technical deep dive, it gives great insights into the challenges you will face.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/59/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/59/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Database Normalization</title><link>https://candost.blog/notes/60/</link><guid isPermaLink="true">https://candost.blog/notes/60/</guid><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Database denormalization means adding redundant information into a database to speed up reads. For example, duplicating data across tables is a denormalization process. We duplicate data to reduce Join operations across tables.&lt;/p&gt;
&lt;p&gt;When the databases grow, join operations become slower. To avoid this, we either use denormalization or NoSQL. NoSQL is designed differently and has no join operation.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/60/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/60/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>DDIA: Reliability, Scalability, and Maintainability in Distributed Applications</title><link>https://candost.blog/books/reliability-maintainability-and-scalability-in-applications/</link><guid isPermaLink="true">https://candost.blog/books/reliability-maintainability-and-scalability-in-applications/</guid><description>Understanding how they work is fundamental to developing data-intensive applications. This knowledge impacts our design choices, and the basics of these features demand an understanding of reliability, scalability, and maintainability.</description><pubDate>Fri, 26 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This article is part of my notes from Chapter 1 of &lt;a href=&quot;https://dataintensive.net/&quot;&gt;Designing Data-Intensive Applications by Martin Kleppmann&lt;/a&gt;. You can read other chapter notes as well.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;Chapter 1: Reliability, Scalability, and Maintainability in Distributed Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;Chapter 2: Data Models and Query Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-storage-and-retrieval/&quot;&gt;Chapter 3: Data Storage and Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/ddia-encoding-decoding-schemas-and-data-evolution/&quot;&gt;Chapter 4: Encoding, Decoding, Schemas, and Data Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Chapter 5: Data Replication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;Chapter 6: Database Partitioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Chapter 7: Transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-trouble-with-distributed-systems/&quot;&gt;Chapter 8: The Trouble with Distributed Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;Chapter 9: Consistency and Consensus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chapter 10: Batch Processing&lt;/li&gt;
&lt;li&gt;Chapter 11: Stream Processing&lt;/li&gt;
&lt;li&gt;Chapter 12: The Future of Data Systems&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;Most systems these days are data-intensive and require features such as databases, caches, search indexes, stream processing, batch processing, etc. As much as we don&apos;t get to—and don&apos;t want to—develop these features from scratch (it&apos;s rare to develop a new database engine from scratch), we use them to build systems. Understanding how they work is fundamental to developing data-intensive applications. This knowledge impacts our design choices, and the basics of these features demand an understanding of reliability, scalability, and maintainability.&lt;/p&gt;
&lt;h2&gt;Reliability&lt;/h2&gt;
&lt;p&gt;Reliability means the application should continue to work correctly in a way that is expected &lt;em&gt;even when things go wrong&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Reliable application functions as expected and can tolerate mistakes user makes or mistakes that happen when users use the software unexpectedly. It can prevent unauthorized access and abuse. Its performance is good enough under the expected load and data volume.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fault ≠ failure&lt;/strong&gt;; a fault is a functional or component problem. Failure is a whole system stopping providing the required service to the user. We design fault-tolerant systems to prevent failure.&lt;/p&gt;
&lt;p&gt;Systems became unreliable because of&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hardware Faults&lt;/li&gt;
&lt;li&gt;Software Faults&lt;/li&gt;
&lt;li&gt;Human Errors&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In software systems, we can&apos;t cover every fault or error; we only take precautious steps. We tolerate certain faults. Finding out which faults we should tolerate is the main challenge of developing a reliable system.&lt;/p&gt;
&lt;h3&gt;What are the costs of failures?&lt;/h3&gt;
&lt;p&gt;Due to the errors above, systems quickly become unreliable. The cost may vary from system to system. If we’re talking about nuclear systems, the fault might cause a failure that impacts many lives. If we’re talking about business applications, it might cause millions of dollars and eventually shut down the business.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Our goal is to reduce these costs&lt;/em&gt;. If we can decouple places where people make the most mistakes from the areas where they can cause an error, we can reduce the cost of failure. For example, sandboxing environments are a way to reduce costs. In iPhones, Apple uses application sandboxes for each application. When any application fails or crashes, it doesn&apos;t crash the whole phone. Apple increases the system&apos;s reliability by putting every application developed by third-party developers into sandboxes.&lt;/p&gt;
&lt;h2&gt;Scalability&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Defining the system load and performance is important to understand scalability. Scalability is the system&apos;s ability (performance) to cope with increased load.&lt;/em&gt; The load doesn&apos;t say anything when it&apos;s used alone. The load can be anything, depending on the system&apos;s architecture. For Twitter, as an example, it can be the number of tweets posted in a second or the number of tweets read in a second.&lt;/p&gt;
&lt;h3&gt;What is System Load?&lt;/h3&gt;
&lt;p&gt;To talk about increasing load and scalability, we first need to define the system&apos;s &lt;em&gt;current&lt;/em&gt; load. There is no one way of doing it as it depends on the project and its architecture, but we use &lt;em&gt;load parameters&lt;/em&gt;. These parameters will be different for every application.&lt;/p&gt;
&lt;p&gt;When we think about Twitter, the load parameter is not how many tweets are posted per second alone because it&apos;s not a high number that requires scaling the whole system. If there are 12000 tweets (write operation) per second, it&apos;s easy to handle. The load parameter for Twitter is the *&lt;a href=&quot;https://en.wikipedia.org/wiki/Fan-out*(software)&quot;&gt;fan-out&lt;/a&gt;_ effect of posting tweets. Each Twitter user follows many people, and each user is followed by many. How to build this system with 12000+ incoming tweets every second is the scalability problem of Twitter.&lt;/p&gt;
&lt;h3&gt;What is System Performance?&lt;/h3&gt;
&lt;p&gt;Besides load, we have to understand the performance of the system before trying to scale the application. We use performance metrics. These metrics vary in different systems. In batch processing systems, it is &lt;em&gt;throughput&lt;/em&gt; (the # of records the system can process per second); in online systems, it&apos;s the &lt;em&gt;response time&lt;/em&gt; (the time between request and response, not latency).&lt;/p&gt;
&lt;p&gt;When we take the response time, measuring it is simple: put a timer between the time the request is made and the response is received. Yet, talking about response time demands something else. We cannot only look at one single response time. Because each time we make a request, the response might arrive at different times for various reasons: network delay, database crash, garbage collection pause, package lost in the network, waiting for another system&apos;s response, etc. That&apos;s why we cannot take one request-response pair and define the performance. We need to gather a lot of pairs in a certain timeframe and analyze the response time from there by using &lt;em&gt;percentiles&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;💡When we talk about average performance, we usually talk about the &lt;em&gt;arithmetic mean&lt;/em&gt;. The average is rarely useful because it doesn&apos;t say anything about how many users are experiencing delays. That&apos;s why we use percentiles.&lt;/p&gt;
&lt;p&gt;Understanding percentiles is crucial because they are the required elements of &lt;em&gt;&lt;a href=&quot;https://www.atlassian.com/incident-management/kpis/sla-vs-slo-vs-sli&quot;&gt;Service Level Agreements (SLAs)&lt;/a&gt;&lt;/em&gt;&lt;a href=&quot;https://www.atlassian.com/incident-management/kpis/sla-vs-slo-vs-sli&quot;&gt;—the contracts that define the expected performance and availability of a service—and&lt;/a&gt; &lt;em&gt;&lt;a href=&quot;https://www.atlassian.com/incident-management/kpis/sla-vs-slo-vs-sli&quot;&gt;Service Level Objectives (SLOs)&lt;/a&gt;&lt;/em&gt; &lt;a href=&quot;https://www.atlassian.com/incident-management/kpis/sla-vs-slo-vs-sli&quot;&gt;and&lt;/a&gt; &lt;em&gt;&lt;a href=&quot;https://www.atlassian.com/incident-management/kpis/sla-vs-slo-vs-sli&quot;&gt;Service Level Indicators (SLIs)&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;To calculate average performance (the arithmetic mean), we get all our response times in a certain period. Let&apos;s say we have 100 requests in a second. We order response times from fastest to slowest. When we draw a line in the 50th response time in the ordered list, that is our median response time. If the 50th item is 100ms, it means 50% of our response times are faster than 100ms, and 50% of them are slower than 100ms. The arithmetic mean is called the 50th percentile—&lt;em&gt;p50. Be careful: percentiles are not percentages.&lt;/em&gt; Percentile represents a single entry in the ordered list.&lt;/p&gt;
&lt;p&gt;Let&apos;s take the 99th item in our previous list as another example. If it is 200ms, then we can say that the 99th percentile (often referred to as p99) will be 200ms. That means 99% of the response times will be faster than 200ms. Amazon uses the 99.9th percentile (&lt;em&gt;p999&lt;/em&gt;) in its internal systems. That means 1 out of 1000 response times will be above a certain threshold that they defined.&lt;/p&gt;
&lt;p&gt;Now that we understand how we can describe performance and load, we can define SLAs in our systems and track them properly. But still, how can we approach handling the increasing load and prevent breaking our SLAs?&lt;/p&gt;
&lt;h3&gt;Approaches for Coping with Load&lt;/h3&gt;
&lt;p&gt;There are two methods of scaling (a dichotomy): scaling up (vertical scaling) and sealing out (horizontal scaling). Although neither is a silver bullet, implemen­ting either one or a combination of two is often the right action. Choosing which way to go depends on the application and operation overall.&lt;/p&gt;
&lt;p&gt;Some services are elastic; they can add or remove resources depending on the need. Some of them need manual scaling, which leads to a simpler system and fewer operational surprises.&lt;/p&gt;
&lt;p&gt;What kind of scaling to use will always depend on the system. The system that scales well will be built around assumptions of defined load parameters (predicted common and rare operations).&lt;/p&gt;
&lt;p&gt;:::note
💫 In start-ups and non-proven products, it&apos;s more important to iterate on the product instead of building the system for a hypothetical future load.
:::&lt;/p&gt;
&lt;h2&gt;Maintainability&lt;/h2&gt;
&lt;p&gt;There are mainly three design principles for maintaining software systems: Operability, Simplicity, and Evolvability.&lt;/p&gt;
&lt;h3&gt;Operability&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Good operations can often work around the limitations of bad for incomplete software, but good software cannot run reliably with bad operations.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Good operability means making routine tasks easy, allowing the operations team to focus their efforts on high-value activities.&lt;/p&gt;
&lt;h3&gt;Simplicity&lt;/h3&gt;
&lt;p&gt;Systems that are not made simple quickly become &quot;a big ball of mud.&quot; To simplify systems, we need to reduce the accidental complexity, not the systems&apos; functionality. One of the best ways to reduce accidental complexity is an abstraction. However, finding good abstractions is not easy.&lt;/p&gt;
&lt;h3&gt;Evolvability&lt;/h3&gt;
&lt;p&gt;Making changes easy is crucial because system requirements, business priorities, technical infrastructure, and user requests never stay the same. Making a system evolvable depends on its simplicity and abstractions. Simple and easy-to-understand systems are easier to modify than complex ones. That&apos;s the idea behind &lt;em&gt;agility&lt;/em&gt;. Agile working patterns such as test-driven development are helpful, but agility is often used on a local scale (a few source code files in an application); therefore, we use evolvability on the data system level.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/reliability-maintainability-and-scalability-in-applications/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/reliability-maintainability-and-scalability-in-applications/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #38: Can you get a promotion by changing jobs?</title><link>https://candost.blog/newsletter/mektup-38/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-38/</guid><pubDate>Tue, 23 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;You might be in a strange position in your career where you hope to get a promotion soon, but the company seems like have no option for you. They have no new positions for your dream role. This new role can be any kind of leadership. Probably, you may know by now that giving someone the title &quot;senior&quot; is not bound to open positions but rather the experience, impact, and skills. Yet, staff engineering or engineering management, tech lead, and team lead roles—additionally—bound to open positions, headcount, and company&apos;s needs. Each software engineering team has various senior, mid-level, and junior engineers, but they have one leader (or two when the tech lead and team lead co-exist). Getting that position is not that easy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you and your manager feel ready for your promotion, but the company is unwilling to promote you or has no open space, what should you do?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First, I&apos;ve been there too, and you&apos;re not alone. I felt so alone and hopeless at that time. These situations are not easy to handle and cause a lot of stress. When we&apos;re stressed, our judgment and decision-making also get impacted. Hence, we make wrong calls. Overall, just know that you aren&apos;t alone; you&apos;re part of a big crowd.&lt;/p&gt;
&lt;p&gt;So, if you&apos;re considering leaving the company because they have no options for you, &lt;strong&gt;can you find a leading role in another company without being a leader or have no official leader title?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The short answer&lt;/strong&gt;: Yes, but it isn&apos;t easy.&lt;/p&gt;
&lt;h3&gt;Why is it difficult?&lt;/h3&gt;
&lt;p&gt;The answer is simple: companies don&apos;t want to take risks for leadership roles because the result can be catastrophic for the team and business.&lt;/p&gt;
&lt;p&gt;Hiring someone always has a certain amount of risk. When the new hire is not experienced in the role, this risk is more significant. The person might be knowledgeable about leadership (technical and/or people). Still, &lt;strong&gt;knowledge does not represent reality, and the application of knowledge—what we call experience—is the real trait in leadership.&lt;/strong&gt; And that&apos;s also what they ask you in interviews as well.&lt;/p&gt;
&lt;p&gt;In leadership interviews, you get behavioral questions besides technical questions. &lt;strong&gt;Companies test your technical skills and leadership skills separately.&lt;/strong&gt; You may be familiar with technical interviews and can succeed well because of your knowledge and experience. But when it comes to leadership interviews, companies ask you to talk about your concrete experiences in specific topics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You might be knowledgeable or have an idea about what to do in certain situations, but they are interested in what you have done before.&lt;/strong&gt; If you have relative experience in which you can relate to the question, you can give them some good answers. That&apos;s what I&apos;ve done as well. When I was interviewing for an Engineering Manager role before becoming a manager, I already had relative experience mentoring and coaching people and driving projects from start to finish. I used these experiences in the STAR method, which helped me get an offer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; To answer their behavioral ques­tions, always use &lt;a href=&quot;https://blog.hubspot.com/marketing/star-interview-method&quot;&gt;the STAR method&lt;/a&gt;. Define the &lt;strong&gt;Situation&lt;/strong&gt; you have been in, explain your &lt;strong&gt;Task&lt;/strong&gt; in the situation, which &lt;strong&gt;Actions&lt;/strong&gt; you took and what was the &lt;strong&gt;Result&lt;/strong&gt; of them. If you lean on the &quot;if this happens, I will do that&quot; style, that shows a lack of experience. If you don&apos;t have the experience, try to build that experience or talk about something related but be honest that you don&apos;t have direct experience.&lt;/p&gt;
&lt;p&gt;Whether you can get promotion via changing jobs or not depends on what kind of person the company you&apos;re applying to is looking for. If they have an experienced VP or Head of Engineering, or Engineering Manager who can coach and guide you, the company might be okay with hiring a junior leader. However, they will still look for rele­vant experience. Hence, you have to gain that experience.&lt;/p&gt;
&lt;p&gt;If you&apos;re in between looking for a new job in another company and waiting for your current company to promote you, I would suggest you approach it pragmatically.&lt;/p&gt;
&lt;p&gt;What is the realistic timeline you see for getting promoted in your current job? If the company believes that you&apos;re ready for a job promotion, but they have no budget or position open, for how long you most likely will wait? Is there anyone else looking for the same role? Do you have any competition? Write these down along with your possible compensation changes. Validate them with your manager. They might not disclose compensation details, but you can still ask if the numbers you have in mind are in the ballpark or not.&lt;/p&gt;
&lt;p&gt;Meanwhile, start applying to open positions in other companies. &lt;strong&gt;Don&apos;t hesitate.&lt;/strong&gt; These processes often take time. The earlier you start, the better situation you will find yourself in. Each interview will teach you where you lack experience. Also, interviewing is a skill that improves with practice. More interviews ➡ better interviewing skills.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If the promotion process takes at least another year, don&apos;t hold onto that and look for something else.&lt;/strong&gt; You might still be in the same company for a year more during the transition, but once you start looking, you might find a good opportunity. &lt;strong&gt;While looking for another job, seek opportunities that help you build leadership experience.&lt;/strong&gt; Soak all the knowledge you can get from your current employer and convert this knowledge into wisdom that will guide you in your future.&lt;/p&gt;
&lt;p&gt;As I mentioned, I got an engineering manager offer from another company when I was a software engineer. I didn&apos;t accept that job offer for various reasons. But I&apos;m a living example that it can be done. In the next Mektup, I will talk about what I have done to get an offer without being a manager before and how I built the experience and skills to get a good offer.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;/studying-and-learning-leadership/&quot;&gt;I self-studied leadership—a sneak peek into the next Mektup.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-38/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-38/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #37: Mentoring vs. Coaching vs. Teaching</title><link>https://candost.blog/newsletter/mektup-37/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-37/</guid><pubDate>Tue, 09 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;/newsletter/mektup-36/&quot;&gt;the last Mektup&lt;/a&gt;, I talked about proactive mentorship and what makes a mentor great. Let&apos;s continue with coaching and teaching and the differences between all three.&lt;/p&gt;
&lt;p&gt;Mentorship is the first step any engineer takes. Almost all senior engineers are somehow expected to mentor others. And rarely expected to be a mentee at the same time. There is a mispercep­tion that senior engineers do not need to be a mentee, but I disagree with that. Everyone—including principal en­gineers and CTOs—needs mentoring in one area or another. There is always room for improvement, and finding a mentor is one of the best growth strategies.&lt;/p&gt;
&lt;p&gt;The mentoring relationship often starts with a need; you need a mentor, or someone else needs you. Although the beginning is a bit awkward, it can become a great relationship. As I said in &lt;a href=&quot;/newsletter/mektup-36/&quot;&gt;the last Mektup&lt;/a&gt;, mentoring helps both sides grow because the focus is on long-term career development. It&apos;s a knowledge exchange and lear­ning collaboration. Let&apos;s demonstrate this to understand better.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/Mentor-Mentee-Relationship-1.jpg&quot; alt=&quot;Mentor vs. Mentee Knowledge and Interest&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A mentor has a piece of knowledge on a topic. The mentee is interested in acquiring this knowledge and experience. They have some knowledge, but they want to learn more.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/Mentor-Mentee-Relationship-2.jpg&quot; alt=&quot;Mentor and Mentees&apos; Common Interest&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When their relationship starts, their common knowledge is often small.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/Mentor-Mentee-Relationship-3.jpeg&quot; alt=&quot;Mentor and Mentees&apos; Growing Common Knowledge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After some time, their common knowledge grows. As the mentee consumes and learns more about the topic, the mentor also grows their knowledge.&lt;/p&gt;
&lt;p&gt;When a mentor starts sharing wisdom, their understanding of the topic deepens. &lt;strong&gt;Mentee&apos;s questions challenge the status quo in the mentor&apos;s mind and nudge them to rethink, research more and learn more.&lt;/strong&gt; Over time, the mentor&apos;s knowledge grows together with the mentee&apos;s. That&apos;s the beauty of mentorship. &lt;strong&gt;It&apos;s bidirectional. Mentor ↔ Mentee.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now, let&apos;s look at &lt;strong&gt;coaching and teaching—unidirectional relationships&lt;/strong&gt;. A coach guides you, and a teacher teaches you. Well, it&apos;s not that simple, but in short, it&apos;s what happens. Contrary to mentorship, where you figure things out together, in coaching, &lt;strong&gt;the coach asks questions to help other people find their own way. The coach gives small nudges to guide or course-correct.&lt;/strong&gt; The focus is on a specific skill. Of course, a coach also learns during guiding. Yet, their learning is different from learnings as a mentor. A coach learns from the coachee&apos;s experiences without being involved in them. The main work is on the coachee; they follow the suggestions and recommendations of a coach. If the coachee doesn&apos;t put in the effort and work on improvements, the relationship fails. The same applies to teaching.&lt;/p&gt;
&lt;p&gt;In teaching, &lt;strong&gt;the teacher is informative&lt;/strong&gt;. They directly share knowledge; they are the ones who took the same journey as a student before and currently sharing what they have learned over time. Think about yourself in a classroom. There is a teacher who explains a topic to you. &lt;strong&gt;The student is in listening and consuming mode while the teacher is in informing and narrating mode.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What separates all three—mentoring, coaching, and teaching—is who the active side is.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In teaching, the teacher is active; they do the main work (Teacher ➡ Student). They prepare for the class and pass their knowledge to students.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In coaching, the coachee is the active one.&lt;/strong&gt; The coach asks questions and gives suggestions or small nudges, but the work is on the coachee; they have to do the work and follow their own path (Coachee↩Coach). In mentoring, both sides are active. Although the mentor has some knowledge that the mentee doesn&apos;t, they both actively contribute to the topic. It is why engineers are expected to mentor but not expected to teach or coach.&lt;/p&gt;
&lt;p&gt;On the other hand, leaders are often expected to coach people together with mentoring. &lt;strong&gt;The point of leadership is helping people figure out problems by themselves, and that&apos;s the definition of coaching.&lt;/strong&gt; I will write about coaching in detail later, but the difficulty with coaching is learning to stay silent and not give guidance all the time. The best coaches (and leaders) I worked with rarely gave advice but always asked questions.&lt;/p&gt;
&lt;p&gt;Depending on your needs and plans, you have to decide what you&apos;re looking for. &lt;strong&gt;My recommendation for all engineers—regardless of their growth path—is to start with mentoring.&lt;/strong&gt; Help someone grow by being a mentor, and find yourself a mentor who has been in your place before. &lt;strong&gt;Never stop your mentorship re­lationships in your career.&lt;/strong&gt; As both mentee and mentor are active, you&apos;ll always learn something from both sides.&lt;/p&gt;
&lt;p&gt;If you&apos;re planning to move into more management roles, find a junior or graduate engineer you can try coaching. Read &lt;a href=&quot;https://boxofcrayons.com/the-coaching-habit-book/&quot;&gt;&quot;The Coaching Habit&quot; by Michael Bungay Stainer&lt;/a&gt; and learn how to stay silent and ask better questions.&lt;/p&gt;
&lt;p&gt;If you&apos;re into teaching others, that&apos;s a role you can always do anytime in your career. There are always people who are less knowledgeable than you. The best way to start is to give talks in your company about topics you know.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Be aware of the key differences between mentoring, coaching, and teaching and which one you want. Pick one and follow your own path.&lt;/strong&gt; Doesn&apos;t matter which side you&apos;re on (the active or passive side); you&apos;ll grow immensely.&lt;/p&gt;
&lt;p&gt;One important note; never start either of them if you don&apos;t have energy or time. &lt;strong&gt;It&apos;s crucial that mentoring and coaching sessions are frequent and consistent.&lt;/strong&gt; Don&apos;t leave someone halfway because they will be frustrated, and it is never easy to find a new person halfway. Be reliable and trustworthy, and share what you learn on your journey.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;/14-lessons-i-learned-in-10-years/&quot;&gt;I wrote this 2,5 years ago.&lt;/a&gt; All of them are still valuable lessons.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-37/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-37/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Form enabling teams to share expert knowledge in the organization</title><link>https://candost.blog/notes/56d2/</link><guid isPermaLink="true">https://candost.blog/notes/56d2/</guid><pubDate>Sat, 30 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Enabling teams consist of experts in a subtopic where deep expertise is required. These teams take pressure from &lt;a href=&quot;/notes/56d1/&quot;&gt;stream-aligned&lt;/a&gt; teams by doing research and guiding them in certain areas. Enabling teams join stream-aligned teams, share their knowledge, and leave. I&apos;ve never come across any team like that. I believe these teams are more common in big companies where mid-size companies don&apos;t have enough people to fill this team. The business also cannot be in favor of these teams with a limited budget. If enabling team&apos;s mission is to help stream-aligned teams move faster, it might actually work with a limited budget by having short-living enabling teams.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a/&quot;&gt;19a: Knowns and Unknowns&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56d2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56d2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #36: How to Become A Great Mentor</title><link>https://candost.blog/newsletter/mektup-36/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-36/</guid><pubDate>Tue, 26 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;I&apos;ve been mentoring people all around the world for a while. As I stepped into the management role, I also started coaching people in my team who were already mentors. When I started mentoring, I thought it would be less work for me as a mentor and a lot of work for the mentee.&lt;/p&gt;
&lt;p&gt;It seemed logical to expect mentees to come up with topics and tell me skills they want to improve because they should know which ones they lack. At least, as a starting point, I expected mentees to bring up what they wanted to improve. Soon I realized that it was not the reality. &lt;strong&gt;Mentees often have no idea where to improve.&lt;/strong&gt; If they knew, they could have already worked on it by themselves.&lt;/p&gt;
&lt;p&gt;On the other side, as a mentee, I often struggled with figuring out which skills I should improve. There is a ton of information available, yet which ones to help in a career is always a question.&lt;/p&gt;
&lt;p&gt;After a while, I looked for what a mentor should do, how to approach the mentee, how to build a relationship and trust and give the mentee the right direction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Every mentor-mentee relationship should start with a clear goal.&lt;/strong&gt; Depending on the need, the mentoring will either require a long time for a broad focus on skills or a short time with a focus on a specific one. Either way, I learned that the mentor should be as proactive as possible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Whenever the mentor is passive and expects the mentee to come up with either a topic or questions, the relationship fails.&lt;/strong&gt; Every time I tried to be proactive, asked questions, and brought up new topics, our relationship with a mentee was stronger, and they were on a great learning path.&lt;/p&gt;
&lt;p&gt;When a mentee asked a question I didn’t know the answer to, I went back to researching and learning. Then I brought the answer to the mentee without waiting for the next meeting. That made me trustworthy and reliable, and mentees became more relaxed and could ask whatever came to their minds.&lt;/p&gt;
&lt;p&gt;Studying and researching helped me deepen my knowledge. I became more proficient in supporting the mentee in their learning path.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The beauty of the mentor-mentee relationship is that both sides learn.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let’s list down the role of a mentor. A mentor&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;makes the learning experience effective.&lt;/li&gt;
&lt;li&gt;asks guiding questions.&lt;/li&gt;
&lt;li&gt;keeps the focus on a topic.&lt;/li&gt;
&lt;li&gt;always listens.&lt;/li&gt;
&lt;li&gt;doesn’t leave the mentee alone.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On top of all, &lt;strong&gt;a proactive mentor&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;asks the mentee if they need any help without waiting for them to ask for help.&lt;/li&gt;
&lt;li&gt;gives feedback on actions they observe from the outside without waiting for the meeting.&lt;/li&gt;
&lt;li&gt;builds the relationship without waiting for the mentee.&lt;/li&gt;
&lt;li&gt;researches and learns a topic they didn’t know and returns to the mentee with some answers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It sounds like a lot of work for the mentor. However, all of these take a little time (except research). &lt;strong&gt;Building the relationship in this proactive approach will help both parties grow exponentially.&lt;/strong&gt; Also, proactive mentorship is one of the milestones of any leadership position—whether manager or staff engineer.&lt;/p&gt;
&lt;h2&gt;Why proactive?&lt;/h2&gt;
&lt;p&gt;Being a mentee means being out of your comfort zone. If the mentor waits for the mentee to ask a question, the mentee’s stress level increases even more. The reason for this relationship is the mentee’s struggle with a topic. &lt;strong&gt;Being in an incognizant position already creates tension.&lt;/strong&gt; When we top that with even more responsibility, being a mentee becomes challenging.&lt;/p&gt;
&lt;p&gt;Also, the mentee might not know they are on the wrong path. &lt;strong&gt;If the mentor is not proactive, the mentee can get far on the irrelevant track.&lt;/strong&gt; Being proactive saves time for both mentor and mentee. The mentor can course-correct easily when they see the mentee going off-track in the beginning.&lt;/p&gt;
&lt;p&gt;Lastly, proactive mentorship eases frustration. &lt;strong&gt;Mentees often struggle and can be hesitant to disturb mentors every hour.&lt;/strong&gt; When there is no response for some time from the mentee, asking how they are doing helps mentees solve smaller problems easier and decompress their tension.&lt;/p&gt;
&lt;p&gt;As you grow into leadership, proactive mentorship will be one of the milestones in your career. &lt;strong&gt;Being a great mentor always elevates you because people will back you up when you’re up for promotion, regardless of your company’s promotion approach.&lt;/strong&gt; Having these relationships will teach you tons of things you haven’t considered before and make you a great leader.&lt;/p&gt;
&lt;p&gt;One last note, keep in mind that you’re not a teacher. I will talk about the differences between teaching, coaching, and mentoring in the next Mektups, but in short, teaching and coaching are one-way activities while mentoring is bidirectional. As a mentor, you must do the work as much as your mentee does.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;https://candost.substack.com/p/27-problem-solving-skills-and-a-strategy-065&quot;&gt;In case your mentee (or you) needs some strategies for problem-solving&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-36/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-36/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Organizations should reduce cognitive load on stream-aligned teams</title><link>https://candost.blog/notes/56d1/</link><guid isPermaLink="true">https://candost.blog/notes/56d1/</guid><pubDate>Sun, 24 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Stream-aligned teams are the most common but most mistaken teams. They are the bones of any organization, yet I have seen they often have many problems because other team topologies don&apos;t exist, and organizations work only with these teams. This strategy becomes the major bottleneck for faster delivery. It results in teams not having that much autonomy, a lot of dependencies on each other, and accumulated tech debt with little-to-none experimentation.&lt;/p&gt;
&lt;p&gt;When other teams exist (e.g., platform), stream-aligned teams thrive and become more successful. The organization&apos;s goal should be to reduce the cognitive load of these teams. Then, these teams can deliver end-to-end customer and business value.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56d1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56d1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Forming teams and defining topology depends on the context</title><link>https://candost.blog/notes/56d/</link><guid isPermaLink="true">https://candost.blog/notes/56d/</guid><pubDate>Thu, 21 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The pre-maturely decided team structures often fail sooner than expected. Teams have to be formed around a vision of a domain. While forming any team, we must consider which dependencies the team will have, the cultural and technical maturity of team members, and the organization&apos;s size. We must make conscious decisions about the silos we create or break down. We have to form the team for long-term solutions, not short-term ones.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/35/&quot;&gt;35: Protective Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30a/&quot;&gt;30a: Change is Inevitable&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Team Anti-Patterns and their effects</title><link>https://candost.blog/notes/56c/</link><guid isPermaLink="true">https://candost.blog/notes/56c/</guid><pubDate>Wed, 20 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ad-hoc team design sounds excellent for solving a problem or delivering a specific project part. However, in this situation, many things appear as an afterthought. Because each team builds tech debt and tries to solve it after some time. When people leave the team, and a few people are destined to maintain all systems somehow, the team&apos;s delivery gets a huge hit, and morale swiftly decreases. The remaining team cannot handle the workload, and it becomes more and more challenging to maintain the whole system.&lt;/p&gt;
&lt;p&gt;Shuffling team members is often called team fluidity—teams change once in a while—while expecting people to learn different parts of the project and tech stack quickly. This is often an anti-pattern because it demands individual and system fundamentals to be strong. When someone moves from Team A to Team B, the onboarding has to be smooth and easy, the tech stack, frameworks, and infrastructure must be built in the same way, documentation has to be strong, and domain knowledge shouldn&apos;t be a significant problem to learn. Also, once a person leaves a team, they leave behind a system to maintain, often taking their knowledge. Getting all this stuff right is difficult.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Define team APIs to design the team&apos;s outside communication</title><link>https://candost.blog/notes/56b1/</link><guid isPermaLink="true">https://candost.blog/notes/56b1/</guid><pubDate>Mon, 18 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In theory, having team APIs is great and can work in relaxed times. Defining and enforcing them is tricky in a dynamic company that changes every few months. Team APIs need a constant team with a consistent push to follow the APIs. In practice, it is difficult. Another part is who will be responsible for keeping them up-to-date. Writing down all these documents should be everyone&apos;s work in the team. Only a dedicated person should be accountable. If the team is mature enough, they can keep updating their APIs. If the team is not mature enough, the manager has to follow up on APIs to ensure they are updated regularly. That&apos;s extra work for the team. Yet, it&apos;s highly possible to achieve.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2a/&quot;&gt;2a: Take breaks to write better&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56b1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56b1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #35: Don&apos;t call people resources</title><link>https://candost.blog/newsletter/mektup-35/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-35/</guid><pubDate>Wed, 13 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Today, I wanted to write you about mentoring, but this seemed more suitable for the current tech scene. As many companies take a look at how to use their workforce more effectively to increase profits and cut costs, I wanted to write about something that disturbs me a lot.&lt;/p&gt;
&lt;p&gt;It’s not difficult to guess that in each company, people are called resources in one way or another. I’ve never heard of a company that forbids using the “resources” word.&lt;/p&gt;
&lt;p&gt;My problem with the word is that how we use it doesn’t fit its definition, and it removes the human sentiment from any situation.&lt;/p&gt;
&lt;p&gt;​**&lt;a href=&quot;https://www.merriam-webster.com/dictionary/resource&quot;&gt;According to Merriam-Webster Dictionary&lt;/a&gt;**, the most suitable definition for the tech industry’s usage is “a source of information or expertise.” If we call people a source of information or expertise, that would be okay-ish. Still wrong, but okay-ish. People can be experts and can be a source of information. But people are never just a source of information.&lt;/p&gt;
&lt;p&gt;The word “resources” dehumanizes the people in the company. People are individuals and have unique characteristics that can’t be replaceable. If people were resources, we could hire and replace everyone quickly without having any behavioral interviews and would never look for a “cultural fit” in the hiring process.&lt;/p&gt;
&lt;p&gt;Historically, people’s characteristics were not considered during industrialization. That’s why the term “Human Resources” came up. People’s jobs were repetitive and didn’t require any specific skills or personality. Humans were used as &lt;em&gt;resources&lt;/em&gt; like materials that can be replaceable quickly when it’s not working.&lt;/p&gt;
&lt;p&gt;In the tech industry, people are, well, &lt;em&gt;people&lt;/em&gt;. We have to consider every aspect of human life. We can’t even get the same productivity from a person every single day. People have good and bad days. Their motivation and performance will vary each day in different projects and situations.&lt;/p&gt;
&lt;p&gt;That’s the part you’ll learn when you become a leader. &lt;strong&gt;As a leader, your job is not to see people as resources&lt;/strong&gt;. &lt;strong&gt;Always think about them as human beings.&lt;/strong&gt; Think about people’s lives, and if you know that they will be in a stressful month, support them by trying to reduce their stress and workload on the company. Even if you’re doing so-called “resource planning,” use the right term and do “staff time allocation and project planning.”&lt;/p&gt;
&lt;p&gt;While it doesn’t fit into its definition, my other problem is about culture. Using certain phrases and words changes company culture. Every leader should care about cultural changes in a company. When wrong words make their way into the company vocabulary, the culture shifts.&lt;/p&gt;
&lt;p&gt;As using the “resources” dehumanizes people, the company starts optimizing the wrong things. &lt;em&gt;Resource planning&lt;/em&gt; becomes like a number game where “&lt;em&gt;resources”&lt;/em&gt; are shifted left and right without considering any personal impact. The burden on the teams and departments grows and attrition increases. If you become a manager, you’ll see that planning projects and staff are difficult jobs where nothing can be like a number game.&lt;/p&gt;
&lt;p&gt;I want to keep this letter short today. So, don’t use the word resources to refer to the people in the company. Never. Ever. Find alternatives for the situation you have. Use the terms “project planning,” “staff,” or “people.” Also, read &lt;strong&gt;&lt;a href=&quot;https://www.ufried.com/blog/people_are_not_resources/&quot;&gt;Uwe’s post&lt;/a&gt;&lt;/strong&gt;. Uwe explains well the ethical, performance, team, and hiring problems when using the word “resources.” I couldn’t explain it better, so that’s why I’m sending you Uwe’s post.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-35/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-35/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #34: Process Thinking</title><link>https://candost.blog/newsletter/mektup-34/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-34/</guid><pubDate>Tue, 28 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h4&gt;Too Few Processes is Chaos; Too Many Won&apos;t Move Anything&lt;/h4&gt;
&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/newsletter/mektup-32/&quot;&gt;Two Mektups ago&lt;/a&gt;, I mentioned a mindset that engineers should develop: &lt;em&gt;process thinking&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This one is a bit tricky because it’s one of the areas where software engineers can easily get lost. They either get into creating too many processes or resist creating any processes and lose possible increases in productivity and focus.&lt;/p&gt;
&lt;p&gt;I remember my time going into the senior level; I focused on increasing the team&apos;s productivity by automating things or taking care of the tasks that nobody wanted to do, such as researching a topic and writing a results report. These efforts ended up helping me grow into management roles. I also saw similar work from my colleagues who ended up in staff+ engineer positions.&lt;/p&gt;
&lt;p&gt;Let’s dive in!&lt;/p&gt;
&lt;h2&gt;What is Process Thinking?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Focusing on processes to increase productivity helped me to see how people get distracted from their work.&lt;/strong&gt; Coding and designing applications/systems demand focus; these are not jobs you can do while watching a video on the side (Don’t tell me you can. &lt;a href=&quot;https://www.psychologytoday.com/us/blog/creativity-without-borders/201405/the-myth-multitasking&quot;&gt;You cannot.&lt;/a&gt;). Although many engineers try to keep their focus on their own strategies, they might have a tremendous amount of distraction from the company. If projects need too much conversation and consensus every time, creating a standardized process can help.&lt;/p&gt;
&lt;p&gt;Some of these processes are technical, and some of them are not. Whether you want to grow in the Individual Contributor or management track, your focus will shift.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Growing into manager roles demands improving the productivity of the team, usually without writing a single line of code.&lt;/strong&gt; For example, when I was a senior engineer, I focused on how we communicate with each other, our team and company-wide routines, and the collaboration we do between teams. I led the creation of &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;the RFC process&lt;/a&gt; in our company. I created the customer support days for engineers because engineers were unaware of the customer complaints. These were the results of the problems I had seen.&lt;/p&gt;
&lt;p&gt;Although requirements of staff+ engineers change from company to company, the role often demands &lt;strong&gt;a holistic view of the systems and how people interact with these systems.&lt;/strong&gt; For example, if the engineers spend a lot of time rewriting the same components from scratch or copy-pasting them from previous projects in each new project, creating a reusable component or library of components makes sense. Finding out how the company will maintain this library &lt;em&gt;is&lt;/em&gt; process thinking. Creating a library is often easier than integrating it into existing systems and keeping it maintained for a long time. If you only develop the library and leave it there, it will come back and bite you. People will often refer to your work as unfinished or not thought well. Thinking about this library’s lifecycle and finding the best strategies will move you forward in your career.&lt;/p&gt;
&lt;p&gt;We can summarize the &lt;em&gt;process thinking&lt;/em&gt; as “&lt;em&gt;Making the place better than you found.&lt;/em&gt;”&lt;/p&gt;
&lt;h2&gt;How to Find the Needed Process&lt;/h2&gt;
&lt;p&gt;When we wanted to have an RFC process, we didn’t start from the RFC. We had a feedback and documentation problem. Individuals couldn’t get enough feedback on their ideas and needed a way to make their ideas more visible. Their solutions were not reaching their potential. Also, we often couldn’t find any background information about a strategic decision that’s been made in the past. Not knowing the background of a decision makes it difficult to change it later. By introducing a process, we opened up a way for new ideas, and we made sure they were written down.&lt;/p&gt;
&lt;p&gt;Long before the RFC process, I tried implementing Scrum with two weekly sprints in my previous team when I was an engineer. Because I’ve read a few books about it and wanted to apply my learnings. Although everybody was happy to try Scrum, it did not solve any problems we had. Scrum slowly phased out, and we went back to our previous position. &lt;strong&gt;The mistake was that I&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;liked&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;the solution, yet, it didn’t address any problem in our previous collaboration system.&lt;/strong&gt; Now, when I look back, I see my mistake: I didn’t look at the root problem. And that’s how you develop process thinking.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Look at the root of the problem and start thinking about how you can solve it once and for the long term.&lt;/strong&gt; Process thinking is taking a step back and having a holistic look. Seeing the bigger picture shows the overarching problems and interconnections between them. It requires a lot of research. Although your company’s problem might be unique, a lot of problems are solved by other people in the industry. When you find a solution, don’t jump into the first one. Find multiple strategies and bring sustainable solutions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don’t have a process for the sake of having it.&lt;/strong&gt; Process thinking somehow tricks you into loving processes—the solution you bring. Keep your focus on the problem. You might learn a process from others and want to implement it in your team or department. However, look at the problem in the beginning. Which problem does a new process solve? Mindfully and diligently approach your problem and go into its root before introducing any process. Ask for help and feedback &lt;em&gt;before&lt;/em&gt; implementing the process.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Process thinking is not an alone activity.&lt;/strong&gt; You have to involve your team and others and work together. Without their support, your attempts will always fail. You have to get the buy-in from people and earn their trust so that they will follow you.&lt;/p&gt;
&lt;h2&gt;How to Make Progress&lt;/h2&gt;
&lt;p&gt;I don’t know how many times I’ve seen a process kicks off well with huge support and slowly phase out. &lt;strong&gt;Implementing a sustainable process is more difficult than creating it.&lt;/strong&gt; There are tons of things that can—and will—go wrong. Similar to &lt;a href=&quot;https://en.wikipedia.org/wiki/Second_law_of_thermodynamics&quot;&gt;the second law of thermodynamics&lt;/a&gt;, &lt;strong&gt;without deliberate action in any process, the degree of the disorder increases.&lt;/strong&gt; Here are a few things I learned about creating department- or company-wide processes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Be reliable.&lt;/strong&gt; Reliability builds trust. When you promise to do something, don’t neglect it.&lt;/li&gt;
&lt;li&gt;You can’t do it alone, and more importantly, &lt;strong&gt;you can’t make people do something.&lt;/strong&gt; What you can do is to make the entry barrier low. Then ask them to give it a try.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You need to remind, ping, and push people deliberately.&lt;/strong&gt; Saying something once won’t move the needle. Changing habits and processes is not easy. Even if the existing processes are broken, humans are hesitant to change and often fall back on whatever they have.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If it doesn’t work, it doesn’t work. Adapt or abandon.&lt;/strong&gt; If you find a better solution on the way, evolve your solution. There is no perfect solution; all solutions are trade-offs. Learn your trade-offs by asking why people don’t follow the process. Adjust your solution when you hit a roadblock.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Find the balance.&lt;/strong&gt; Too much process will never move anything; too little process is pure chaos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I want to close this letter with a differentiation between managing and leading that you need to be mindful of while growing into leadership roles. Paulo André &lt;a href=&quot;https://hagakure.substack.com/p/twh35-20-principles-i-strive-to-live&quot;&gt;mentions&lt;/a&gt; a principle that must be part of any leadership and management role: &lt;em&gt;“Manage process, lead people (and be led by them). Processes are inanimate, to be controlled, tweaked, optimized, and manipulated. People are animated with thoughts, feelings, hopes, dreams, fears, and anxieties. Treat each accordingly, and never confuse the two.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;When any leader tries to manage people, it ends with disaster. &lt;strong&gt;While working on processes, lead people but also allow yourself to be led by others.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt;&lt;/em&gt; Maybe you can try &lt;em&gt;process thinking&lt;/em&gt; by creating &lt;a href=&quot;/newsletter/mektup-26/&quot;&gt;a Definition of Done&lt;/a&gt; within your team and extending it to the organization.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-34/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-34/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On Drugs and Great People</title><link>https://candost.blog/on-drugs-and-great-people/</link><guid isPermaLink="true">https://candost.blog/on-drugs-and-great-people/</guid><description>When you use any drugs, have you thought about the background of it, about people dying and suffering?</description><pubDate>Mon, 27 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve been thinking about drug usage for a while and never had a chance to have an open conversation with anyone for a long time until recently.&lt;/p&gt;
&lt;p&gt;I wondered for a long time if drug users think about the background of the drug they use or not. If people thought about the others who are killed/injured and families destroyed behind the scenes. I question if they thought about what happens to people who risk their lives for so little gain while the cartels take the most significant cut.&lt;/p&gt;
&lt;p&gt;The wondering is not a judgment. Not an accusation. It is curiosity. I have many friends who occasionally use drugs, and I love each one of them. They are always thoughtful and will offer others help when it is needed the most. And that puzzles my mind.&lt;/p&gt;
&lt;p&gt;Why don’t great people think about the background of drugs?&lt;/p&gt;
&lt;p&gt;It’s not that they don’t know what’s going on. There are hundreds of documentaries, daily news on TV and in newspapers, and even various TV series (e.g., Narcos—its first season was the most popular TV show on Netflix when it was released). Everybody knows Pablo Escobar&apos;s name and what he has done over the years.&lt;/p&gt;
&lt;p&gt;The problem is not the knowledge; it is awareness and mindfulness, I believe. I asked, “Have you thought about the background of the drug, about people dying and suffering?” one of my friends. They answered, “I’ve never thought about it until you said it.” It was the answer I expected. It looks like they are buying drugs, like they are buying meat from the supermarket. It’s not the same as &lt;a href=&quot;https://www.forbes.com/sites/ronaldholden/2017/06/15/do-not-underestimate-the-ignorance-of-the-american-eater/&quot;&gt;adults&lt;/a&gt; who are ignorant of where the food comes from. I know that my friends are not ignorant. They know what’s going on behind the scenes. They just don’t think about it. Never. Because they don’t immediately see the result of their actions. What they see is not the reality.&lt;/p&gt;
&lt;p&gt;Additionally, using drugs—I believe—is being &lt;em&gt;cool&lt;/em&gt; and &lt;em&gt;rebellious&lt;/em&gt;, feeling &lt;em&gt;relaxed&lt;/em&gt; and &lt;em&gt;high,&lt;/em&gt; and trying to &lt;em&gt;suppress&lt;/em&gt; daily stress*,* nothing more. I had a few discussions long ago with a few rebellious friends who were smoking marijuana. Their arguments gathered around smoking marijuana being less harmful than smoking cigarettes. They want to legalize marijuana because of that as well. This situation doesn’t show that marijuana should be legal; it shows that cigarettes should be illegal. I’m saying that as a past smoker. I smoked cigarettes for seven years. And as much as I hate any kind of restriction, that should be the way.&lt;/p&gt;
&lt;p&gt;I don’t support any restrictions that are being done to impact personal choice. Everyone is free to do whatever they want to do to their bodies. However, the line starts when actions harm others. When you smoke cigarettes, you harm others. When you use cocaine, you harm others. It’s no different than the other. If your action hurts someone else on the way, then it has to be stopped.&lt;/p&gt;
&lt;p&gt;If I stop any drug user in Berlin or Hamburg, ask them, “Would you kill someone?” I’m 100% sure all of them will be shocked by the question and answer with “Absolutely not! Are you crazy?” Yet, with every line they do and every joint they roll, many people die behind the scenes.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Disclaimer: I also smoked marijuana a couple of times before. Not only was I not mindful, but also I was ignorant of what was happening behind the scenes at that time.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/on-drugs-and-great-people/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/on-drugs-and-great-people/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #33: One milestone and five articles</title><link>https://candost.blog/newsletter/mektup-33/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-33/</guid><pubDate>Tue, 14 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;/newsletter/mektup-32/&quot;&gt;the last Mektup&lt;/a&gt;, I talked about product thinking. That &lt;strong&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=31595285&quot;&gt;struck a chord on HackerNews&lt;/a&gt;&lt;/strong&gt;, and thousands of people read and commented on it. I haven’t read the comments yet. I always have mixed feelings about comments (stress/curiosity/doubt) on HN; that’s why I’m waiting a bit.&lt;/p&gt;
&lt;p&gt;With that, &lt;strong&gt;this month my blog has passed a big milestone of 100,000 page views from whopping 94,000 visitors like you!&lt;/strong&gt; I started this blog in December 2020. Although I was mainly writing on my previous blogs, starting fresh and building up was a big challenge; it still is. However, I enjoy writing down my thoughts and learnings and will keep doing it for the foreseeable future.&lt;/p&gt;
&lt;p&gt;Anyway, in honor of achieving the milestone, I will keep it short and recommend five articles I have written before. These articles will help you gain a new perspective, open doors in your growth path, and challenge you. Although I wrote them a while back, they are timeless and still popular.&lt;/p&gt;
&lt;p&gt;Give them a read if you haven&apos;t yet!&lt;/p&gt;
&lt;h2&gt;Effective One-on-One Meetings for Engineers&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;/effective-1-on-1-meetings-own-your-one-on-one-meeting/&quot;&gt;Article&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are many one-one-one guides for managers but near to nothing for engineers. The meeting is for engineers; it’s their meeting. Therefore, engineers should own the meeting and make it effective. If your manager doesn’t care about one-on-ones, you can nudge them. This is what I did. When I changed my perspective and worked on improving my one-one-one meetings, the results were terrific. I increased my communication with my manager, and I felt I was learning and growing faster than usual. This led me to become an engineering manager.&lt;/p&gt;
&lt;h2&gt;How to Stop Endless Discussions&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;Article&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When we find ourselves in endless debates where everyone defends their idea (tabs vs. spaces, React vs. Angular, iOS vs. Android, Reactive vs. Object-Oriented programming), we don&apos;t know how to handle the situation. We often create conflicts between ourselves and other team members. We eventually find a way out, but what we need is an excellent system. In this article, I explain that system.&lt;/p&gt;
&lt;h2&gt;Bias for Action&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;/bias-towards-action/&quot;&gt;Article&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I always thought that we needed to learn all of the fundamentals of a topic before taking any action. It was the approach I took as a software engineer. I spent my whole life going down rabbit holes, researching, learning, and coming up with solutions that substantially solved the problem. Think twice (or more); code once. I was wrong with my approach. All I needed was action. Having a bias to action is more helpful than discussing and researching everything prior. Quantity beats quality in learning. Action beats perfection.&lt;/p&gt;
&lt;h2&gt;Don’t Assume Consensus in The Absence of an Objection&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;/dont-assume-consensus-in-the-absence-of-objection/&quot;&gt;Article&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Consensus decision-making means everyone explicitly agreeing to the proposed idea. The leader needs explicit agreement from everyone and shouldn&apos;t assume consensus in the absence of objection. Many people assume there is a consensus when they don&apos;t and are faced with silence. This pattern became more common in virtual meetings. In this post, I shared why we have these silences and how it impacts the decision.&lt;/p&gt;
&lt;h2&gt;The Decision-Making Pendulum&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;Article&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The most critical problem I&apos;ve seen is having struggles in the decision-making process. The inflexibility in decision-making is at the root of various issues. Many leaders either use a lot of authority or seek consensus. I wrote this post about The Decision-Making Pendulum. The leaders must learn the skills to move in the pendulum from side to side.&lt;/p&gt;
&lt;p&gt;Until next time, take care!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-33/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-33/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #32: Product Shouldn&apos;t Be Left to Product Managers</title><link>https://candost.blog/newsletter/mektup-32/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-32/</guid><pubDate>Tue, 31 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Up until my mid-level engineering, I didn’t think about the product. My focus was on writing good code, designing software well, and delivering it on time. Clean and readable code, decoupling dependencies and sub-systems, adapting to changes that Apple announced (I was an iOS engineer), and learning about collaboration strategies (Scrum, Kanban, etc.) were my focus. Although that focus made me a better mid-level engineer, I needed something else to go beyond mid-and senior-level when the time came. That’s when I realized that I needed product and process thinking. I’m gonna talk about process thinking in upcoming letters, but let me open product thinking and how it is essential to level up.&lt;/p&gt;
&lt;p&gt;There was a point in mid-level engineering where I started talking with stakeholders directly, looking at the data to understand the important user problems instead of waiting for my product manager or team lead to tell me what I needed to do. The behavior change broadened my horizon and extended my influence on the product and company as well.&lt;/p&gt;
&lt;p&gt;Once I realized that I was hired to solve problems and had to understand the product to solve them, my career started to go up fast. I became knowledgeable about the product and was able to influence its direction. Thanks to product thinking, my focus moved from solution to problem.&lt;/p&gt;
&lt;h2&gt;What is Product Thinking?&lt;/h2&gt;
&lt;p&gt;Product thinking means &lt;strong&gt;thoroughly understanding the domain you’re working at, knowing the market your domain is part of, and how your product contributes to the overall business model and strategy&lt;/strong&gt;. You need to actively keep the customer needs in mind and leverage input from product stakeholders and engineering leaders to determine the right technical solutions to deliver customer value quickly.&lt;/p&gt;
&lt;p&gt;For example, I’m currently working in payment and billing systems. Therefore, I have to know billing, payment, invoicing, dunning, discounts, etc., so that I can understand the problems we’re facing. I also have to follow how the payment engineering market evolves and learn the changes and new technologies in the domain. Additionally, I have to know how our solutions fit into the business strategy, such as our subscription model, discounting strategy, and more. Although these topics are not related to coding at all, they make me a better engineer and engineering leader.&lt;/p&gt;
&lt;p&gt;However, there is also an engineering side to product thinking: &lt;strong&gt;you have to understand your organization’s engineering strategy and its implications for your team.&lt;/strong&gt; For instance, if you start a new project, you have to know which technologies you should use (programming languages, frameworks, tools, etc.) and which ones you should avoid. I’ve seen (many, many times) that a few engineers favor one programming language that no one else knows in the company and develop a product and leave the company after a year. What they leave behind is a burden, pain, and a codebase that no one wants to work on (Side note: please, never do that).&lt;/p&gt;
&lt;h2&gt;Why do you need product thinking?&lt;/h2&gt;
&lt;p&gt;Because if you want to develop better software, &lt;strong&gt;you have to understand the factors that contribute to the problem you’re solving.&lt;/strong&gt; Without understanding your product’s strategy, how it will evolve, and the roadmap ahead, you will start accumulating technical debt at light speed. The system design and code structure will be flawed and inflexible.&lt;/p&gt;
&lt;p&gt;If you don’t know the engineering strategy of your company, you’ll have unnecessary debates and create future problems such as knowledge gaps, ineffective onboarding, and not leveraging engineering tools available to you. I’ve seen &lt;strong&gt;many engineers get lost in creating the best architectural design because they focused on their engineering solution instead of the user’s or product’s problem.&lt;/strong&gt; (I also made these mistakes, and that’s why I’m sharing these learnings with you.) When you focus on the problem and dive deep to understand the real issue before writing a single line of code, you get to meet with your stakeholders, collaborate with your teammates, and create a better solution that &lt;em&gt;actually&lt;/em&gt; solves the problem.&lt;/p&gt;
&lt;p&gt;That’s why you have to increase your product expertise and keep your users in mind. This way, &lt;strong&gt;you will deliver customer value quickly to get the fastest feedback. You will step up within your peers and start leading.&lt;/strong&gt; If you leave product thinking to product managers, your chances of showing your excellent engineering skills will be low, and you will hit the ceiling whenever you want to get to the next level.&lt;/p&gt;
&lt;p&gt;Simply put, instead of expecting someone (e.g., product managers) to tell you which product features to develop, you should be able to tell what are the most critical problems your users or product are facing and find the best solutions that fit into your product and engineering strategy.&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;/how-to-approach-software-architecture-design/&quot;&gt;Maybe you need to learn how to approach software architecture design.&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-32/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-32/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Learning Cone and Blame Spiral—The Case of Blame Absorbers</title><link>https://candost.blog/learning-cone-and-blame-spiral-the-case-of-blame-absorbers/</link><guid isPermaLink="true">https://candost.blog/learning-cone-and-blame-spiral-the-case-of-blame-absorbers/</guid><description>Some people learn the best when they take responsibility. When blame absorbers are not mindful or misguided, this behavior goes out of its way.</description><pubDate>Thu, 19 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;People’s learning paths differ from person to person. Some throw themselves into challenges and learn by doing it; some research the fundamentals before applying knowledge. A subgroup within this range learns the best when they take responsibility regardless of their learning method. Whenever they get a task or topic in their hand, they take it seriously and try their best till the end. Other folks around these people appreciate their responsible behavior.&lt;/p&gt;
&lt;p&gt;When this group of people is not mindful or misguided, this behavior goes out of its way. Their specialty turns into absorbing all the responsibility around them while leaving none for others. The situation results in self-blaming in case of failures. While they are on the learning path, they abandon this path and enter the blame spiral—another path full of self-blame.&lt;/p&gt;
&lt;p&gt;In this article, I will talk about this journey and a few ways to prevent the learning cone from switching to a blame spiral.&lt;/p&gt;
&lt;h2&gt;Learning Cone&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/learning-cone/Learning-Cone.jpg&quot; alt=&quot;Learning Cone&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Learning starts when we move out of our comfort zone and discover new things. Regardless of the topic, we begin with close-to-none knowledge and look for ways to enhance our wisdom. In engineering teams, people are often more open-minded in the beginning because they are clueless about the topic and have various options to improve. Being open-minded helps these people look at others and approach them with curiosity.&lt;/p&gt;
&lt;p&gt;After some time, they start applying new knowledge in their work and making mistakes once they gain confidence. If the manager encourages them to learn more and discover more paths instead of judging for mistakes, the learning exponentially increases. The more encouragement and appreciation they get, the more responsibility they begin to take. Making many mistakes on the way helps them to learn even more and gain enough experience. This responsibility, experience, and expanding knowledge create new opportunities and a steep growth trajectory.&lt;/p&gt;
&lt;p&gt;Although navigating this trajectory becomes difficult after a while because of the endless learning possibilities, good engineers get guidance and help from others and set their trajectory right.&lt;/p&gt;
&lt;p&gt;But not everyone advances in that direction. Some people tend to leave the growth trajectory and, without the right support, easily absorb all the responsibility and blame. They tumble themselves into the blame spiral.&lt;/p&gt;
&lt;h2&gt;Becoming a Blame Absorber — What is a blame absorber?&lt;/h2&gt;
&lt;p&gt;In a blame spiral, blame absorbers begin to lose learning opportunities. The beneficial responsibility turns into a detrimental self-blame. Suddenly, they leave out the infinite learning cone and find themselves in the blame spiral. Although they were making mistakes all the way long, how they approached these mistakes shapes what they gained from them.&lt;/p&gt;
&lt;p&gt;They start taking on more tasks and, with that, more responsibilities. As they feel responsible for mistakes, they try to cover them by taking even more responsibility. The spiral of responsibility turns into guilt, which pushes them more and more. After a while, they become frustrated and start to think that only they take responsibility; other people don’t care about anything as much as they do. They are the one who takes the job seriously to work extra hours and solve as many issues as possible. They keep blaming themselves, starting to resent others, and becoming frustrated with all the burdens they have.&lt;/p&gt;
&lt;p&gt;Blame absorbers, as Sheila Heen calls them, are the people who take all responsibilities to themselves in a problem or a mistake while leaving none for others. They blame themselves for the failure and discard the other factors in the situation. A few common phrases blame absorbers use are&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I should have known that it would fail.&lt;/li&gt;
&lt;li&gt;I could have seen this might happen.&lt;/li&gt;
&lt;li&gt;I would have tried fixing the bug on time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We see blame absorbers both in work and personal relationships. Imagine a couple getting separated. A blame absorber, in this situation, would say, “If I wasn’t behaving like that, my partner wouldn’t leave me. It’s all on me; my partner was perfect, and I screwed up.” What the person misjudges here is that both have a role in the breakup because a healthy relationship requires a minimum of two people to keep it healthy, and a failed relationship requires two people to fail. Even if one side makes a mistake, the problem can’t be solely loaded onto them. There are always underlying problems that both sides couldn’t recognize at the time of the breakup.&lt;/p&gt;
&lt;p&gt;At work, blame absorbers play a different role. Let’s use a delayed project as an example. One of the engineers who took on many responsibilities feels responsible for the delay. When the responsibility feeling turns into self-blame, the blame absorbers load mistakes of various factors on themselves. “I should have foreseen the increasing risks,” they say. “Why haven’t I tried to mitigate the problem when it was minor?” they ask. And in all that, they often say, “I could have worked more or harder”—and sometimes they do work harder. This past-wishful thinking increases their stress level, and they get into a blame spiral where even a tiny mistake becomes detrimental.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/learning-cone/Switching-From-Learning-Cone-to-Blame-Spiral.jpg&quot; alt=&quot;Learning Cone and Replacing Blame Spiral&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At the beginning of that spiral, their behaviors look good from the outside, and they get positive feedback for their responsible and accountable behavior. The feedback becomes a positive reinforcer for the blame spiral to grow.&lt;/p&gt;
&lt;p&gt;However, as their blame spiral grows and stays unmanaged, they start to impact others. The blame absorber’s spiral touches other people’s learning cones and blocks them.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/learning-cone/Impacting-Others-with-Blame-Spiral.jpg&quot; alt=&quot;Blame Spiral&apos;s Impact on Others&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Others begin avoiding accountability because someone takes care of the problems every time, so they don’t have to. In the end, a single point of failure emerges, and the team becomes dysfunctional.&lt;/p&gt;
&lt;p&gt;As a result, blame absorber increases their chance of getting frustrated and hinders learning opportunities. What was once a learning cone is now a blame spiral that impacts everyone around it. That thin line marks the switch to unlearning mode.&lt;/p&gt;
&lt;p&gt;The only good side of the blame spiral is nobody gets stuck in it forever. People constantly switch between the learning cone and the spiral.&lt;/p&gt;
&lt;h2&gt;Moving Between Learning Cone and Blame Spiral&lt;/h2&gt;
&lt;p&gt;Moving from the learning cone into the blame spiral looks like an instant action. Yet, it’s not a one-way road. In some cases, the blame absorber gets into the spiral for a moment and comes back. If the person knows themselves and is aware of their actions, they can pull themselves back to the learning cone. Yet, the outside factors affect how frequently the blame absorber abandons the learning cone. If the manager often imputes the failures to their lack of competency or knowledge, it becomes easy for the blame absorber to get into the blame spiral.&lt;/p&gt;
&lt;p&gt;From the blame absorber’s perspective, once they cross the line, the blame spiral looks like a one-way road. However, like in every journey in our lives, it’s a two-way street; there is always a road back. And the best side is that whenever they turn back, their learning cone grows a bit.&lt;/p&gt;
&lt;p&gt;The best action for a blame absorber who often gets into a blame spiral is to be aware of the behavior. Once they name the situation with “&lt;em&gt;Ah, I’m going into a blame spiral again,&lt;/em&gt;” they automatically pull themselves back to the learning cone. Awareness and mindfulness are keys to staying in the learning cone.&lt;/p&gt;
&lt;p&gt;However, developing mindfulness is a difficult journey; that’s why I like Marshall B. Rosenberg’s approach to taking responsibility for our feelings, not for every task.&lt;/p&gt;
&lt;h3&gt;Taking Responsibility for Our Feelings&lt;/h3&gt;
&lt;p&gt;In &lt;a href=&quot;https://www.nonviolentcommunication.com/product/nvc/&quot;&gt;Non-Violent Communication&lt;/a&gt;, Marshall B. Rosenberg states that what others do may be the stimulus of our feelings but not the cause. Other factors in any failure might boost certain feelings, but they are rarely the main reason for how we feel. Rosenberg explains how we choose one of the four options when receiving a negative message:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We can blame ourselves. (a.k.a. blame absorbing)&lt;/li&gt;
&lt;li&gt;We can blame others.&lt;/li&gt;
&lt;li&gt;We can sense our own feelings and needs.&lt;/li&gt;
&lt;li&gt;We can sense others’ feelings and needs.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first option is where the blame absorber redirects the negativity to themselves. When their manager says, “&lt;em&gt;You are unorganized!&lt;/em&gt;” it will reflect as “&lt;em&gt;I should have been more organized.&lt;/em&gt;” They embrace the judgment of other people and reflect on themselves.&lt;/p&gt;
&lt;p&gt;In reality, judgments of others are alienated expressions of our own unmet needs. The more we are able to connect our feelings to our own needs, the easier it is for others to respond compassionately. When we embrace our own feelings and needs and express them, we distinguish between giving from the heart and being motivated by guilt. In other words, everybody needs certain things, and when they are not met, they feel &lt;em&gt;something&lt;/em&gt;. If we express our needs, we have a better chance of getting them met. If we don’t value our needs, others may not either.&lt;/p&gt;
&lt;p&gt;The framework Rosenberg uses is connecting the feeling with the need by using a sentence: “&lt;em&gt;I feel ... because I need ...&lt;/em&gt;” When the manager says, “&lt;em&gt;You’re unorganized!&lt;/em&gt;” the reflection changes and becomes powerful “&lt;em&gt;I feel overwhelmed because I need to have some space and time to process all the incoming work and organize them.&lt;/em&gt;” Now the self-blame can turn into an action item and fulfill the need for a blame absorber without getting them into the blame spiral.&lt;/p&gt;
&lt;h2&gt;How do you stop blaming yourself?&lt;/h2&gt;
&lt;p&gt;If you’re a blame absorber, it’s easy to blame yourself for many things. Once you get into the blame spiral, it’s difficult to jump back to healthy responsibility. The first thing is to look at the bigger picture. It’s not always easy to do it by yourself. You might get help from a trusted person (or your manager at work) who can show you how the various factors work together.&lt;/p&gt;
&lt;p&gt;If you want to do it yourself, create a map of the situation. Answer a few questions: Who are the people in the situation? What are the processes? The goal is not to find something else to blame; it’s to look for how everything plays together. For example, the project got delayed, and you’re blaming yourself for it. Look for who else is working on the project and your stakeholders, and define their knowledge and experience on the project and work. Stay impartial and only state the facts you know.&lt;/p&gt;
&lt;p&gt;Once you put each element on a map, the next step is figuring out how these elements play together. The task distribution might not be right; someone else might have been assigned a task they can’t handle, and you might have helped them figure out how. It can, in turn, delay your task. Maybe, you had to wait for a week to get a confirmation on a task you delivered. Look for connections like these. Still, you’re not looking for anything to blame. Don’t judge or evaluate; only define the situation.&lt;/p&gt;
&lt;p&gt;Now you know the people and processes, it’s time to find out the external factors, such as how the company operates, how the business is going, and how much workload everyone has. Maybe priorities shifted along the way, and your stakeholders prioritized another project while delaying yours. Look for how external factors contribute to the problem.&lt;/p&gt;
&lt;p&gt;Once you have everything, you will see some of your feelings change. The holistic view turns negative blaming into an understanding of the big picture. When you see all the factors together, your part in the problem becomes less significant.&lt;/p&gt;
&lt;p&gt;Now, it’s time to use Rosenberg’s formula to express your feelings and needs (“&lt;em&gt;I feel ... because I need ....&lt;/em&gt;”) that I mentioned above. It will help you to figure out your unmet needs.&lt;/p&gt;
&lt;p&gt;When you bring all factors together, look at the learning opportunities lying in front of you. If you keep blaming yourself and reducing all elements to a single point (you), you miss the opportunities for further growth. When there is a problem, there is rarely a one-and-only-one cause. There are always multiple factors that contribute to the problem. (It always takes two people to have a conflict. A poorly managed workload leads teams to delay projects.) Figure them out early on to avoid getting into a blame spiral.&lt;/p&gt;
&lt;p&gt;If you’re not a blame absorber but working with blame absorbers, how can you guide them?&lt;/p&gt;
&lt;h2&gt;How to Guide and Lead Blame Absorbers&lt;/h2&gt;
&lt;p&gt;The path is very similar to how blame absorber stops blaming themselves. While explaining, don’t load all responsibility into anyone or the system. Let the blame absorber understand how all the factors play a role by showing all factors together. Then help them understand their part and enable them to take full responsibility for that part, not for the others. If you let this slip, it builds resentment over time. The absorber starts to think they’re always to blame, and others don’t take responsibility at all. If you’re building an ownership culture, be careful and show people the bigger picture and how you, they, and others are responsible together.&lt;/p&gt;
&lt;p&gt;Blame absorbers are everywhere. It’s not a personality; it’s a behavior that everyone develops from time to time. For some people, it happens often; for some, it’s rare. However, there is usually a person who blames themselves for things happening around them. Look around yourself; I’m sure you will find someone who behaves like that. If nobody came to your mind, let me make it easier: I’m one of them. I often blame myself for the failures around me.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. If you’re looking for a systematic way to give feedback to blame absorbers, you can read &lt;a href=&quot;/systematic-approach-to-give-feedback-to-blame-absorbers/&quot;&gt;this post&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/learning-cone-and-blame-spiral-the-case-of-blame-absorbers/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/learning-cone-and-blame-spiral-the-case-of-blame-absorbers/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #31: Non-Engineers Leading Engineering Teams</title><link>https://candost.blog/newsletter/mektup-31/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-31/</guid><pubDate>Tue, 17 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;We started reading Team Topologies in a book club at work. I&apos;m still in the first 100 pages of the book, but one chapter changed my perspective, and I want to share that with you.&lt;/p&gt;
&lt;p&gt;Before, I thought that not all engineering managers (or team leaders) needed to be great engineers. To be more specific, I thought about leadership as a separate profession. When we think about how these people managers work, they have no time to write code; they focus on people, roadmap, and organizational work. On top of that, not all positions require technical knowledge. Of course, there are companies where these leaders code, but there is an implicit agreement that leaders can&apos;t lead the team and simultaneously code in a project.&lt;/p&gt;
&lt;p&gt;So, in my perspective, &lt;strong&gt;I believed that even non-engineers could successfully lead the team(s) because no coding is involved. And I have seen it work.&lt;/strong&gt; The validation enforced my controversial thoughts, and I sought to become a leader of a team whose area of expertise is different than my engineering background—I have an iOS engineering background, and I&apos;m leading a backend-heavy, non-mobile team. Now, I think a bit differently.&lt;/p&gt;
&lt;p&gt;Well, what changed my mind? Why do I think leaders should have good technical knowledge of the topic their team is working on?&lt;/p&gt;
&lt;p&gt;In Team Topologies, the authors talk about &lt;strong&gt;team-first design&lt;/strong&gt;. When we think about Conway&apos;s Law (&lt;em&gt;&quot;Any organization that designs a system will produce a design whose structure is a copy of the organization&apos;s communication structure.&quot;&lt;/em&gt;), we design systems starting from the team structure. &lt;strong&gt;Instead of beginning with the software architecture design, team-first design applies Conway&apos;s law first.&lt;/strong&gt; For example, if we want to create a mobile application, the system design will look different when we embed a backend engineer in the team rather than separating teams into the backend and mobile engineers. When the team is cross-functional (has an embedded backend engineer), the system will be designed in a way that maximizes the communication between mobile and backend systems (and engineers). The backend application and mobile client will be coupled. When no backend engineers are embedded in the team, mobile and backend applications will be much more independent. You might be thinking, &quot;Why not let the engineers design the system that fulfills the business need and solves the problems instead of creating premature structures?&quot;&lt;/p&gt;
&lt;p&gt;It&apos;s where the problems begin. When there are separate backend and mobile teams, the system will continuously evolve to support this structure. Even if the engineers design a coupled system, Conway&apos;s law states that teams will continue separating their work on the way. Creating an initial software architecture design that demands close communication will fail in the long run. The same applies the other way around; if we have a cross-functional team, the systems will evolve to support this structure, even if it&apos;s built decoupled.&lt;/p&gt;
&lt;p&gt;When we think about this picture, a non-technical leader probably cannot foresee it. Although they may know by experiencing these problems, &lt;strong&gt;it&apos;s essential to understand the system&apos;s technical fundamentals when designing teams.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As leaders have long-term visions, they have to know the technical side well enough to anticipate these problems before they appear.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;There is still one scenario non-technical leaders can still be successful: they lead with great sidekicks.&lt;/strong&gt; If a non-technical leader has a person or two next to them with whom they partner up, then it may work. If you watched Ted Lasso, Ted is an American football coach who goes to the United Kingdom to coach a football (soccer) team. Ted has no experience leading a football team. However, he creates a solid group that knows football by heart. Then he uses this group to support him in leading the team to success.&lt;/p&gt;
&lt;p&gt;Okay, my friend, you might think about what this situation means to you. If you have a non-technical leader (first, be nice to them), try to be the one who supports them; be their partner. That way, you&apos;ll be involved in various leading activities and gain experience before becoming a leader. And in case you have an opportunity to lead a team where you have no deep expertise, find a partner or create a group that can help you on the technical side. Work very closely with them to become successful together.&lt;/p&gt;
&lt;p&gt;Until next time, take care!&lt;/p&gt;
&lt;p&gt;Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt;&lt;/em&gt; &lt;em&gt;&lt;a href=&quot;https://candost.substack.com/p/24-understanding-distributed-systems&quot;&gt;Understand how distributed systems work if you&apos;re working with one&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-31/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-31/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Structuring Teams in Organizations</title><link>https://candost.blog/notes/56/</link><guid isPermaLink="true">https://candost.blog/notes/56/</guid><pubDate>Sat, 14 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been in various reorgs. Sometimes, it made sense to do a re-organization to align the organization with the evolving business better. However, one of the realizations for me is that org charts are difficult to get. They serve to identify who reports to whom but other than that, they are inefficient. When companies focus on org-charts instead of work streams and communication lines, they face major problems because they fail to identify teams&apos; accountability. Organization charts don&apos;t reflect teams&apos; accountability. People learn team responsibilities in time. Having reorgs prevents people from getting to know each other; thus, making the organization inefficient for a while. Especially, if the reorgs are frequent and depend on the org chart, then catastrophe awaits. People won&apos;t have time to learn the new organization before getting another reorg.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Conway&apos;s Law Still Holds True After Decades</title><link>https://candost.blog/notes/56a/</link><guid isPermaLink="true">https://candost.blog/notes/56a/</guid><pubDate>Sat, 14 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I used to think designing systems and architectures started within the team. Engineers in the team usually don&apos;t have a holistic picture of the organization, and they design systems with their best intentions and using their understanding of constraints. After reading &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies&lt;/a&gt;, I learned—or let&apos;s say, enlightened—that designing systems starts from designing teams; as Conway&apos;s Law states, &quot;Organizations are destined to create software constrained by how teams communicate with each other.&quot; Before reading it, I thought that software engineering leaders didn&apos;t have to be technical because leadership is not a technical job. However, the same leaders create organizational structures and, therefore, decide how the architecture of systems will be shaped. Now I think they have to have a technical background to understand how their decision will reflect on the system design. Or they have a technical person on the table while designing the organization.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10/&quot;&gt;10: Individual Contributor or Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;12: Engineer Autonomy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;31: Accountability and Learning Culture in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Limiting the communication lines to create better system design</title><link>https://candost.blog/notes/56b/</link><guid isPermaLink="true">https://candost.blog/notes/56b/</guid><pubDate>Sat, 14 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There is an understanding that the more communication between teams and people, the better the work. Within the teams, this holds. However, leaders must be mindful of the communication overhead and its impact. When we unnecessarily create communication lines between teams, we are prone to develop systems that support these communication lines (a.k.a. &lt;a href=&quot;/notes/56a/&quot;&gt;Conway&apos;s Law&lt;/a&gt;). When we limit the communication between teams, we force the teams to create specific API boundaries and documentation to remove the need for communication. When the communication line is open, people will use it instead of relying on APIs and documentation. The team that offers API will also use these communication lines instead of working on a better API design or documentation.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/49/&quot;&gt;49: Accidental Complexity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/team-topologies-book-review-summary-and-notes/&quot;&gt;Team Topologies by Matthew Skelton and Manuel Pais&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/56b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/56b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Database Partitioning (Sharding)</title><link>https://candost.blog/notes/55/</link><guid isPermaLink="true">https://candost.blog/notes/55/</guid><pubDate>Sun, 08 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Database partitioning is used to divide data into different partitions to access it faster and eliminate a single point of failure.
&lt;a href=&quot;https://en.wikipedia.org/wiki/Partition_(database)&quot;&gt;Partitioning&lt;/a&gt; is usually used for performance, availability, manageability, or load balancing (scalability).&lt;/p&gt;
&lt;p&gt;There are different methods for partitioning a database.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/51/&quot;&gt;51: Consistency Models in Distributed Systems Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Understanding How Database Transactions Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;How to Partition a Database&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/55/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/55/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Vertical Partitioning</title><link>https://candost.blog/notes/55a/</link><guid isPermaLink="true">https://candost.blog/notes/55a/</guid><pubDate>Sun, 08 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Vertical Partitioning is splitting database tables into multiple tables and storing data in fewer columns in each table. Normalization is also one part of vertical partitioning. However, vertical partitioning is much more than normalization. Vertical partitioning is often used when there is a need to split the static and dynamic data. Vertical partitioning is, for example, in a user database, keeping the user’s fundamental—and rarely changing—data in one database and splitting the user’s action into a different database. However, it’s possible to keep both data in the same table and use different rows for storing them; splitting increases the performance of accessing static data. Of course, when we want to reach both static and dynamic data, it will be slower. However, accessing static data is much faster.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/60/&quot;&gt;60: Database Normalization&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/55a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/55a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Horizontal Partitioning (Range-Based Partitioning)</title><link>https://candost.blog/notes/55b/</link><guid isPermaLink="true">https://candost.blog/notes/55b/</guid><pubDate>Sun, 08 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In this mechanism, we use range-based partitioning. We split the data to multiple databases by range while keeping the database scheme constant (i.e., using the same columns in every database table). For example, if we have a dictionary database, we can divide one extensive database into multiple ones by their first letter. So, words starting with A get into one database, and B gets into another. Our range key is the word’s first letter. The partitions can have different volumes of data. For example, the number of words starting with E is much higher than those starting with X. To balance these conditions, we either merge multiple letters into one database or split E into multiple databases by using the second letter as a secondary index. The advantage of using a range is querying more entries in ranges is much easier. The disadvantage is accessing words in the E database will be much more frequent, and it can have a high load while other databases stand idly. To solve this problem, we can use something else other than the first letter of the word as a key. Deciding which keys to use is the difficult part of this partitioning. Either the database administrator can choose partition boundaries manually, or the database can choose them automatically.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/database-partitioning/&quot;&gt;How to Partition a Database&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/55b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/55b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Directory-Based Partitioning</title><link>https://candost.blog/notes/55c/</link><guid isPermaLink="true">https://candost.blog/notes/55c/</guid><pubDate>Sun, 08 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We put a lookup service in front of the database partitions. The lookup service knows the current partitioning scheme and can tell us which shard to read or update the data. Clients first communicate with the lookup service to learn which partition they must go to, then query/update the data. Using directory-based partitioning, we can add additional database servers or change the partitioning schema without impacting the application. The disadvantage of this method is that the lookup table is a single point of failure.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/55c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/55c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #30: The Exceptional Books, Articles, Videos, and Communities That Made Me a Better Engineering Leader</title><link>https://candost.blog/newsletter/mektup-30/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-30/</guid><pubDate>Tue, 03 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;I rarely share links in this newsletter because these letters are not for link curation; I aim to plant ideas, and the rest is for you to learn because everybody’s learning method varies. However, it doesn’t mean that I won’t share any resources. &lt;strong&gt;Today, I will share what changed my perspective, helped me grow into engineering management, and still helped me grow as a software engineering leader.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On another note, this is one of the ways for me to appreciate folks who produced these resources. Creating something is extremely difficult; creating something that helps people in their lives is unique. I hope at least one of these resources will benefit you as well.&lt;/p&gt;
&lt;p&gt;The list seems long, but bear in mind that studying them took me years. Also, I only recommend the best resources that I’ve devoured and helped me.&lt;/p&gt;
&lt;p&gt;On this journey, I recognized that when you grow as a person, you—naturally—grow as an engineer. How you consume the information and interpret it defines your wisdom. For leaders’ growth, not everything should be related to software engineering.&lt;/p&gt;
&lt;p&gt;Let’s start with my boosts in life—the fundamentals.&lt;/p&gt;
&lt;h3&gt;Learning How to Learn&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;https://www.coursera.org/learn/learning-how-to-learn&quot;&gt;Course Link&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While I was studying &lt;strong&gt;&lt;a href=&quot;https://www.coursera.org/specializations/deep-learning&quot;&gt;Deep Learning Specialization on Coursera&lt;/a&gt;&lt;/strong&gt;, I realized that my learning method was not that great. I often forgot things and had to study from scratch. &lt;strong&gt;This course taught me the fundamentals of learning methods.&lt;/strong&gt; Although I still don’t follow the exact same method all the time, I changed my learning strategy to a more effective one.&lt;/p&gt;
&lt;h3&gt;How to Read a Book&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;https://en.wikipedia.org/wiki/How_to_Read_a_Book&quot;&gt;Book Link&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Many people learn how to read in school. I learned it from my uncle—who was a teacher—before school. But nobody taught me how to read a book. Teachers and the education system force us to read books, and every single time, they want us to read cover to cover. &lt;strong&gt;When I realized that not every book is worth spending extensive energy on, I looked for what I could do to get the most out of a book if it doesn’t worth reading its 800 pages.&lt;/strong&gt; And I found How to Read a Book by Mortimer Adler. A book about reading a book. How meta. And how amazing it is. (I hopefully will share my notes from the book later) The book is not an easy read (it was first published in 1940!, and updated in 1972), and in case you want to grasp the main idea, &lt;strong&gt;&lt;a href=&quot;https://fs.blog/how-to-read-a-book/&quot;&gt;FS.Blog’s guide&lt;/a&gt;&lt;/strong&gt; is great.&lt;/p&gt;
&lt;h3&gt;How to Speak&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;https://www.youtube.com/watch?v=Unzc731iCUY&quot;&gt;Video Link&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I &lt;strong&gt;&lt;a href=&quot;/speaking-writing-and-high-quality-ideas/&quot;&gt;wrote about speaking, writing, and ideas&lt;/a&gt;&lt;/strong&gt;, I was studying to improve my speaking skills. As a leader—and a podcast host—speaking is a fundamental skill that I want to enhance. In this MIT lecture on speaking, Patrick Winston said, &lt;strong&gt;“Your success in life will be determined largely by your ability to speak, your ability to write, and the quality of your ideas. In that order.”&lt;/strong&gt; 💯 I won’t say more. Watch the 1-hour long lecture.&lt;/p&gt;
&lt;h3&gt;Non-Violent Communication by Dr. Rosenberg&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;https://www.nonviolentcommunication.com/product/nvc/&quot;&gt;Book Link&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As a leader (people manager or staff+ engineer), empathy is one of the central skills. It’s the force within you. Unlike the Star Wars universe, it’s a skill you can learn. If you want to lead people, you have to understand their needs. You have to ask the right questions to persuade them. &lt;strong&gt;This book teaches to see a person thoroughly.&lt;/strong&gt; Even Microsoft CEO Satya Nadella gifted this book to every member of his senior leadership team when he became the CEO. Well, I agree with Satya that every leader has to read this book.&lt;/p&gt;
&lt;h3&gt;FS.Blog Membership&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;https://fs.blog/membership/&quot;&gt;Website Link&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I discovered The Knowledge Project Podcast’s interviews with outlandish guests, I was hooked. I dove into the whole archive (over 100+ episodes) and took many notes, and pondered on many quotes. Then I took a look at their website. I found a fantastic community and even more high-quality resources. &lt;strong&gt;Their content helps me make better decisions and improve my life and personality.&lt;/strong&gt; You don’t need to become a member; their free &lt;strong&gt;&lt;a href=&quot;https://fs.blog/newsletter/&quot;&gt;newsletter&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&quot;https://fs.blog/knowledge-project-podcast/&quot;&gt;podcast&lt;/a&gt;&lt;/strong&gt; are already gems.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Now onto some engineering-specific resources.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;The Engineer/Manager Pendulum&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;https://charity.wtf/2017/05/11/the-engineer-manager-pendulum/&quot;&gt;Article Link&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This article changed my perspective on management AND engineering. Before I decided to become a manager, I ALWAYS believed that if I switched to management, I could not return to engineering. That’s why the decision was tough for me because I enjoy both sides. Now, I know that I want to stay in the pendulum. &lt;strong&gt;A few years of people management and a few years of engineering will—probably—be the way I will work.&lt;/strong&gt; At last, that’s what I think now.&lt;/p&gt;
&lt;h3&gt;Rands Leadership Slack&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;https://randsinrepose.com/welcome-to-rands-leadership-slack/&quot;&gt;Website Link&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Over 20000 people get together in hundreds of channels and help each other out. This leadership Slack—which is focused on engineering leadership—is a fantastic resource for me to &lt;strong&gt;learn from others.&lt;/strong&gt; I also ask my questions, get help, and help others. It’s free, and the community is impressive. I love their safe environment and excellent level of moderation.&lt;/p&gt;
&lt;h3&gt;Gergely Orosz’s Blog&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;https://blog.pragmaticengineer.com/&quot;&gt;Blog Link&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I’ve read many articles Gergely wrote on his blog, and I’m also a subscriber to his newsletter. &lt;strong&gt;His writing gives great insights into the industry and leadership.&lt;/strong&gt; Especially these ones were beneficial to me: &lt;strong&gt;&lt;a href=&quot;https://blog.pragmaticengineer.com/scaling-engineering-teams-via-writing-things-down-rfcs/&quot;&gt;1&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href=&quot;https://blog.pragmaticengineer.com/a-team-where-everyone-is-a-leader/&quot;&gt;2&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href=&quot;https://blog.pragmaticengineer.com/how-to-lead-a-project-in-software-development/&quot;&gt;3&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href=&quot;https://blog.pragmaticengineer.com/the-product-minded-engineer/&quot;&gt;4&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href=&quot;https://blog.pragmaticengineer.com/on-writing-well/&quot;&gt;5&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href=&quot;https://blog.pragmaticengineer.com/performance-reviews-for-software-engineers/&quot;&gt;6&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href=&quot;https://blog.pragmaticengineer.com/performance-self-review-for-software-engineers-with-an-example/&quot;&gt;7&lt;/a&gt;.&lt;/strong&gt; Also, &lt;strong&gt;&lt;a href=&quot;https://www.mobileatscale.com/&quot;&gt;his book&lt;/a&gt;&lt;/strong&gt; was a great read.&lt;/p&gt;
&lt;h3&gt;Fundamentals of Software Architecture Book&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;​&lt;a href=&quot;https://www.oreilly.com/library/view/fundamentals-of-software/9781492043447/&quot;&gt;Book Link&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I started reading this book with a book club at work. Although I couldn’t join every session in the book club, this book made its place in my library, and I often reopened and (re)read some chapters frequently. It also helped me record the two most popular episodes (&lt;strong&gt;&lt;a href=&quot;https://candost.substack.com/p/19-software-architect-role-and-archicture&quot;&gt;1&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href=&quot;https://candost.substack.com/p/20-software-architecture-design-systems-903&quot;&gt;2&lt;/a&gt;&lt;/strong&gt;) in my podcast. &lt;strong&gt;It’s an excellent must-have book that supports me in understanding how to approach architecture and the differences between various software architecture styles.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That’s all for resources. But I think there are a few more things worth mentioning, things that made me a better engineer and leader: reading documentation when I have problems, taking long walks during the day to think about certain things, meditation, and countless other books (to name a few more: Deep Work, Atomic Habits, Designing Data-Intensive Applications, Radical Candor, Thanks for the Feedback, Writing to Learn) and blog articles I’ve read.&lt;/p&gt;
&lt;p&gt;Last but not least, whatever I wrote, talked about, and the people whom I had a conversation with made me better at my job and in my life. &lt;strong&gt;I appreciate every single guest on my podcast and every person I had a conversation with&lt;/strong&gt;, and I’m grateful that they made me a better person, engineer, and leader.&lt;/p&gt;
&lt;p&gt;What&apos;s the best resource you have ever read/watched/listened to? Let me know your suggestions.&lt;/p&gt;
&lt;p&gt;— Candost​&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S. &lt;a href=&quot;https://twitter.com/wes_kao/status/1505559811785646086&quot;&gt;Managing up is difficult, but it sets you apart from the crowd in your growth.&lt;/a&gt;​&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;A Quote I&apos;m Pondering&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;*&quot;Childhood is when you keep gaining, old age is when you keep losing.&quot;*​ — Ursula K. Le Guin&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-30/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-30/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Think Again Book Review, Summary, and Notes</title><link>https://candost.blog/books/think-again-by-adam-grant-book-summary-review-and-notes/</link><guid isPermaLink="true">https://candost.blog/books/think-again-by-adam-grant-book-summary-review-and-notes/</guid><description>Think Again is the book by The New York Times Bestselling Author Adam Grant. I&apos;ve read it with a book club and written my summary, notes, and review.</description><pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How Strongly I Recommend It:&lt;/strong&gt; &lt;strong&gt;7&lt;/strong&gt;/10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How Likely I Will Gift It:&lt;/strong&gt; 5/10&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What is Think Again Book by Adam Grant about?&lt;/h2&gt;
&lt;p&gt;The book is about recognizing how much time we spend thinking and forming our thoughts and how less time we spend on not even going back and evaluating them, although we live in a rapidly changing world. Adam Grant conveys the importance of rethinking our easily-formed opinions and explains how to reconsider them and spread the same strategy to the people around us. Grant explains them in three steps: individual rethinking, interpersonal rethinking, and collective rethinking.&lt;/p&gt;
&lt;h2&gt;🚀 The Book in 3 Sentences&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;We often form our opinions easily but rarely reconsider them.&lt;/li&gt;
&lt;li&gt;We don&apos;t always need to think more and more about many topics; rethinking can solve many of our problems once we open our minds to change.&lt;/li&gt;
&lt;li&gt;Creating a learning environment and surrounding ourselves with open-minded people demands changing how we approach people around us.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;🎨 Impressions&lt;/h2&gt;
&lt;p&gt;The book is easy to read. It sparked moments when I closed the book and needed to think about what I had read. Although the reading was enjoyable, I deem the text long. I understand that the narrative is important, and it makes reading fun; I came to the point of skimming one or two stories instead of reading them fully. This is not necessarily a bad thing. Every book and each chapter demands a different reading style. With all that, I liked the idea the book brings: rethinking. Adam Grand didn&apos;t just say to rethink what you think but went on a journey and explained the psychology around rethinking. So, the book is more prosperous than I expected. It could&apos;ve been shorter, but it&apos;s not too long, either.&lt;/p&gt;
&lt;h3&gt;Who Should Read It?&lt;/h3&gt;
&lt;p&gt;People who want to create a learning environment, especially leaders.&lt;/p&gt;
&lt;h2&gt;☘️ How the Book Changed Me&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;How my life/behavior/thoughts/ideas have changed as a result of reading the book.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;After reading the first chapter, I began recognizing my behavior in different parts of my life (work, personal). At work, I realized I play all the four mindsets mentioned in the chapter (preacher, prosecutor, politician, scientist). However, I&apos;m more of a preacher and prosecutor than a politician at home.&lt;/li&gt;
&lt;li&gt;After reading, I feel like I can be a better leader if I apply a few things from the book to my work: using motivational interviewing when I debate ideas, coaching people better by asking more questions, etc.&lt;/li&gt;
&lt;li&gt;I also understood, once more, the importance of keeping debates on talking about how to do a certain thing instead of why we do it. As a leader, I have a stronger self-argument to think about the why more clearly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;✍️ My Top 3 Quotes from Think Again&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;If knowledge is power, knowing what we don&apos;t know is wisdom.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Who you are should be a question of what you value, not what you believe.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;We won&apos;t have much luck changing other people&apos;s minds if we refuse to change ours.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;📒 Think Again Chapter Summary + Notes&lt;/h2&gt;
&lt;h3&gt;A Preacher, a Prosecutor, a Politician, and a Scientist Walk into Your Mind&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;We see other people&apos;s behavior while seeing our intention. When someone misses the point or needs to rethink their approach, we swiftly recognize that. When it comes to our own ideas, we favor feeling right over being right. We often don&apos;t form second opinions while expecting them from others.&lt;/li&gt;
&lt;li&gt;Adapting to a changing environment is not something companies do. It is something people do. Many people become experts in their fields and stay there without changing their stance or knowledge stack. The comfort zone makes them vulnerable to change. However, the bests adapt to changing environments with their everyday decisions.&lt;/li&gt;
&lt;li&gt;Preacher-Prosecutor-Politician Mindsets:
&lt;ul&gt;
&lt;li&gt;Preacher: When our beliefs are in jeopardy, we begin preaching to protect and promote our ideas.&lt;/li&gt;
&lt;li&gt;Prosecutor: When we recognize other people&apos;s flaws in their arguments, we prosecute them and try to prove them wrong.&lt;/li&gt;
&lt;li&gt;Politician: When we seek to win the audience, we lobby and campaign our beliefs and ideas for approval.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Scientific Thinking:
&lt;ul&gt;
&lt;li&gt;Thinking as a scientist (experimentation, skepticism, and reconsidering the approach) forces us to reconsider our stand all the time. Although scientists don&apos;t always apply scientific thinking in their lives, the method works. When we think we&apos;re smart, we change our minds less (confirmation and desirability bias). Scientific thinking is not only reconsidering; it is also being skeptical, searching for what might be wrong when everything is normal.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;If knowledge is power, knowing what we don&apos;t know is wisdom.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Our convictions can lock us in prisons of our own making. The solution is not to decelerate our thinking—it&apos;s to accelerate our rethinking.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;The Armchair Quarterback and the Imposter: Finding the Sweet Spot for Confidence&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The most successful leaders have both humility and confidence. They believe in their strengths; they are also aware of their weaknesses. They can change their minds when they are proven wrong.&lt;/li&gt;
&lt;li&gt;Feeling like an imposter (imposter syndrome) has also its advantages:
&lt;ol&gt;
&lt;li&gt;Motivates us to work harder. (naturally)&lt;/li&gt;
&lt;li&gt;Motivates us to work smarter. If we don&apos;t believe we&apos;re going to win, we have nothing to lose to rethink our approach.&lt;/li&gt;
&lt;li&gt;It makes us better learners—the doubt of not knowing opens us to learning from others.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The Joy of Being Wrong: The Thrill of Not Believing Everything You Think&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Our previous knowledge and beliefs make us less open to new things. That&apos;s why we often hear &quot;That&apos;s not how we do things here.&quot; phrases. When we haven&apos;t formed any beliefs, we are more open to being wrong. We&apos;re open to change because we&apos;re learning. When we have expertise in one topic, it&apos;s difficult to walk away from our beliefs, even if they are foolish.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Who you are should be a question of what you value, not what you believe.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;When we define ourselves, it&apos;s crucial to think about what we are tying up our identity to. Materials and monetary stuff are not always a good idea. When a person explains themselves with things they own, they will have difficulties changing their identities. On top of that, when people define themselves with opinions rather than values, they also lose flexibility. As they will tie their identity to a certain idea (such as supporting one party&apos;s ideas in politics), they will defend these ideas more and more and become inflexible. Wherever we put our identity defines our adaptability to changes around us.&lt;/li&gt;
&lt;li&gt;We often don&apos;t change our beliefs or ideas quickly. We usually defend them, although we form them very quickly. When we form opinions, we don&apos;t even think about why we might be wrong. Even thinking once about a possible reason we might be wrong will improve our ideas, show us our weaknesses, and break our overconfidence.&lt;/li&gt;
&lt;li&gt;Thinking in the long term has a prolonged impact. When we focus on being right at the moment and sticking to our thoughts all the time, we increase the risk of being wrong in the long run. When we&apos;re flexible with our opinions, we feel comfortable changing them to being right in the long term.&lt;/li&gt;
&lt;li&gt;Admitting we were wrong is considered a weakness by many people. However, that&apos;s what makes us strong. When we admit we were wrong, we eliminate other people mocking or publicly shaming us. We become untouchable. Admitting our mistakes makes us powerful.&lt;/li&gt;
&lt;li&gt;When something is wrong, there is no need to blame whose fault it is or whose responsibility that mistake is. What matters is it&apos;s our responsibility to fix that. When that mistake is in our mind, there is no other person than us to correct or change that mistaken opinion.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The Good Fight Club: The Psychology of Constructive Criticism&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/relationship-vs-task-conflicts/&quot;&gt;Relationship conflicts are worse than task conflicts.&lt;/a&gt; When people have relationship conflicts, they focus on topics unrelated to work. Their criticism of each other is based on how they behave toward each other. In task conflicts, people focus on the work, and their goal is to find out the best way to do the work. Task conflicts are necessary. Without conflicts, there is no harmony; there is only apathy.&lt;/li&gt;
&lt;li&gt;When in task conflicts, we learn from the other side. We learn from people who challenge our thought processes. When we avoid arguments, it doesn&apos;t mean that we have good manners; it means we ignore the other side&apos;s views and don&apos;t value their perspectives.&lt;/li&gt;
&lt;li&gt;People like others who agree with their perspective more. However, when we say &quot;agree to disagree,&quot; we actually avoid these thoughts and put up walls around our ideas. If someone is challenging our thoughts, it means they value our opinion. We need to create cooperative groups that can disagree with each other while showing respect for each other.&lt;/li&gt;
&lt;li&gt;When people argue about &lt;strong&gt;why&lt;/strong&gt; they should do something in one way or another, they cannot bring out the best solutions, and the discussions end up in relationship conflicts. They should have &lt;strong&gt;one common why&lt;/strong&gt; and &lt;strong&gt;argue over how&lt;/strong&gt; to do it. When discussions happen over how to part, the conflicts tend to stay as task conflicts and be productive. That&apos;s why it&apos;s crucial to have leaders who clarify the why so that people can focus on the how part.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Dances with Foes: How to Win Debates and Influence People&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Debates are not wars that we have to fight constantly; they are more like a dance in that we have to move back and forth and create harmony. We have to listen carefully and find common arguments and agree with some of the other side&apos;s arguments. We need to step back and acknowledge their valid points instead of constantly supporting our argument with more reasons. We shouldn&apos;t go into either defense or offense mode; we have to see the debate as dance and use stronger and fewer reasons.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;We won&apos;t have much luck changing other people&apos;s minds if we refuse to change ours.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;We don&apos;t have to convince them that we&apos;re right. We just need them to open their minds to the possibility that they might be wrong. Their natural curiosity will do the rest.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;To change other people&apos;s minds, we have to present humility, acknowledge their valid points (so we are reasonable), and ask questions to open their minds. The best negotiators ask many questions—more than average negotiators.&lt;/li&gt;
&lt;li&gt;In any heated argument, we can stop and ask, &lt;em&gt;&quot;What evidence would change your mind?&quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;People are interested in hiring people who acknowledge their weaknesses rather than bragging about their strengths.&lt;/li&gt;
&lt;li&gt;When we ask questions, we invite people to join our dance. When we assume things and think on their behalf, we never get them on the dance.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Bad Blood on the Diamond: Diminishing Prejudice by Destabilizing Stereotypes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Convincing others to destroy their stereotypes demands &lt;em&gt;counterfactual thinking&lt;/em&gt;. Like asking questions in debates, we should ask questions and put the other side in situations where they understand how they formed these stereotypes. We should ask questions that will let them put themselves in someone else&apos;s shoes. When people realize how easy it is to develop stereotypes, they change their perspectives. We need to ask questions that nudge them to explore the origins of their thoughts and beliefs, and we need to provoke them to reconsider their stance.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Many of our beliefs are cultural truisms: widely shared, but rarely questioned.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;When people interact with others with whom they formed beliefs against them, they often destroy their beliefs.&lt;/li&gt;
&lt;li&gt;In general, the people who hold power should question their beliefs more because they will likely form stereotypes and prejudices that will not be questioned.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Vaccine Whisperers and Mild-Mannered Interrogators: How the Right Kind of Listening Motivates People to Change&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Motivational interviewing consists of&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asking open-ended questions&lt;/li&gt;
&lt;li&gt;Engaging in reflective listening&lt;/li&gt;
&lt;li&gt;Affirming the person&apos;s desire and ability to change&lt;/li&gt;
&lt;li&gt;Summarizing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Listening well is not only listening. It&apos;s asking questions, being curious, and responding to other people. If someone just seems like they listen to you, you feel that they are not interested in what you&apos;re saying. Listening well requires listening with interest.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The Righting Reflex&lt;/strong&gt;: the desire to fix problems and offer answers. An excellent motivational interviewer resists this reflex.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Empathetic and uncritical listeners make people less anxious and defensive. People feel less stress and encourage themselves to explore their thoughts more deeply, recognize more nuances, and openly share them.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Communicators try to make themselves look smart; great listeners try to make their audience feel smart.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Listening is giving the best gift: our attention&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Charged Conversations: Depolarizing Our Divided Discussions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;To overcome binary bias, exposing ourselves to various perspectives is necessary.&lt;/li&gt;
&lt;li&gt;Doubtful experts are more persuasive. When people hear unknowns and uncertainties from the experts they trust, they pay more attention to the argument.&lt;/li&gt;
&lt;li&gt;Changing the focus from why to how reduces polarization and enables people to have more constructive conversations.&lt;/li&gt;
&lt;li&gt;Seeing and appreciating complexities remind us that there is no best and most effective behavior, and all of them have consequences.&lt;/li&gt;
&lt;li&gt;Binary bias is not only in our behavior but also in our emotions. When we face an adversary, it becomes easy to be stuck in one feeling, and &lt;a href=&quot;/newsletter/mektup-27/&quot;&gt;it&apos;s difficult to rethink our position&lt;/a&gt; later on.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Rewriting the Textbook: Teaching Students to Question Knowledge&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Thinking like a fact-checker requires three guidelines:
&lt;ol&gt;
&lt;li&gt;Interrogate the information instead of just consuming it.&lt;/li&gt;
&lt;li&gt;Reject popularity as its reliability.&lt;/li&gt;
&lt;li&gt;Recognize that the sender of the information may be different than its source.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;People learn more when they look at their solutions and try different approaches. Rethinking helps to master their craft.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;That&apos;s not the Way we&apos;ve Always Done It: Building Cultures of Learning at Work&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Psychological safety and accountability play a critical role together in learning teams.&lt;/li&gt;
&lt;li&gt;Psychological safety is when people can express their concerns and suggestions while knowing they will be well received. These cultures foster trust, respect, and openness.&lt;/li&gt;
&lt;li&gt;In performance cultures, where we praise performance more, people rely on experts more and trust their word instead of thinking—and rethinking—their approach.&lt;/li&gt;
&lt;li&gt;To create psychological safety, leaders need to state their weaknesses out loud and make a public commitment to be open to feedback.&lt;/li&gt;
&lt;li&gt;Psychological safety requires humility: &quot;confident humility to state that we&apos;re working in progress.&quot;&lt;/li&gt;
&lt;li&gt;When we explain some process behind a decision to someone else, we tend to see vulnerabilities more clearly, and we think more critically.&lt;/li&gt;
&lt;li&gt;When best practices become the standard, they tend to get worst practices because people blindly follow them and stop improving them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Escaping Tunnel Vision: Reconsidering Our Best-Laid Career and Life Plans&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Asking kids about what they want to be when they grow up nudges them to place their identity in their work. They should actually think of the work as something they do rather than something they are. When they see it as something they do, they become more open to exploring their options and various responsibilities in their adult life.&lt;/li&gt;
&lt;li&gt;Have regular career check-ups. Have the same for relationships. Overall goal: Expand repertoire of possible selves.
&lt;ul&gt;
&lt;li&gt;For career: once or twice a year.
&lt;ol&gt;
&lt;li&gt;Find out people who inspire you. Observe what they do day-to-day.&lt;/li&gt;
&lt;li&gt;Form a hypothesis about how their style/processes might align with your interests, skills, ways, and values.&lt;/li&gt;
&lt;li&gt;Test out by running experiments. Do job interviewing, shadowing, and internships; the goal is to get a taste of work.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;For relationships: once in a while when facing difficulty.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/think-again-by-adam-grant-book-summary-review-and-notes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#28: How to Present Solutions as Software Engineers</title><link>https://candost.blog/podcast/28-how-to-present-solutions-as-software/</link><guid isPermaLink="true">https://candost.blog/podcast/28-how-to-present-solutions-as-software/</guid><pubDate>Tue, 26 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;28: How to Present Solutions as Software Engineers&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/28-how-to-present-solutions-as-software&quot;&gt;https://candost.substack.com/p/28-how-to-present-solutions-as-software&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/28-how-to-present-solutions-as-software/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/28-how-to-present-solutions-as-software/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #29: Building correct relationships will help you climb the Ladder</title><link>https://candost.blog/newsletter/mektup-29/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-29/</guid><pubDate>Tue, 19 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Over the last three years, I&apos;ve realized the importance of relationships. Today, I want to talk about how I failed, how this failure cost me an extra year to get a promotion, and what I&apos;ve learned.&lt;/p&gt;
&lt;p&gt;When I wanted to become an engineering manager, I thought I had enough skills to make the jump, and later I learned I partially had. Yet, I needed an extra year to make them visible to various people. Why has it happened?&lt;/p&gt;
&lt;p&gt;I had great relationships with my peers and my manager. I was acting like a leader in the team. At that time, we had one manager acting in both Product Manager (PM) and Engineering Manager (EM) roles. The organization started to separate these responsibilities into two people. While our manager was more focused on the PM role, there was a possibility of me becoming an EM. Many things happened along the way, and once I started pushing more, I failed because I didn&apos;t have relationships with people who could vouch for me. I had relationships with my manager, and I thought that should be enough because the team was elevating me to the EM position. &lt;strong&gt;It cost me a year to build missing relationships.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here is what I have learned.&lt;/p&gt;
&lt;h2&gt;Engineer’s Circle&lt;/h2&gt;
&lt;p&gt;When working in a team as an engineer, you have your peers, PM, and manager. Your circle is defined well, and you rarely go out of them. You may talk with project stakeholders and other engineers in the organization, but you rarely leave your circle. Your inner circle might know your career plan, what you want to learn, and which promotion you’re looking for. But that’s it.&lt;/p&gt;
&lt;h2&gt;Leader’s Circle&lt;/h2&gt;
&lt;p&gt;If you become a manager or staff engineer, your first and essential relationship will be with your team, stakeholders, and your manager. Then with your peers and your manager’s peers. &lt;strong&gt;And your success depends on all levels.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you don’t have good relationships with your team, your team won’t be successful.&lt;/p&gt;
&lt;p&gt;If you don’t have a solid relationship with your manager, your team will fail because you won’t find the support your team needs.&lt;/p&gt;
&lt;p&gt;If you don’t have good relationships with your peers, it will be difficult for your team to collaborate with other groups. &lt;strong&gt;Once you have valuable relationships, they will enable you to run cross-team initiatives and jump to the next level.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/Engineers-vs-leaders-relationship-circle.png&quot; alt=&quot;Engineer&apos;s vs. Leader&apos;s Relationship Circle&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Why do you need these relationships?&lt;/h2&gt;
&lt;p&gt;You need the first two layers of relationships to go to the next level. If you stay there, you’ll be missing some big pieces of the puzzle. &lt;strong&gt;You need to break out of these circles and slowly create your third inner layer.&lt;/strong&gt; This is where I failed. I developed great relationships with the inner layers and thought they would elevate me to leadership. Once I learned that it was still not enough, I spent a long time working on expanding my circles.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/expanding-relationship-circle.png&quot; alt=&quot;Expanding Relationship Circles&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If your organization doesn’t have separate promotion boards, &lt;strong&gt;you have to increase your visibility and build relationships with the next levels because these people will decide on your promotion.&lt;/strong&gt; Although you will still need to develop your promotion case, these relationships will be required.&lt;/p&gt;
&lt;p&gt;Having your manager on your side is not enough. &lt;strong&gt;Decision-makers might trust your manager’s judgment, but they want to see it themselves.&lt;/strong&gt; Once they know your thoughts, experiences, and knowledge, they can vouch for you for the next level. &lt;strong&gt;You need these people to talk about you when you’re not in the room.&lt;/strong&gt; Your name should come up often.&lt;/p&gt;
&lt;h2&gt;How to Make the Jump?&lt;/h2&gt;
&lt;p&gt;Understanding different circles and creating these relationships take time and effort. You might think that you don’t have the time and energy for all these people. However, you can do a few simple things.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write people on Slack or so and ask them questions. It doesn’t have to be a meeting all the time.&lt;/li&gt;
&lt;li&gt;Even if you know some of your peers, involve others in discussions. Ask them questions to build relationships.&lt;/li&gt;
&lt;li&gt;If you have a topic you are passionate about, let everyone know. Your name should be attached to the topic. But don’t get stuck on one topic; regularly add new ones to your repertoire.&lt;/li&gt;
&lt;li&gt;Increase your visibility by joining cross-team initiatives.&lt;/li&gt;
&lt;li&gt;Become a host or moderator in a few meetings outside of your team.&lt;/li&gt;
&lt;li&gt;Have random one-on-ones with people in the next level.&lt;/li&gt;
&lt;li&gt;Have regular but less frequent one-on-ones with your skip-level managers.&lt;/li&gt;
&lt;li&gt;Have sync one-on-ones with your peers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The more touchpoints you have with the outer circle, the easier it will be for you to grow. &lt;strong&gt;When you’re a leader, your goal is not to learn everything in the organization; it is to know who to go to when you have a question.&lt;/strong&gt; These people will eventually elevate you in the long run because you will solve problems faster and learn better. It will be a win for everyone.&lt;/p&gt;
&lt;p&gt;Don’t confuse these relationships with friendships. It’s sometimes okay to look for a friendship, but not all the time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Build trustful and solid relationships with people who will advocate for you and your work when you’re not in the room.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;/the-good-the-bad-and-the-ugly-of-career-ladders-and-frameworks/&quot;&gt;Career frameworks are never enough.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;A Quote I&apos;m Pondering&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&quot;Can we listen with an attention in which there is no interpretation, no opposition or acceptance, so that we understand totally what is being said?&quot;&lt;/em&gt;
— Jiddu Krishnamurti&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-29/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-29/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mental Health for Professionals</title><link>https://candost.blog/notes/28/</link><guid isPermaLink="true">https://candost.blog/notes/28/</guid><description>Work is not something of who you are; it&apos;s something you do</description><pubDate>Sat, 16 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How we grow up shapes us—all of our thoughts, lifestyle, values, and more. Growing up in a culture where work is the only thing people care about profoundly impacted how I value myself. In Turkish culture, our lives are less valuable than our professions. Societal structures are created according to work. The more money you had, the more people respected you. Before the 2010s, people had more respect for specific professions such as lawyers, doctors, or engineers. These days, it&apos;s only money. But we still keep asking kids what they want to become when they grow up. These kinds of questions falsify children&apos;s thinking about their values. They conceive work as a personal value. They place their &lt;a href=&quot;/notes/52/&quot;&gt;values&lt;/a&gt; in the wrong place. Instead, we should show work as something they do instead of something they are. Later on, this perspective makes them more open to various options.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30b3/&quot;&gt;30b3: The Case of Happiness&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/28/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/28/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Instead of giving advice directly, use an empathetic approach</title><link>https://candost.blog/notes/44j/</link><guid isPermaLink="true">https://candost.blog/notes/44j/</guid><pubDate>Sat, 16 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&quot;Here are a few things that helped me. Do you think any of them might work for you?&quot; is often implicit. (Use the question instead of giving recommendations or commands.) When it&apos;s implicit, people don&apos;t understand and become resistant to changing their behavior. Also, even when implicit, there are people easy to change when the motivation comes from their manager, whom they trust.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44j/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44j/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Overcoming Binary Bias and Polarization</title><link>https://candost.blog/notes/44k/</link><guid isPermaLink="true">https://candost.blog/notes/44k/</guid><pubDate>Sat, 16 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Polarization is one of the biggest problems in the information age. Creating echo chambers is easy. When we face charged conversations or opposing perspectives, we often discard them and stay in our comfort zone. One of the fundamental reasons for polarization is discussing the why.&lt;/p&gt;
&lt;p&gt;When we find common ground and realize that we can actually focus on the &lt;em&gt;how&lt;/em&gt; part of the problem, we expose ourselves to different perspectives—we overcome binary bias. Coming to this position is not easy. When we face unknowns and uncertainties, we raise our defensive walls.&lt;/p&gt;
&lt;p&gt;To unstuck ourselves from binary bias, we must be exposed to different perspectives and become more doubtful.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;4a: On Being Curious&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30a/&quot;&gt;30a: Change is Inevitable&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44k/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44k/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Have regular career and relationships check-ups</title><link>https://candost.blog/notes/46c/</link><guid isPermaLink="true">https://candost.blog/notes/46c/</guid><pubDate>Sat, 16 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Regular career check-ups and running experiments in various domains are great strategies. It&apos;s difficult to see things from the outside. We often have wrong perceptions about a job until we start doing it. For example, until I became an engineering manager, I didn&apos;t know the importance of prioritization and the stress level that it produces. If I could have had more chances to try the profession, I might have chosen a different one.&lt;/p&gt;
&lt;p&gt;We should have some checkpoints in our careers to evaluate how it&apos;s going.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30a/&quot;&gt;30a: Change is Inevitable&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30b3/&quot;&gt;30b3: The Case of Happiness&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/5/&quot;&gt;5: Managing Promotions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10/&quot;&gt;10: Individual Contributor or Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Summarize when you want to clarify the other side&apos;s change request</title><link>https://candost.blog/notes/53c/</link><guid isPermaLink="true">https://candost.blog/notes/53c/</guid><pubDate>Sat, 16 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When a person wants to change something and consult us as a coach or manager, summarizing their request helps clarify what we understand from their desire to change and catch any misunderstandings. As guides (or coaches), we&apos;re not done until the other person reaches their goals. It tends to stop after the person changes their idea, but without them being done, we cannot be done. Our goals have to align in the end. Otherwise, nobody will change their mind.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/15/&quot;&gt;15: What should you do when your manager delegates a task to you&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;4a: On Being Curious&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17i/&quot;&gt;17i: How to Understand The Public Talk Feedback You Get&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/53c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/53c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Listen with attention and ask questions with curiosity to encourage others to be open</title><link>https://candost.blog/notes/53d/</link><guid isPermaLink="true">https://candost.blog/notes/53d/</guid><pubDate>Sat, 16 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we listen, we give the best gift: our attention. If we take time and listen to someone, why shouldn&apos;t we do it well? We have already given our time. We could also share our attention too. When people don&apos;t give their attention while listening to someone, the other side feels it. Listening well is not looking like you&apos;re listening but also consists of asking questions with curiosity and responding to the other side. Empathetic listeners make others relaxed and put down their defensive walls. People feel less stress when talking to these listeners. That&apos;s why when these listeners ask questions, the talkers encourage themselves to explore their thoughts more deeply and share what they have found.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17i/&quot;&gt;17i: How to Understand The Public Talk Feedback You Get&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44h/&quot;&gt;44h: Present humility and ask questions to persuade others&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/53d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/53d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Relationship vs. Task Conflicts</title><link>https://candost.blog/relationship-vs-task-conflicts/</link><guid isPermaLink="true">https://candost.blog/relationship-vs-task-conflicts/</guid><description>Some people avoid conflicts thinking that they brake harmony and create problems. Some people create relationship conflicts because relationships are more important than work. And some people create task conflicts while thinking it will also improve their relationships.</description><pubDate>Fri, 15 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we think about conflicts at work, we see different behaviors and approaches.&lt;/p&gt;
&lt;p&gt;It&apos;s difficult to keep relationships out of work for some people. Whenever someone criticizes their work, they take it personally and become defensive. We see this behavior in relationship-based cultures. For example, a stereotypical Turkish person falls slightly into this category. Whenever you give negative feedback on their work, they take it personally because relationships are essential at work, as many people make friends. However, we see stereotypical Dutch people giving harsh feedback about the work in front of others without hesitation because they are focused on bringing out better work. They think it will improve their relationship with others because they show that they care about someone else&apos;s work. There is no right or wrong here; both have pros and cons.&lt;/p&gt;
&lt;p&gt;However, when we focus on the &lt;a href=&quot;/how-to-solve-and-prevent-conflicts/&quot;&gt;conflict&lt;/a&gt; and discard &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;cultural impact&lt;/a&gt;, &lt;strong&gt;task conflicts are more favorable in the business world.&lt;/strong&gt; Relationship conflicts focus on how people behave toward each other. &quot;&lt;em&gt;She never listens to me, always becomes defensive&lt;/em&gt;,&quot; &quot;&lt;em&gt;He said that he would join the meeting, but he is always late to meetings where I&apos;m the moderator.&lt;/em&gt;&quot; On the other hand, task conflicts focus on the work; the goal is finding out the best way to finish the task. &quot;The process &lt;em&gt;changes you made impacted us badly, and I think we should have done it the other way around&lt;/em&gt;,&quot; &quot;&lt;em&gt;We shouldn&apos;t merge the Pull Request who breaks the pipeline&lt;/em&gt;.&quot; Although these sentences might be directed to one person, their focus is on making things better, not making someone else better.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When we focus on showing people&apos;s weaknesses, they quickly get defensive. When we expose the broken processes and offer better ways, we unbind the feedback from the person.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Additionally, &lt;a href=&quot;/explicit-disagreement-is-better-than-implicit-misunderstanding/&quot;&gt;avoiding conflicts doesn&apos;t solve anything&lt;/a&gt;. &lt;strong&gt;Conflicts are necessary for improvement and growth and are a healthy part of relationships.&lt;/strong&gt; Adam Grant said, &quot;&lt;em&gt;Without conflicts, there is no harmony; there is only apathy.&lt;/em&gt;&quot; If we always agree with each other, there will always be one side sacrificing something. They either hide their true thoughts or get disturbed after a while. When we always agree on it, it feels fake. The relationship doesn&apos;t look and sound natural. Each individual is different, but society forces us to be the same. Always confirming each other and avoiding conflict doesn&apos;t help us find the truth. When there is no truth in the relationship, we cannot be honest and, therefore, cannot form trust.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We learn from people who challenge our thought processes.&lt;/strong&gt; Avoiding arguments doesn&apos;t showcase that we have good manners; it means we ignore the other side and don&apos;t value their perspectives. Embracing and encouraging task conflicts are better for improving our collaboration.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;These are my thoughts on a topic from &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/relationship-vs-task-conflicts/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/relationship-vs-task-conflicts/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Persuading others requires accepting their arguments and building empathy</title><link>https://candost.blog/notes/44g/</link><guid isPermaLink="true">https://candost.blog/notes/44g/</guid><pubDate>Fri, 15 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been on the side of pushing my arguments more and more. I always chose the most logical side (at least the one that looked most logical to me) and always looked for extra ideas to support my reasoning. I thought I could win debates if I stuck to the facts and counted one point after another. Yet, some things come with experience and age. My way was the wrong one to persuade people. I didn&apos;t learn it from this book, but this book strengthened my learning; it enhanced my perspective. When I accepted some of the arguments in discussions, I recognized that people become open to change. As I showed my openness to accept counterarguments, they also became less defensive.&lt;/p&gt;
&lt;p&gt;We should change our perspective, see the other side&apos;s strongest argument, and acknowledge and give credit to build empathy. If we insist on our arguments and count reasons one after the other, we don&apos;t create a conversation; we enter prosecutor or preacher mode. When we acknowledge the other side&apos;s valid points, we present humility.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19b/&quot;&gt;19b: Consent-Based Decision Making&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17i/&quot;&gt;17i: How to Understand The Public Talk Feedback You Get&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30a/&quot;&gt;30a: Change is Inevitable&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44g/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44g/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Present humility and ask questions to persuade others</title><link>https://candost.blog/notes/44h/</link><guid isPermaLink="true">https://candost.blog/notes/44h/</guid><pubDate>Fri, 15 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Irrationally repeating the same arguments, staying the same line repeatedly, and not budging frustrates people, and they raise shields. If we don&apos;t present humility and never accept valid arguments, we become irrational. We can ask, &quot;What evidence would change your mind?&quot; in any heated discussion to break this habit. &lt;a href=&quot;/notes/4a/&quot;&gt;Asking questions with curiosity&lt;/a&gt; shows them that we&apos;re open to changing our minds instead of being stubborn over our arguments. When we show humility and weaknesses in our arguments, the other side joins the &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;debate dance&lt;/a&gt;, and we begin forming trust with the other side.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;4a: On Being Curious&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8d/&quot;&gt;8d: Ask Questions&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44h/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44h/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Ask questions that nudge the other side to explore the roots of their stereotypes</title><link>https://candost.blog/notes/44i/</link><guid isPermaLink="true">https://candost.blog/notes/44i/</guid><pubDate>Fri, 15 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The fish is never aware of its surroundings. Everywhere is water for it; thus, it will never learn from its environment. Humans form stereotypical thoughts according to the environment they are in. Due to the biological nature of stereotypical beliefs, breaking them requires going out of the route and getting into someone else&apos;s shoes. Like &lt;a href=&quot;/notes/44h/&quot;&gt;asking questions to convince people&lt;/a&gt;, we have to ask questions that can challenge these stereotypical thoughts. If we want people to reconsider their stance on specific arguments, we need to ask questions that nudge them to explore the origins of their ideas and beliefs. Once they start exploring how they formed these stereotypes, they realize how easy it was to build them.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44i/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44i/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Unclear WHYs create more relationship conflicts</title><link>https://candost.blog/notes/44f/</link><guid isPermaLink="true">https://candost.blog/notes/44f/</guid><pubDate>Thu, 14 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When Simon Sinek recommended &lt;a href=&quot;https://simonsinek.com/books/start-with-why/&quot;&gt;starting with why&lt;/a&gt;, there was a reason behind it. One of the arguments he had was, &lt;em&gt;&quot;With a clear WHY, everyone inside the company will be able to make decisions as clearly and as accurately as the leader.&quot;&lt;/em&gt; When the why is unclear, people tend to focus on why they should do something in that way or another way. Unclear direction creates adversaries. An unclear mission creates relationship conflicts. The reason should always be clear when we want to do something. Then, the discussions can focus on how to do that thing. Focusing discussions on HOW improves the outcome because it promotes &lt;a href=&quot;/relationship-vs-task-conflicts/&quot;&gt;task conflicts instead of relationship conflicts.&lt;/a&gt; Leaders should always clarify the WHY part so that the team can focus on HOW to do things.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#27: Problem-Solving Skills &amp; A Strategy for Software Engineers</title><link>https://candost.blog/podcast/27-problem-solving-skills-and-a-strategy/</link><guid isPermaLink="true">https://candost.blog/podcast/27-problem-solving-skills-and-a-strategy/</guid><pubDate>Tue, 12 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;27: Problem-Solving Skills &amp;amp; A Strategy for Software Engineers&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/27-problem-solving-skills-and-a-strategy-065&quot;&gt;https://candost.substack.com/p/27-problem-solving-skills-and-a-strategy-065&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/27-problem-solving-skills-and-a-strategy/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/27-problem-solving-skills-and-a-strategy/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Relationship vs. Task Conflict</title><link>https://candost.blog/notes/44e/</link><guid isPermaLink="true">https://candost.blog/notes/44e/</guid><pubDate>Fri, 08 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we think about conflicts at work, we see different behaviors and approaches.&lt;/p&gt;
&lt;p&gt;It&apos;s difficult to keep relationships out of work for some people. Whenever someone criticizes their work, they take it personally and become defensive. We see this behavior in relationship-reliant cultures. For example, a stereotypical Turkish person falls slightly into this category. Whenever you give negative feedback on their work, they take it personally because relationships are essential at work, as many people make friends. However, we see stereotypical Dutch people giving harsh feedback about the work in front of others without hesitation because they are focused on bringing out better work. They think it will also improve their relationship with others because they show that they care about someone else&apos;s work. There is no right or wrong here; both have pros and cons.&lt;/p&gt;
&lt;p&gt;However, when we focus on the conflict and discard cultural impact, &lt;strong&gt;task conflicts are more favorable in the business world&lt;/strong&gt;. Relationship conflicts focus on how people behave toward each other. &quot;She never listens to me, always becomes defensive,&quot; &quot;he said that he would join the meeting, but he is always late to meetings where I&apos;m the moderator.&quot; On the other hand, task conflicts focus on the work; the goal is finding out the best way to finish the task. &quot;The process changes you made impacted us badly, and I think we should have done it the other way around,&quot; &quot;We shouldn&apos;t merge the Pull Request who breaks the pipeline.&quot; Although these sentences might be directed to one person, their focus is on making things better, not making someone else better.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When we focus on showing people&apos;s weaknesses, they quickly get defensive. When we expose the broken processes and offer better ways, we unbind the feedback from the person.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Additionally, &lt;strong&gt;Conflicts are necessary for improvement and growth and are a healthy part of relationships.&lt;/strong&gt; Adam Grant said, &quot;&lt;em&gt;Without conflicts, there is no harmony; there is only apathy.&lt;/em&gt;&quot; If we always agree with each other, there will always be one side sacrificing something. They either hide their true thoughts or get disturbed after a while. When we always agree on it, it feels fake. The relationship doesn&apos;t look and sound natural. Each individual is different, but society forces us to be the same. Always confirming each other and avoiding conflict doesn&apos;t help us find the truth. When there is no truth in the relationship, we cannot be honest and, therefore, cannot form trust.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We learn from people who challenge our thought processes.&lt;/strong&gt; Avoiding arguments doesn&apos;t showcase that we have good manners; it means we ignore the other side and don&apos;t value their perspectives. Embracing and encouraging task conflicts are better for improving our collaboration.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Productivity Scam and Perception of Time</title><link>https://candost.blog/productivity-scam-and-perception-of-time/</link><guid isPermaLink="true">https://candost.blog/productivity-scam-and-perception-of-time/</guid><description>I have been trying to optimize my life for a while. If I search about productivity and life organization, Google shows me almost four billion pages. I have read many of them while hoping they will help me.</description><pubDate>Thu, 07 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have been trying to optimize my life for a while. &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;I looked for what I could do to organize my life.&lt;/a&gt; If I search about productivity and life organization, Google shows me almost four billion pages for “productivity.” I have read many of them while hoping they will help me. After a while, I realized my problem was not being unproductive. My problem was my understanding of time. The word productivity became so polluted that we forgot how time works. We think that time is limited, which is accurate, and we try to bring out the best. This limitation comes from comparing it with eternity. We believe our time in life is so tiny that we have to rush everything. Yet, we have more than 70 years on average; it feels like an eternity. &lt;a href=&quot;/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/&quot;&gt;Thinking about that long time&lt;/a&gt;, I asked myself, “Why do we rush everything? Why can’t we take the long road and slowly move while consuming everything around us in the best way possible?”&lt;/p&gt;
&lt;p&gt;While keeping this wondering in my head, I’ve met with Oliver Burkeman’s thoughts about productivity and time after reading &lt;a href=&quot;https://www.themarginalian.org/2021/12/20/four-thousand-weeks-oliver-burkeman/&quot;&gt;a wonderful piece&lt;/a&gt; from Maria Popova in Marginalian.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;This strange moment in history, when the time feels so unmoored, might, in fact, provide the ideal opportunity to reconsider our relationship with it. Older thinkers have faced these challenges before us, and when their wisdom is applied to the present day, certain truths grow more clearly apparent. Productivity is a trap. Becoming more efficient just makes you more rushed, and trying to clear the decks simply makes them fill up again faster. Nobody in the history of humanity has ever achieved “work-life balance,” whatever that might be, and you certainly won’t get there by copying the “six things successful people do before 7:00 a.m.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rushing every task, job and finishing everything quickly fastens the process of refilling. Productivity is a never-ending scam. The more we try to be productive, the more we are sucked into extra shallow work. We forget that we still have long years and act as if we are about to end our time.&lt;/p&gt;
&lt;p&gt;We will never control everything that’s going on. There is no way other than accepting the reality that life is messy and we will never have work-life balance by just copying other people who got up early at 5 a.m. and did X number of things.&lt;/p&gt;
&lt;p&gt;Constantly increasing productivity is a capitalist scam that increases the output while promoting more happiness and satisfaction by giving rewards, especially in the knowledge worker community. &lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;I’ve fallen into this trap and confused productivity with happiness.&lt;/a&gt; When I produce more, I tend to think I’m happy. A small dopamine rush after completing a to-do item gives me pleasure and, as a result, demands more from my life because I take that load and think that I can do more all the time. Yet, I can’t because life puts various difficulties.&lt;/p&gt;
&lt;p&gt;Whenever life amplifies the difficulties, we choose the easiest way out. That’s what Rainer Maria Rilke &lt;a href=&quot;https://www.themarginalian.org/2021/06/29/rilke-letters-to-a-young-poet-macy-barrows/&quot;&gt;observed&lt;/a&gt; as well.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“People are drawn to the easy and to the easiest side of the easy, but it is clear that we must hold ourselves to the difficult.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Although Rilke was talking about the difficulty of solitude, there are other things around us that are difficult but serve us the best. For example, the best non-fiction books are often the most difficult ones to read. Some of the best movies are the longest ones you have to watch with focus. The best games are the most challenging ones that take you into a story and &lt;a href=&quot;/what-hades-the-game-had-taught-me/&quot;&gt;teach you something else than just a game&lt;/a&gt;. And the best writer is the one who spends more than 10 years &lt;a href=&quot;/navigating-the-writing-challenge-every-day/&quot;&gt;changing with words with every piece&lt;/a&gt;. The best Japanese swordsmith spends around 18 months on a single Katana and does not care about productivity. The process has to be slow. Whenever the expert rushes, the result will show itself.&lt;/p&gt;
&lt;p&gt;It takes years to become an expert, and there is no to-do list for a swordsmith during the training; it’s the leisurely pace that brings the best. It breaks our hasty relationship with time. We have to slow down and accept that reality sucks, and there is nothing we can do about it. Life will always show its difficulties and will &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;throw us off track&lt;/a&gt;. Improving our productivity and processes won’t help at all unless we change our perception of time and take some things slowly.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/productivity-scam-and-perception-of-time/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/productivity-scam-and-perception-of-time/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #28: Changing jobs to seek happiness won&apos;t bring you what you want</title><link>https://candost.blog/newsletter/mektup-28/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-28/</guid><pubDate>Tue, 05 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;For the last two years, we have faced different challenges worldwide. Many surroundings have made us feel overwhelmed, whether it was a pandemic, being stuck at home, or wars.&lt;/p&gt;
&lt;p&gt;On top of that, we have daily work stress, which often significantly impacts our happiness. These situations resulted in A Great Resignation wave in many countries. While we’re in this era, I wrote an article about my suggestion to some people: &lt;strong&gt;&lt;a href=&quot;/do-not-change-jobs/&quot;&gt;do not change your job&lt;/a&gt;&lt;/strong&gt;. The article got &lt;a href=&quot;https://news.ycombinator.com/item?id=30437733&quot;&gt;a lot of comments&lt;/a&gt; and criticism. One thing I realized at that time was not making it clear that I was coming up with my suggestion backed by research. Now that you’re here. Let me explain why I think you shouldn’t change your job if you’re not open to changing yourself.&lt;/p&gt;
&lt;p&gt;In the Great Resignation, &lt;strong&gt;&lt;a href=&quot;https://blog.pragmaticengineer.com/off-cycle-compensation-adjustments-for-software-engineers-in-2021/&quot;&gt;software engineering salaries skyrocketed, and they are still increasing&lt;/a&gt;&lt;/strong&gt;. Many companies hired conservatively during the pandemic. However, with the virus getting weaker in every variant and vaccination spreading worldwide, people looked for a change in their lives with the hope of getting more money (who can resist not doubling the salary?) and getting happier.&lt;/p&gt;
&lt;p&gt;In the article, I said that if you really need more money, I won’t argue that you change your job. However, &lt;strong&gt;if you’re after happiness and you think more money will make you happy, that’s where you might be wrong.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;❗Before you read the rest, I want to make one point prominent: As software engineers, we’re in a privileged situation where we can get a ton of money to perform our profession while sitting at a desk. When we compare it with many professions, we’re in a privileged position that we should all be aware of.&lt;/p&gt;
&lt;p&gt;There are many research projects around money and happiness relationships. There is a single chart that explains this relationship (a.k.a. fulfillment) well.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/the-fulfillment-curve.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Source of the Image: &lt;a href=&quot;https://investmentmoats.com/budgeting/your-fulfillment-curveunderstanding-how-much-money-is-enough/&quot;&gt;Investment Moats&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this chart, the “Enough” spot depends on you. &lt;strong&gt;Everyone has different levels of fulfillment.&lt;/strong&gt; But many software engineers are already above their comfort level.&lt;/p&gt;
&lt;p&gt;Let me quickly tell the story of Buddha, a well-known spiritual leader. Buddha was born into a wealthy family. Being able to reach out for anything he wanted didn’t make him happy, and he looked outside and saw that people were happy outside of his palace. So, he sought poverty, thinking it would be a satisfying life as he saw poor people happy. That didn’t work either (as we can all expect). He started thinking about the reasons and eventually found happiness in the middle ground. That point is the comfort point of the fulfillment curve you see above. For Buddha, comfort was enough.&lt;/p&gt;
&lt;p&gt;Finding where that top point in your life is the tricky part of happiness. And that’s the part I want to talk about. &lt;strong&gt;According to scientific research, our happiness is 50% genetic;&lt;/strong&gt; we have nothing to change there; our personality has a huge impact. Of the remaining, &lt;strong&gt;10% is the environmental impact;&lt;/strong&gt; what’s happening around us, the company, and the world. This is the part Buddha tried to change at first by leaving the palace and living on the streets. It’s only 10%, yet we expect more happiness from the environment than we attribute to our inherited genetics. &lt;strong&gt;The remaining 40% is intentional activity&lt;/strong&gt;; this massive chunk of happiness literally depends on us. How we approach events around us, think about what we do, and understand and interpret our life and work experiences form 40% of our happiness. This portion was what Buddha found out when he sat down and thought about life.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When you change jobs to be happier, you are—hopefully—improving less than 10% of your happiness by changing the work environment.&lt;/strong&gt; If money is not the problem and you’re living comfortably, changing your work won’t make any difference. You will be the same unhappy person, just working in a different company.&lt;/p&gt;
&lt;p&gt;If you have a toxic company culture, improving that by &amp;lt;10% may help you improve your overall life. But if you’re working in good company culture, that change might not affect you. &lt;strong&gt;&lt;a href=&quot;https://sonjalyubomirsky.com/wp-content/uploads/2024/07/Lyubomirsky-Sheldon-Schkade-2005.pdf&quot;&gt;In the research studies&lt;/a&gt;&lt;/strong&gt;, scientists found that moving to a new place with a view after retirement or making lots of new friends, or even getting married showed some positive outcomes only in the short term. In the long term, people returned to their original happiness baseline. So, what can you do?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The 40% happiness, the intentional activity, is what you can change.&lt;/strong&gt; The bad part of this 40% is that it doesn’t happen by itself. As it is intentional, it demands effort. The 10% environmental part happens to you, but the 40% is the activities you act in your circumstances. For example, if your company changes your project, it depends on you to be happy or not. You might blame your organization for moving you from a great project to a bad one, but you may as well see it as an opportunity to handle a bad project and make it a success. How you interpret the situation defines your happiness.&lt;/p&gt;
&lt;p&gt;When you change jobs, you might be hired for a specific project. However, you may be assigned to another one after six months because your initial project will be shut down. If you value stability and want to keep working on that project, you won’t be happy. That’s the part you can change your attitude. These events will happen everywhere, and your happiness will depend on how you interpret them. &lt;strong&gt;Think twice—or even three times—before sending your resignation letter. Evaluate the situations and your perspective together. How you think about any problem can impact your happiness more than you imagine.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I will close this week’s letter with the same paragraph from &lt;a href=&quot;/do-not-change-jobs/&quot;&gt;the article I wrote&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you’re leaving for more money or safety, I will never argue. If you’re leaving for a different type of experience (e.g., &lt;strong&gt;&lt;a href=&quot;/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/&quot;&gt;remote work vs. in-office&lt;/a&gt;&lt;/strong&gt;, big co vs. start-up) or different company cultures, I won’t argue. …… If you’re leaving your company because the market is hot right now and your company can’t give you a raise &lt;strong&gt;&lt;a href=&quot;https://www.oreilly.com/library/view/your-money-the/9780596809430/ch01.html#the_fulfillment_curve&quot;&gt;that might not even change your life&lt;/a&gt;&lt;/strong&gt;, then maybe you should question again. Don’t get caught in the great resignation wave.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;*P.S.&lt;/strong&gt; &lt;a href=&quot;/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/&quot;&gt;Deep Walks to increase life and work satisfaction.&lt;/a&gt;*&lt;/p&gt;
&lt;h2&gt;A Quote I’m Pondering&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;*&quot;Many of our beliefs are cultural truisms: widely shared, but rarely questioned.&quot;*​ — Adam Grant&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-28/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-28/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How do I behave when I receive feedback?</title><link>https://candost.blog/notes/40d/</link><guid isPermaLink="true">https://candost.blog/notes/40d/</guid><pubDate>Sun, 03 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Reactions to feedback define how the feedback giver perceives the other person&apos;s feedback-receiving skills. When people react with anger or cry when they receive harsh feedback, it creates a picture of how they cannot handle the feedback. These various behaviors are the feedback footprints that are unique to the individual. Many people are not aware of their &lt;em&gt;feedback footprint&lt;/em&gt; and are not ready to face harsh feedback. Asking, &quot;How do I typically behave when I receive feedback?&quot; is a good strategy to help anyone learn their unintentional behaviors. After learning the reactions, it will be easier to prepare for any kind of feedback and easily handle difficult situations.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17i/&quot;&gt;17i: How to Understand The Public Talk Feedback You Get&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/40d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/40d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Best Practices and Consistent Improvement</title><link>https://candost.blog/notes/39a/</link><guid isPermaLink="true">https://candost.blog/notes/39a/</guid><pubDate>Thu, 31 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Engineers often struggle to explain their train of thought. They create processes and systems in their minds but fail to explain them using simple sentences. Good engineers often become terrible communicators and collaborators not because of their limitations in thinking but because of limitations in explaining their decisions. They make good judgment calls and decisions but fail to adapt these decisions to changing situations. Especially when teams form best practices, these practices become the worst after a while because nobody has the guts to rethink them and improve them. They accept them as best practices and use them without reviewing them.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10a/&quot;&gt;10a: Growing in IC track in Engineering&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/26/&quot;&gt;26: The Cost of Software Deployment and Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/49/&quot;&gt;49: Accidental Complexity&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/39a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/39a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Confident Humility is Required to Build Trust</title><link>https://candost.blog/notes/3b6/</link><guid isPermaLink="true">https://candost.blog/notes/3b6/</guid><pubDate>Thu, 31 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s horrifying to open our weaknesses in front of others. Especially if we&apos;re raised in a culture that promotes being the best and the strongest in society, it&apos;s challenging to admit mistakes publicly and tell everyone where our weaknesses are. However, there is no better way to build trust. If we can show humility while knowing our strengths and displaying them with our weaknesses, people build trust because they get to know us better. If they don&apos;t know or can&apos;t rely on us or guess how we will react to certain situations, they can&apos;t trust us. It&apos;s that simple.&lt;/p&gt;
&lt;p&gt;When I think about managers I&apos;ve worked with, the best ones were the ones who say, &quot;I don&apos;t know&quot; or &quot;I was wrong.&quot; They knew their weaknesses in the team or, in general, the company. Instead of hiding them, they embraced them and allowed others to fill the gap in their knowledge. They also knew their strengths. They were confident in some areas; they knew what they were good at. Meanwhile, they also accepted that they were wrong, even in their confidence area. They were always open to learning. Adam Grant defines this behavior as confident humility. And that&apos;s what they had.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3b6/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3b6/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Comparing Psychological Safety with Performance Culture</title><link>https://candost.blog/notes/54c/</link><guid isPermaLink="true">https://candost.blog/notes/54c/</guid><pubDate>Thu, 31 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Creating psychological safety is challenging and demands &lt;a href=&quot;/notes/44g/&quot;&gt;empathy&lt;/a&gt; and consistent action from leaders. Keeping the environment safe is a complex dynamic, and empathy is not enough. People should trust each other first. Creating trust requires showing &lt;a href=&quot;/notes/3b6a/&quot;&gt;vulnerabilities, admitting mistakes&lt;/a&gt;, and taking action on constructive feedback. When a leader&apos;s words and actions do not align, trust is broken. Trust is the first step, but it&apos;s not the last one. I&apos;ve experienced that even when people trust each other, some folks are more hesitant than others to raise their voices because of their backgrounds and how they learned from previous situations in their lives (be it a cultural background or from their previous company&apos;s culture). It is crucial to guide and show them their possible positive impact on the team.&lt;/p&gt;
&lt;p&gt;On the other hand, the culture decays when performance and delivery become the first thing people look for instead of creating the best possible work. In the long term, delivery and performance decay. It&apos;s impossible to keep high performance for an extended period when it&apos;s the most important thing. A performance culture works in the short term (such as in task forces). However, psychological safety creates better results if the team has a longer-term vision and work.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24a/&quot;&gt;24a: Creating goals when you join a new team&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b2/&quot;&gt;3b2: Building Trust as a Leader&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44g/&quot;&gt;44g: Persuading others requires accepting their arguments and building empathy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/54c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/54c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Scientific Thinking and Fact-Checking for A Better Life</title><link>https://candost.blog/notes/30/</link><guid isPermaLink="true">https://candost.blog/notes/30/</guid><pubDate>Wed, 30 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;Interrogating the information instead of only consuming it &lt;a href=&quot;/notes/9c1/&quot;&gt;helps us comprehend it as a whole&lt;/a&gt; and makes us more skeptical.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19h/&quot;&gt;Popularity ≠ Reliability&lt;/a&gt;. Being the first is not the same as being correct. Understanding the information&apos;s reliability is crucial. Otherwise, the data leads us to wrong judgments. The same applies to hype technologies. Popular doesn&apos;t mean the best.&lt;/li&gt;
&lt;li&gt;Some folks broaden the information&apos;s reach, but the source can differ. Whoever is giving the message might have a different source. Be aware of it.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4b/&quot;&gt;4b: Monitoring &amp;amp; Inspection to Learn&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27b/&quot;&gt;27b: How to Learn New Things via Habit Stacking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17i/&quot;&gt;17i: How to Understand The Public Talk Feedback You Get&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/9c1/&quot;&gt;Scope insensitivity&lt;/a&gt; is what prevents us from understanding the whole picture, especially when what we are focusing on is growing exponentially or becoming increasingly longer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Trailer: Season #3</title><link>https://candost.blog/podcast/trailer-season-3/</link><guid isPermaLink="true">https://candost.blog/podcast/trailer-season-3/</guid><pubDate>Tue, 29 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Trailer: Season #3&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/trailer-season-3&quot;&gt;https://candost.substack.com/p/trailer-season-3&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/trailer-season-3/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/trailer-season-3/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Impact of knowledge and beliefs on learning</title><link>https://candost.blog/notes/27b1/</link><guid isPermaLink="true">https://candost.blog/notes/27b1/</guid><pubDate>Mon, 28 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we grow experts in one area, it becomes more difficult to change our thoughts. It&apos;s easy to leave the learning zone. Once we form beliefs, it impacts how we learn from others. When we get feedback/input, we defend ourselves as they attack our beliefs. While people we lead try to express their thoughts, we—without realizing it—close ourselves to their suggestions and stop rethinking. It&apos;s easy to fall into this trap. Staying in the learning zone and &lt;a href=&quot;/notes/52a2/&quot;&gt;being humble&lt;/a&gt; and open moves us forward. Instead of thinking like we&apos;re experts, we need to think about how to silence our inner dictator and open ourselves to others&apos; thoughts to learn from them.&lt;/p&gt;
&lt;p&gt;The knowledge we have impacts how we approach things. When we form beliefs, we are more likely to destroy these beliefs. We build walls around them.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10a/&quot;&gt;10a: Growing in IC track in Engineering&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;4a: On Being Curious&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/27b1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/27b1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Impact of Imposter Syndrome</title><link>https://candost.blog/notes/46b/</link><guid isPermaLink="true">https://candost.blog/notes/46b/</guid><pubDate>Mon, 28 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Imposter syndrome has many drawbacks. It can prevent us from being seen as strong people. But it also has advantages that can help us become better people and leaders.&lt;/p&gt;
&lt;p&gt;Being an imposter motivates us to work harder. When we feel like we are cheating or our knowledge is insufficient, we work more to catch up.&lt;/p&gt;
&lt;p&gt;It motivates us to work smarter. We&apos;re more inclined to change our opinions. If we believe we&apos;re not going to win, we have nothing to lose; therefore, we rethink our approach.&lt;/p&gt;
&lt;p&gt;It makes us better learners. When we doubt our knowledge, we&apos;re more open to learning from others.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;4a: On Being Curious&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/28/&quot;&gt;28: Mental Health for Professionals&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #27: Unstuck yourself from the ideas that go nowhere</title><link>https://candost.blog/newsletter/mektup-27/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-27/</guid><pubDate>Tue, 22 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;I often see some engineers stick to one idea. They see the advantages of one side but don’t review their approaches if it solves the problem or not. Many engineers learn to perform a job in one way. They start to think they can approach other tasks in the same way. I made the exact mistake countless times. I learned one architectural pattern in iOS development, which I thought was the best way. At that time, all senior engineers and I were in the same place, and the project we developed was in great technical shape, which allowed us to develop features faster with high code quality. But it didn’t last long.&lt;/p&gt;
&lt;p&gt;Another project needed an engineer, and I was the lucky one to move there. The new project was vastly different. Even though we were working with a similar business as my first project, the second one was a technical and organizational challenge. I did what I knew best and started applying the strategies I learned in the previous and outstanding project. One day, while trying to develop a feature quickly, I insisted on a technical approach and made it a big deal because I knew that was the best way to do it. And I was right.&lt;/p&gt;
&lt;p&gt;What I didn’t know were the other business cases, deals between project stakeholders, and the urgency. We had to sacrifice technical excellence and deliver a feature, and it was a conscious decision that I couldn’t see. I failed to let the technical excellency go, and conflicts appeared. In the following weeks, I became frustrated, and the team&apos;s mood slightly changed. Eventually, I had a chance to move to another project, but I learned a lot. And here is what I learned.&lt;/p&gt;
&lt;p&gt;When people insist on doing a job in a certain way, try to understand why. If you’re both pushing in different ways, there is a high chance either one or both of you miss some context. Instead of pressing more and more, take a moment and notice that you’re trying to solve &lt;em&gt;the same&lt;/em&gt; problem. When you push the idea, the other side will immediately raise their defense walls because they &lt;em&gt;feel&lt;/em&gt; threatened. In turn, you also put your shields up, and the situation leads to conflicts. When you notice the differences, &lt;em&gt;&lt;strong&gt;declare that both of you are solving the same problem&lt;/strong&gt;&lt;/em&gt;. This strategy is one of the essential strategies for persuading others. It also helps you to &lt;em&gt;reconsider your thoughts&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Then, ask questions to broaden your perspective on the topic. A few straightforward questions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“What do you see that I miss? I believe we have different knowledge and context about the problem. Help me understand yours.”&lt;/li&gt;
&lt;li&gt;“Why do we see the situation differently? Help me understand your perspective.”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These phrases set the ground for differences and show humility. They don’t judge the other person or their thoughts. They help you comprehend the motives behind other people’s thoughts and find similarities between your approach and theirs. Once you grasp their perspective, acknowledge the part of their solution you also agree with. This acknowledgment will destroy the defense walls because they recognize that you’re taking a step.&lt;/p&gt;
&lt;p&gt;Let’s take a look at another example in which an engineer recommends something for a long time but can’t convince others. One of the senior engineers suggested that everyone in the team share status updates in written form and announce everyone on a single document. For months, I heard the same request over and over again. It started to feel like we were having the same conversations repeatedly. But, the case is, the engineer never took a step to ask either themselves or me or others, “What do you see that I can’t do so my suggestion seems ineffective?” I’m not blaming anyone, of course. From the manager’s standpoint, we also couldn’t succeed in showing them the broader perspective and why the team and we think their approach won’t work.&lt;/p&gt;
&lt;p&gt;When people grow in their careers into senior roles, implicit expectations begin to appear, and this is one of them. &lt;strong&gt;To ask questions to figure out why a suggestion doesn’t—or won’t—work is a skill that experienced engineers have to acquire.&lt;/strong&gt; They have to develop elasticity in their recommendations and be flexible with their approaches.&lt;/p&gt;
&lt;p&gt;Getting out of a stuck mindset allows us to learn. It helps us reconsider our approaches and find the best for the situation. Any action we take shows us the trade-offs and guides us to an optimal decision. I know it’s already challenging to notice that we’re going into a conflict. Yet, once we experience a conflict and retrospect the situation later, we realize many signals we missed. That is a skill to learn and develop. Much like any skill, it needs time and repetition. You will make many mistakes on this road but think of every mistake as new learning.&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;h2&gt;A Quote I’m Pondering&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&quot;Who you are should be a question of what you value, not what you believe.&quot; — Adam Grant&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-27/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-27/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>A Systematic Approach to Give Feedback to Blame Absorbers</title><link>https://candost.blog/systematic-approach-to-give-feedback-to-blame-absorbers/</link><guid isPermaLink="true">https://candost.blog/systematic-approach-to-give-feedback-to-blame-absorbers/</guid><description>At first glance, blame absorbers look good because it shows that the person owns their work and has a sense of responsibility. However, we often don’t notice that they harm the team more than bring an advantage.</description><pubDate>Fri, 18 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Have you ever worked with a person who always says either one or more of these sentences:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I should have done that.&lt;/li&gt;
&lt;li&gt;I could have done XYZ.&lt;/li&gt;
&lt;li&gt;I should have known this might happen. It won’t happen again.&lt;/li&gt;
&lt;li&gt;I made a mistake, not others. It’s all on me.&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At first glance, all of these phrases look good because it shows that the person owns their work and has a sense of responsibility. These good intentions are usually welcomed and appreciated by their leaders and colleagues. However, people who use these phrases often don’t notice that they harm the team more than bring an advantage.&lt;/p&gt;
&lt;p&gt;While working with blame absorbers—as Sheela Heen calls them—leaders have to take precautious steps. Otherwise, it leads to a toxic and unlearning environment. When a blame absorber takes all responsibility for a failure, none is left to others. When people own one mistake that many other factors contributed to, they overlook the reasons. They lose sight of the big picture.&lt;/p&gt;
&lt;p&gt;At the same time, this behavior is detrimental to the blame absorber. Letting this behavior slip causes the person to absorb all the blame and build resentment over time. The absorber will start to think they’re always to blame, and others don’t take responsibility at all. They also begin thinking they are not good at their job, and therefore, the situation might result in high-level stress and burnout.&lt;/p&gt;
&lt;h2&gt;How to work with and guide a blame absorber?&lt;/h2&gt;
&lt;p&gt;Working with a blame absorber requires listening well and approaching with empathy. We need to unload some responsibility while keeping it at a healthy level. Understanding where they stand starts with explaining why we are having a conversation about it. Many leaders miss this point and confuse the people reporting to them.&lt;/p&gt;
&lt;p&gt;It starts with walking them through the big picture and broadening their perspective. At this stage, it’s crucial not to blame &lt;em&gt;any&lt;/em&gt; person but instead focus on all the factors contributing to the problem.&lt;/p&gt;
&lt;p&gt;Once they comprehend the whole picture, we need to help them see how they contribute, their behavior, and their impact. Using a concrete situation as an example is always a good strategy. There are various methods to uncover behavior, but I found the Situation, Behavior, Impact (SBI) Feedback Model helpful for this case. The goal of the SBI model is not to give any suggestions but show them one scene overall.&lt;/p&gt;
&lt;p&gt;In the SBI Model, we explain the Situation as straightforwardly as possible, without any personal comment or remark. For example, the situation can be “Yesterday in the Post-Mortem Analysis meeting when you explained the root cause.” The situation doesn’t indicate anything besides defining the exact moment.&lt;/p&gt;
&lt;p&gt;When we define Behavior in the next step, it’s crucial to avoid stating opinions and judgments. The behavior should explain the person&apos;s behavior without guessing any reason behind it in that specific situation. For example, the behavior can be “When you said the root cause was all your fault and you should have thought it before.” The behavior doesn’t state any personal opinion or judgment.&lt;/p&gt;
&lt;p&gt;The last step is explaining the Impact of the person on us, the team, and the organization. This is the part we objectively approach the overall picture. In the SBI model, the Impact usually defines the person’s behavior in a few sentences. However, when working with blame absorbers, we have to add more information to show them how their behaviors create problems.&lt;/p&gt;
&lt;p&gt;As they absorb the blame, they suck themselves in a black hole and often can’t see the overall picture. Therefore, we need to show them how they create responsibility conflicts. We need to explain when they take extra responsibility—which doesn’t belong to them—it confuses people and makes them adversaries. Then, we need to show them how the overall system is and why taking unnecessary responsibility nudges others to act in an adversarial way.&lt;/p&gt;
&lt;p&gt;The explanation should be done with empathy and humility, not in a preacher or prosecutor mode. Instead of blaming them, we have to explicitly show we want to help these people. Before giving feedback using the SBI model, it’s also helpful to explain the SBI model and how it works. It opens their mind if they haven’t heard the model before.&lt;/p&gt;
&lt;p&gt;While explaining, we also have to be careful not to load all responsibility into ourselves or the system. We should let the blame absorber understand how all the factors play a role by showing them together. We need to help them understand their part and take full responsibility for that part, not others.&lt;/p&gt;
&lt;p&gt;Blame absorbing is a habit, and changing habits is a difficult process. This approach won’t work like magic when we only do it once. Changing behaviors need constant iteration and willingness to change. If the person puts on the defence walls, we have to re-iterate our approach. Probably, we’ve done something wrong on the way, and they brought up the walls. We have to build trust first and listen to them with empathy. The change won’t happen quickly; it will need time and effort. We have to be patient and not give up.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/systematic-approach-to-give-feedback-to-blame-absorbers/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/systematic-approach-to-give-feedback-to-blame-absorbers/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Coaching for Responsibility</title><link>https://candost.blog/notes/31c/</link><guid isPermaLink="true">https://candost.blog/notes/31c/</guid><description>Don&apos;t fire people when they fail. Encourage them to fail fast and ensure responsibilities are balanced.</description><pubDate>Fri, 18 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let people be responsible while doing the work and when they have the results. If you let them work only and take responsibility when something fails, you&apos;re not a good leader. It&apos;s not different from taking all the credit when a project succeeds. You&apos;re taking away all the learning opportunities. Let people own their mistakes. I&apos;m not saying fire them because they made mistakes. Instead, encourage them to learn from their mistakes and even ensure they learn. Coach them to fail early so they won&apos;t get into trouble if they fail too late because late failures usually bring big problems. Early failures enable us to learn iteratively. Iterative learning sticks, and they are effective.&lt;/p&gt;
&lt;p&gt;Don&apos;t fire people when they fail. If you fire a person just because they failed, you&apos;re not learning. You&apos;re putting all the responsibility on that person and missing many learning opportunities.&lt;/p&gt;
&lt;p&gt;Encourage people to fail fast. The responsibilities have to be balanced. Nobody should have full responsibility, even if they are working alone. Ensure they share the responsibility with the people surrounding them. Look at it holistically and understand how multiple factors and people contribute to the problem. Take ownership of your side and responsibilities, not everyone else&apos;s.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/35/&quot;&gt;35: Protective Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/31c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/31c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #26: How to Create a Definition of Done in Your Team</title><link>https://candost.blog/newsletter/mektup-26/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-26/</guid><pubDate>Tue, 08 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;/newsletter/mektup-25/&quot;&gt;the last Mektup&lt;/a&gt;, I talked about why you need to develop a Definition of Done (DoD) and what it is. Today, I will talk about creating one in the team. The Definition of Done is unique to the team, and it&apos;s an agreement with stakeholders.&lt;/p&gt;
&lt;p&gt;First, you need to define who your stakeholders are. In product companies, these people are often the Product Managers, Team Leads, Engineering Managers, or any other manager leading the team. If engineers don&apos;t have this level of management in the team, then stakeholders are the people who are responsible for the team&apos;s deliverables and accountable for the overall work. Don&apos;t confuse these people with project stakeholders who usually don&apos;t care about developing a feature or a project. Project stakeholders only care about if you deliver it on time or not.&lt;/p&gt;
&lt;p&gt;The first step to developing a DoD is &lt;strong&gt;getting together&lt;/strong&gt; with all engineers, designers, quality assurance folks, project/product managers, engineering managers, team leads, or any other manager who is accountable and responsible for the team&apos;s work. During this time together, everybody will write down their expectations from a finished work from their perspective. You can use Post-its—virtual or physical—and write down one item in each Post-it. Give everybody fifteen minutes to write their expectations down without too much thinking or pondering on them.&lt;/p&gt;
&lt;p&gt;The next step is &lt;strong&gt;identifying the shared expectations&lt;/strong&gt;. Group post-its that mention similar expectations. Then, as a group, start from the largest group and discuss why people think that expec­tation should be in DoD. The goal is to identify common ground, find people who disagree with the expectations, and have a healthy debate. One by one, from the biggest group to the smallest group of post-its, discuss with your team. To keep the discussions on time, set a maximum of five minutes for each group and have a decision in the end whether the expectation should be in DoD or not. If you need more time in discussions, extend it by one minute each time.&lt;/p&gt;
&lt;p&gt;Once you have listed all your· expectations, go over them and identify if all expectations are appli­cable to your projects. If any expectation is not suitable for all of your work, mark them either &quot;optional&quot; or &quot;if applicable.&quot;&lt;/p&gt;
&lt;p&gt;While going over the list again, &lt;strong&gt;think about if you can meet all the expectations&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;all the time&lt;/strong&gt;&lt;/em&gt;. Don&apos;t try to come up with an exhaustive list. &lt;strong&gt;The DoD should have only the bare minimum.&lt;/strong&gt; It shouldn&apos;t contain wishful thinking; it should include essential items in your work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Once you&apos;re done with the DoD, set a timeframe to try it&lt;/strong&gt;. I found six to eight weeks a reasonable time frame that people can adapt to a new process and realize the invalid or missing points in DoD. &lt;strong&gt;During this testing period, try to enforce the DoD as much as possible.&lt;/strong&gt; For example, add it to your pull request templates if you use GitHub or integrate it in your flow as a checklist in Jira.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Once your testing period is over, iterate and refine the DoD.&lt;/strong&gt; Prune unnecessary or inapplicable items and add missing ones. When you&apos;re done, announce it to everyone around your team, especially to all your stakeholders and other teams you often collaborate with.&lt;/p&gt;
&lt;p&gt;After you have it defined, &lt;strong&gt;I recommend keeping it as a living document and reviewing it every six months.&lt;/strong&gt; Our projects evolve, and we change our workflows in time. It&apos;s crucial to keep DoD up-to-date with our evolving processes.&lt;/p&gt;
&lt;p&gt;Before we end this letter, I have one last tip. Look out for the items in DoD that you can automate. If you can somehow automate any item in any way, it is definitely worth the effort.&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S. &lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;If anyone objects to your Definition of Done, you know how to overcome them.&lt;/a&gt;​&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;A Quote I&apos;m Pondering&lt;/h2&gt;
&lt;p&gt;This quote is from The Wise Man&apos;s Fear by Patrick Rothfuss. During the conversation, two people talk about a game they are playing. I found Bredon&apos;s point as a valuable lesson to the many things in life.&lt;/p&gt;
&lt;p&gt;He gestured at the brief and brutal lay of stones between us. &quot;Look at that. Why would I ever want to win a game such as this?&quot; I looked down at the board. &quot;The point isn&apos;t to win?&quot; I asked.&quot;The point,&quot; Bredon said grandly, &quot;is to play a beautiful game.&quot; He lifted his hands and shrugged, his face breaking into a beatific smile. &quot;Why would l want to win anything other than a beautiful game?&quot;&lt;/p&gt;
&lt;h2&gt;Today I Learned&lt;/h2&gt;
&lt;p&gt;Yesterday was &lt;strong&gt;&lt;a href=&quot;https://www.equalpayday.de/&quot;&gt;Equal Pay Day&lt;/a&gt;&lt;/strong&gt; in Germany, marking the date that women are working up to yesterday for free due to the gender pay gap. It&apos;s coincidental that today is International Women&apos;s Day.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-26/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-26/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why Should Leaders Have Good Storytelling Skills in Reorganizations or Restructurings?</title><link>https://candost.blog/why-should-leaders-have-good-storytelling-skills-in-reorganizations-or-restructurings/</link><guid isPermaLink="true">https://candost.blog/why-should-leaders-have-good-storytelling-skills-in-reorganizations-or-restructurings/</guid><description>Reorganizations and restructurings demand a clear understanding of the reasons and require good storytelling skills to convince people.</description><pubDate>Mon, 07 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Giving any information to the team as a manager is like acting in a theater. As leaders, our tone, facial expressions, and mimics set the audience’s feelings. We build stories to navigate people through the mist and bring them into the sunshine. In stories, people don’t follow words; they follow emotions. Using the proper tone in the statements becomes a way to influence people. Good storytelling skills help us give the message clearly and expose the correct feeling at the right time.&lt;/p&gt;
&lt;p&gt;Especially making significant changes in the organization demands a clear understanding of the reasons and requires good storytelling skills to convince people. We must clarify that these changes are for the greater good, although they might not be the best for specific individuals. Stories empower these situations and enable the leaders to convey the reasons while setting the emotions right.&lt;/p&gt;
&lt;p&gt;Stories’ strength doesn’t come from only the language we use but also the emotion that the information brings to the listeners—excitement, sadness, relief, frustration, and more. Like many stories, we want to arrive at a happy ending, but how we get there is often ambiguous.&lt;/p&gt;
&lt;h2&gt;Why The Story?&lt;/h2&gt;
&lt;p&gt;How we tell the story becomes as important as what the story is about. Even though the news may sound bad for certain people, we can positively impact them by choosing a sympathetic tone.&lt;/p&gt;
&lt;p&gt;Organizational restructuring can be frustrating or exciting for different people. We can encourage people in a steep growth trajectory to leverage these organizational restructurings. Also, if we have folks who wish stability in the team, we can inspire them to see the advantages of restructurings.&lt;/p&gt;
&lt;p&gt;On the other hand, when we choose a frustrated tone because people have to move to another team, everyone will be frustrated. Whatever style we choose will reflect on the other side.&lt;/p&gt;
&lt;p&gt;If there is transparency and the team knows the background of the decision, it’s okay to rush to the story’s ending. However, if there is a lack of transparency, having the emotional roller coaster becomes the connection we have with our teams. &lt;a href=&quot;/the-must-have-skill-for-every-leader-listening-with-empathy/&quot;&gt;We have to ride this rollercoaster with them to eliminate their fears.&lt;/a&gt; They have to feel the correct emotions at the right time. When we hurry and unnecessarily push people, we block their feelings—which can come out later on where we least expect.&lt;/p&gt;
&lt;h2&gt;The Tone of The Message&lt;/h2&gt;
&lt;p&gt;Leaders’ approach and tone in the team discussions impact the discussions’ fate. If we have bad news and announce it to the team in a frustrated mood, the team will get stressed and frustrated. However, whatever the announcement is, if we set the tone inspiring and optimistic, people will approach it more favorably. The essential part is choosing the tone and narrative.&lt;/p&gt;
&lt;p&gt;Organizational changes are frightening but often necessary for growth. Wherever we announce changes, we should choose a positive tone. Sometimes we can be frustrated and sad because changes might come as top-down decisions, and maybe we will depart our ways with some people. However, it’s beneficial to choose our strategy of showing our frustration to the team. Finding the balance is complicated, and showing vulnerability is necessary to be authentic.&lt;/p&gt;
&lt;p&gt;Reorganizations or restructurings are done for a good reason, either for the organization or the people—at best, for both. It’s better to show an optimistic view when announcing changes to the team, project, or organization. Hiding the frustration can motivate people to get on board.&lt;/p&gt;
&lt;p&gt;Many leaders hide emotions under the “being professional” label. Being professional means doing your job and getting paid for it. Being professional doesn’t mean being emotionless; it means showing the right emotion at the right time and place.&lt;/p&gt;
&lt;p&gt;Being mindful is the key here. Understanding the psychology of the team and people and preparing the message in the correct tone and words are crucial skills that any leader should master. A strategy for hiding or showing emotions should be developed by thinking like a storyteller. Depending on which story we’re telling people, our approach should always differ.&lt;/p&gt;
&lt;h2&gt;Narrative and Storytelling&lt;/h2&gt;
&lt;p&gt;Storytelling skill is often taught as presentation skill. However, it’s a bit different. Giving presentations improve storytelling, it’s true, but when we give information in the daily standup or weekly team meeting, our words and body language become our presentations in a limited time. We have to use them wisely.&lt;/p&gt;
&lt;p&gt;Many software engineering leaders are analytical. They cut the chase and give the information without any stories. When we do this, we leave the emotions to the people. If the message doesn’t have any narrative, doesn’t guide people’s feelings, and it’s &lt;em&gt;just on point&lt;/em&gt;, people will hear it with whatever emotion they have at that time. They will go into various unknown places and will be lost.&lt;/p&gt;
&lt;p&gt;To eliminate chaos even before it occurs, we have to present the reorganization’s background, reasons, the execution plan, and the expected outcome in the correct order. Many leaders don’t even think about these different parts of a story, and their narratives create confusion. In which order we build the narrative depends on the situation and the people involved in the reorganization.&lt;/p&gt;
&lt;p&gt;Whenever the narrative, the structure, and the tone are apparent, it gets easier to onboard in the restructurings. When we think about it, even non-fiction books and articles make us feel &lt;em&gt;something&lt;/em&gt;. These articles and books keep our curiosity alive while feeding us with information. We’re neither writing a book nor an essay, but whatever we announce has to have the story elements to be impactful. Otherwise, it will be only an analytical statement that creates chaos and leaves everyone with mixed feelings.&lt;/p&gt;
&lt;p&gt;Complement with listening to &lt;a href=&quot;https://candost.substack.com/p/18-managing-organizational-changes&quot;&gt;Managing Organizational Changes Podcast Episode&lt;/a&gt;, and reading &lt;a href=&quot;/communicating-decisions-in-the-organizations/&quot;&gt;Communicating Decisions In The Organizations&lt;/a&gt;, &lt;a href=&quot;/bias-towards-action/&quot;&gt;Bias for Action&lt;/a&gt;, &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;The Decision-Making Pendulum&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/why-should-leaders-have-good-storytelling-skills-in-reorganizations-or-restructurings/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/why-should-leaders-have-good-storytelling-skills-in-reorganizations-or-restructurings/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Yet I Cried; One More Time</title><link>https://candost.blog/yet-i-cried-one-more-time/</link><guid isPermaLink="true">https://candost.blog/yet-i-cried-one-more-time/</guid><description>I cried over the last week. I cried with different feelings. The wars create many different feelings in us. It creates conflicts within us. I cried a lot over the last week. This time, I know why I cried.</description><pubDate>Thu, 03 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I cried five days ago.&lt;/p&gt;
&lt;p&gt;I cried for the Ukrainians. The people who are dealing with the Putin regime. The people whose country is invaded.&lt;/p&gt;
&lt;p&gt;I cried four days ago.&lt;/p&gt;
&lt;p&gt;I happily cried for the Ukrainian refugees and how Western countries offer endless help to them. I cried proudly and heartwarmingly. I cried with pridefulness for Polish folk who opened all the borders to Ukrainians. I happily cried for all the support Ukraine received from Westerners.&lt;/p&gt;
&lt;p&gt;I cried three days ago.&lt;/p&gt;
&lt;p&gt;I cried for losing the peace in Europe. I cried because I moved to Europe for safety. I cried for not feeling safe again.&lt;/p&gt;
&lt;p&gt;While crying, a teardrop fell down, a different one. The teardrop was screaming at me for the hypocrisy of Westerners.&lt;/p&gt;
&lt;p&gt;I cried more on that day. This time for Syrians and how they were, and still are, treated in Europe.&lt;/p&gt;
&lt;p&gt;I cried for Turkey, my home country, which hosts the most refugees globally.&lt;/p&gt;
&lt;p&gt;I cried for Germany, who did many things to take as many refugees as possible in both cases. That teardrop was happier.&lt;/p&gt;
&lt;p&gt;Another drop fell for the rest of the EU, which didn&apos;t lift an arm to accept Syrian refugees. I cried for their two faces: one face for welcoming Ukrainian people because they look familiar and another for throwing tear gas bombs at various refugee groups on the EU border because they look different.&lt;/p&gt;
&lt;p&gt;Two days ago, I cried my eyes out.&lt;/p&gt;
&lt;p&gt;I saw that racism plays its role in wartime as well. I cried after hearing, &lt;a href=&quot;https://www.youtube.com/watch?v=2z9UyPurVok&quot;&gt;&quot;Ukrainians are just like us; they are white Christians with blue eyes.&quot;&lt;/a&gt;
I cried more after seeing &lt;a href=&quot;https://www.youtube.com/watch?v=nXhQQd46e2o&quot;&gt;how people of color are treated by the Ukrainian police forces on the Ukrainian border&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I cried even more after hearing, &lt;a href=&quot;https://www.youtube.com/watch?v=2z9UyPurVok&quot;&gt;&quot;These are Ukrainian people, not Syrians or Iraqis coming from the Middle East.&quot;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I cried once more for those who think Ukrainians are better than Middle Easterners. What a horrible life they must have to live with this perspective. What a sad moment for all of us listening to this.&lt;/p&gt;
&lt;p&gt;Yesterday, I cried again for everyone who had to deal with the war in the middle of the pandemic, not only Ukrainians but also Syrian, Taiwanese, Venezuelan, and African people.&lt;/p&gt;
&lt;p&gt;Yesterday, I cried for past myself, for young me, for not seeing things clearly. I cried for my previous thoughts like, &quot;I&apos;m better than others because I&apos;m living in a safe country.&quot; What a horrible perspective I had before.&lt;/p&gt;
&lt;p&gt;Today, I proudly cried for the Russian academics for &lt;a href=&quot;https://trv-science.ru/en/2022/02/we-are-against-war-en/&quot;&gt;bravely announcing their opposition to the invasion of Ukraine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I know I cry a lot.&lt;/p&gt;
&lt;p&gt;But most of these are crying inside because I&apos;ve seen a lot in this world only in 30 years.&lt;/p&gt;
&lt;p&gt;I lived in insecure places. &lt;a href=&quot;https://en.wikipedia.org/wiki/2015_Ankara_bombings&quot;&gt;The places I walked a lot were bombed&lt;/a&gt;, and there was a high possibility of me dying in one of the bombings.&lt;/p&gt;
&lt;p&gt;I moved and lived in multiple countries, and I have seen how a lot of people are the same and selfish. And many of them have no idea about these kinds of lives.&lt;/p&gt;
&lt;p&gt;I cried inside because I also lived a privileged life in comparison.&lt;/p&gt;
&lt;p&gt;I was able to cry and not deal with the war itself. I was privileged not to see a dead body with my own eyes. I am still privileged to live in a safe country while writing my thoughts.&lt;/p&gt;
&lt;p&gt;I am saving my real teardrops for my future because I know I need them. I will probably cry more tomorrow for all the people who will lose their lives in someone else&apos;s greedy war.&lt;/p&gt;
&lt;p&gt;I will remember seeing a Russian helicopter getting hit and exploding. I will cry for that Russian soldier in the same way I cried for the Ukrainian soldier who lost a life because of a Russian tank.&lt;/p&gt;
&lt;p&gt;I won&apos;t forget seeing the parents of the Turkish soldier who lost his life in Syria.&lt;/p&gt;
&lt;p&gt;I won&apos;t forget &lt;a href=&quot;https://www.theguardian.com/world/video/2017/aug/02/escape-from-syria-ranias-odyssey-video&quot;&gt;watching the Syrian refugee&apos;s journey to Europe&lt;/a&gt; to safety. I won&apos;t forget watching that movie in the cinema while the person who recorded it was sitting next to me and had to leave the cinema because she couldn&apos;t watch herself going through the horrible journey again.&lt;/p&gt;
&lt;p&gt;I know I will cry with sadness tomorrow, but it&apos;s okay. I got used to it.&lt;/p&gt;
&lt;p&gt;Crying opened my eyes. I know this hypocrisy and racism do not live only among Westerner folks; it&apos;s everywhere. I see things more clearly now, unlike some Westerners and all the other folks around the world who need another lens in life.&lt;/p&gt;
&lt;p&gt;I know I will cry with contentment tomorrow for all the fantastic Westerners and others who don&apos;t think people are different and treat everyone&apos;s race and nation the same.&lt;/p&gt;
&lt;p&gt;I know that there are still people who think above the nations and offer help to everyone.&lt;/p&gt;
&lt;p&gt;And tomorrow, I hope to drop my happy tears for them.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/yet-i-cried-one-more-time/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/yet-i-cried-one-more-time/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Confident Humility</title><link>https://candost.blog/notes/7/</link><guid isPermaLink="true">https://candost.blog/notes/7/</guid><pubDate>Mon, 28 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I think about managers I&apos;ve worked with, the best ones were the ones who say, &quot;I don&apos;t know&quot; or &quot;I was wrong.&quot; They knew their weaknesses in the team or, in general, in the company. Instead of hiding them, they embraced them and allowed others to fill the gap in their knowledge. They also knew their strengths. They were confident in some areas they knew they were good at. However, they also accepted that they were wrong more, even in their confidence area. They were always open to learning. Now, there is a term for their behavior: confident humility. That&apos;s what they had.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46a/&quot;&gt;46a: Intentions, Behaviors, and Their Impact&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/7/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/7/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #25: You Need A Definition of Done in Your Team</title><link>https://candost.blog/newsletter/mektup-25/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-25/</guid><pubDate>Tue, 22 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;In the last Mektup, I mentioned the Definition of Done when discussing reliability. Now, I want to dig deeper into it and explore why you and your team need one.&lt;/p&gt;
&lt;p&gt;If you hear someone says, &lt;em&gt;&quot;The work is done,&quot;&lt;/em&gt; but they need to do some minor things or add tests to ensure everything works, the work is actually not &lt;em&gt;&quot;done&quot;&lt;/em&gt;! These situations appear more when there is no agreement about what Done means. Without the explicit Definition of Done (DoD), I always see that people use various definitions they &lt;em&gt;imagined&lt;/em&gt;. Especially when tasks depend on each other, a different understanding of Done can cause misaligned expectations, conflicts, and double work.&lt;/p&gt;
&lt;p&gt;Instead of &lt;strong&gt;&lt;a href=&quot;/explicit-disagreement-is-better-than-implicit-misunderstanding/&quot;&gt;implicit misunderstandings&lt;/a&gt;&lt;/strong&gt;, we need to make our processes as explicit and transparent as possible and create a common language for the phrases we use. Working agreements and using the same language enable us to focus on crucial and complex issues and free our brainpower.&lt;/p&gt;
&lt;h2&gt;What is the Definition of Done?&lt;/h2&gt;
&lt;p&gt;The Definition of Done is a written agreement between team members and stakeholders that people can point to when the other side is breaking it. We can think of it as a contract. Wherever we deliver work, we can ensure what is included and what&apos;s not.&lt;/p&gt;
&lt;p&gt;DoD is not only for better communication but also for quality and best practices. Ensuring we deliver high-quality work is often a debate between engineer and product teams. While product teams (e.g., product managers) want to push the feature to market quickly, engineers want to produce high-quality software. Once the quality is part of DoD, it becomes easier to negotiate and agree with product managers/owners.&lt;/p&gt;
&lt;p&gt;For example, suppose having unit and integration tests are part of DoD. Whenever our stakeholders push us to release the feature early and communicate that we&apos;re done with the feature, the engineering side can quickly raise a flag and say, &quot;Sorry, we&apos;re not done yet. As we agreed on DoD, tests are missing, and we have to do that before the release.&quot; This way, we prevent a possible tech debt, raise our confidence in our work and achieve consistent product quality.&lt;/p&gt;
&lt;h2&gt;What should you include in the Definition of Done?&lt;/h2&gt;
&lt;p&gt;The beauty of DoD is its uniqueness for the team. Every team has different operational routines. DoD can be generalized to the company at a higher level, but teams always differ according to their projects and stakeholders. For example, creating one DoD that covers both DevOps and product teams won&apos;t be easy. Having separate DoD is better for every team.&lt;/p&gt;
&lt;p&gt;I won&apos;t go into the process of creating a DoD today; that will be the next Mektup. But let me leave one example of the Definition of Done that we used in our backend team to give you an idea of what it can include.&lt;/p&gt;
&lt;h2&gt;Example Definition of Done&lt;/h2&gt;
&lt;h3&gt;Implementation Complete&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Acceptance criteria are met.&lt;/li&gt;
&lt;li&gt;Appropriate alerting and monitoring are configured.&lt;/li&gt;
&lt;li&gt;Appropriate error handling and logging are implemented.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Quality Assurance&lt;/h3&gt;
&lt;h4&gt;Code Review&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Pull request is created, reviewed, and approved by another engineer.&lt;/li&gt;
&lt;li&gt;Pull requests have;
&lt;ul&gt;
&lt;li&gt;A link to the relevant ticket, which is meant to resolve.&lt;/li&gt;
&lt;li&gt;Have a short description of why that specific approach is taken during the implementation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Testing&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Appropriate testing is implemented (unit, smoke, integration, end-to-end).&lt;/li&gt;
&lt;li&gt;Tests are passed in the continuous integration (CI) before merging the pull request.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Release&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Deployed to the relevant environment(s).&lt;/li&gt;
&lt;li&gt;The Jira board and relevant tickets are updated.&lt;/li&gt;
&lt;li&gt;Stakeholders are informed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A Definition of Done is a living agreement, which means whenever we recognize that our operation is changed, the DoD needs an update. Teams, companies, and products evolve and change often, and we have to acknowledge these changes and apply them to our agreements.&lt;/p&gt;
&lt;p&gt;In the next Mektup, I will talk about developing a Definition of Done for your team and how you can agree on it with your stakeholders.&lt;/p&gt;
&lt;p&gt;Do you already have a definition of done? If yes, how does it work for you?&lt;/p&gt;
&lt;p&gt;Looking forward to your answer. Thanks in advance!&lt;/p&gt;
&lt;p&gt;​— Candost&lt;/p&gt;
&lt;h3&gt;A Quote I&apos;m Pondering&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Your success in life will be determined largely by your ability to speak, your ability to write, and the quality of your ideas. In that order.&quot; — &lt;a href=&quot;https://www.youtube.com/watch?v=Unzc731iCUY&quot;&gt;Patrick Winston&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Today I Learned&lt;/h3&gt;
&lt;p&gt;Grammarly has a desktop app (in addition to its desktop editor) that works almost in every app. 😍&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-25/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-25/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Do Not Change Jobs</title><link>https://candost.blog/do-not-change-jobs/</link><guid isPermaLink="true">https://candost.blog/do-not-change-jobs/</guid><description>If you ask me my advice would be to mid-level software engineers these days, it would be to stay where you are if you don’t have a stressful problem and if you’re learning.</description><pubDate>Fri, 18 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you ask me what my advice would be to mid-level software engineers these days, it would be to stay where you are if you don’t have a &lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;stressful problem&lt;/a&gt; and if you’re learning. Changing the company feels exciting (new adventures, new type of learning), and often it pays more. Especially with the &lt;s&gt;great resignation&lt;/s&gt; job-changing wave, it is even more urging to hop to another company. However, the challenges and advantages of staying are often overlooked.&lt;/p&gt;
&lt;p&gt;I’ve seen some engineers change jobs every 1-3 years, and some stayed in the same company for 5- 10 years. Every single time, I realized something different in engineers with long tenure. It was not easy to define. Every time, I thought they were wiser, but it was untrue. I thought the accu­mulated knowledge made them &lt;em&gt;special&lt;/em&gt;. Although the knowledge made them valuable to the company, it didn’t make them special. Knowledge made their job—and ours—easier. After struggling to define it, I decided to uncover it by looking at myself.&lt;/p&gt;
&lt;p&gt;I’ve been working in Jimdo since July 2016, almost six years now. During my time here, I’ve witnessed a lot of stuff: sunsetting projects, monoliths, microservices, native mobile apps, cross-platform mobile apps, in-office teams, hybrid teams, remote teams, unsuccessful and successful initiatives, jaw-dropping-amazing projects, and stuff that didn’t make sense at all; you name it. I’ve seen many projects completed, abandoned, over-achieved, half-completed, put into the trash. We can argue that these things happen in every company, and even I changed jobs often, I can, and will, come across them. Then, what’s the difference in longer tenure?&lt;/p&gt;
&lt;p&gt;It’s gaining a new perspective and long-term thinking.&lt;/p&gt;
&lt;p&gt;I think most engineers work on projects that other engineers developed. We all see how the judgment of the previous developer is “wrong” every day. We also &lt;em&gt;assume&lt;/em&gt; that we won’t be the same and will have better judgment. Yet the next developer after us &lt;em&gt;always&lt;/em&gt; feels the same. The story doesn’t change until we see our older self’s mistakes and failures, become the previous developer to ourselves and see how the company’s decisions had long-term consequences.&lt;/p&gt;
&lt;p&gt;Seeing not only our past self’s wishful thinking but observing the company’s previous decisions and how they played out is an eye-opening experience. For example, Jimdo moved from monolith to microservices a few years back. Although I was not involved in that decision, I observed from the consumer side as an iOS engineer. Did we guess what would be drawbacks at that time? I’m sure we did. However, after years, we started to realize the real drawbacks and the work we had to put into it. If I have left after a year or two, how could I see any long-term impact of this decision? Now, I know how much effort this move requires and its challenges.&lt;/p&gt;
&lt;p&gt;Let’s take a non-technical example, an extreme one. In my fourth month, Jimdo had lay-offs and reduced the workforce. Some of my amazing colleagues were out of jobs. It was a painful moment. If I had left after that event, there was no chance to see how this decision impacted the company as a whole. Now, we couldn’t be in the same position if we didn’t have this decision. Was it the best decision? Probably, no. I’m sure there were better options, but I’m also sure that the people who made the decision evaluated the other options. All I know is that the decision was for both the short-term and longer-term. Leaving in the middle would make me blindfolded to long-term consequences.&lt;/p&gt;
&lt;p&gt;It doesn’t matter when we leave; there will always be a consequence of a decision we will miss when we do. The questions are “have we seen enough?” and “Does the leave compensate for the experience we will get in long-term thinking?”&lt;/p&gt;
&lt;p&gt;If you’re leaving for more money or safety, I will never argue. If you’re leaving for a different type of experience (e.g., &lt;a href=&quot;/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/&quot;&gt;remote work vs. in-office&lt;/a&gt;, big co vs. start-up) or for different company culture, I won’t argue at all. If the environment is not toxic or not draining your energy and you’re still learning, then why leave the company? If you’re leaving your company because the market is hot right now and your company can’t give you a raise &lt;a href=&quot;https://www.oreilly.com/library/view/your-money-the/9780596809430/ch01.html?ref=candosts-space#the_fulfillment_curve&quot;&gt;that might not even change your life&lt;/a&gt;, then maybe you should question again. Don’t get caught in the &lt;s&gt;great resignation&lt;/s&gt; current job-changing wave.&lt;/p&gt;
&lt;p&gt;Even if you do leave in the end, be aware of the trade-off you’re making. If you haven’t stayed in a fast-moving company for more than four years, there is a great experience you’re missing.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/do-not-change-jobs/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/do-not-change-jobs/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #24: One of the best superpowers you can get as an engineering leader</title><link>https://candost.blog/newsletter/mektup-24/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-24/</guid><pubDate>Tue, 08 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Today, I want to talk to you about one thing that made a big difference in my career and life. People gave me positive feedback many times, and it became one of my superpowers: I&apos;m a reliable person. I&apos;m not here to brag or so but to give you a perspective on how one word can—reliability—can impact your career and, frankly, your whole life.&lt;/p&gt;
&lt;p&gt;It all starts and ends with trust. &lt;strong&gt;If you&apos;re reliable, people trust you.&lt;/strong&gt; They trust you that you will do the work, they know that you will be there when they need you, and they become confident that you will show up and do whatever it takes to finish the work you took over.&lt;/p&gt;
&lt;p&gt;I&apos;ve seen many unreliable engineers deteriorating their career growth because they left things behind and didn&apos;t keep their promises. What&apos;s surprising is that what they had to do was usually minor and straightforward, but they didn&apos;t bat an eyelash. I know some things might be straightforward to me but not to others. &lt;strong&gt;However, when I asked about what they should have done, they all knew the next steps. They just didn&apos;t do it for a variety of reasons.&lt;/strong&gt; In these cases, having a good manager or mentor can boost reliability as they help you find what&apos;s essential and what you should do next.&lt;/p&gt;
&lt;p&gt;What I&apos;ve seen more is that many experienced engineers and leaders leave things behind and just move their focus to something else (often new or hype things). Many folks don&apos;t complete the thing they started and leave things in an unfinished state. I get it; all of these experienced folks are busy. But I can&apos;t accept that there are tons of incomplete initiatives and projects waiting for someone else to pick up.&lt;/p&gt;
&lt;p&gt;When you&apos;re growing into leadership roles, you will have multiple initiatives and projects run in parallel. Following up on the work and being reliable will become complicated by the minute. Between many initiatives, various dependencies, and different stakeholders, there will be a few things you can be aware of and improve.&lt;/p&gt;
&lt;h2&gt;How to Become More Reliable&lt;/h2&gt;
&lt;p&gt;Being reliable is not a checkpoint that you have to pass. It will happen in time, and all you need to do is keep your promises (sounds simple, right?). &lt;strong&gt;If you say that you will take care of something, take care of it. Don&apos;t let it slide.&lt;/strong&gt; Although reliability doesn&apos;t have a handbook, I want to share some concrete tips to help you organize your work to become reliable.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Commit a realistic amount of work.&lt;/strong&gt; This alone is not easy, and it requires &lt;strong&gt;&lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;prioritization skills&lt;/a&gt;&lt;/strong&gt;. If someone asks you to do a task, ask about a timeline and the scope. If you think you need to do overtime, either say no or delegate the job or delegate another job of yours to someone else to open up a space.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Split the work into chunks and deliver them one by one.&lt;/strong&gt; One of the things I&apos;ve come across in engineering is tackling tasks as big blocks. Whatever job you get, split it into a few pieces and work on them separately. If you&apos;re not hands-on working on the task and leading it instead, nudge people to divide the task into smaller pieces and deliver them one by one. When you keep delivering the work, people start trusting you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create a definition of done (DoD) in your team(s).&lt;/strong&gt; Often what &lt;em&gt;done&lt;/em&gt; means differs for every team and every person. Aligning everyone in one definition helps a lot in discussions between team members and different stakeholders. With one definition, whenever you say the task is done, others will understand what it means, and the terms such as &quot;done done,&quot; or &quot;done done done&quot; will fade out. I&apos;ve initiated the implementation of DoD before at the organizational level. I will talk about it in the next Mektup about how you can start the discussions and develop a Definition of Done.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use a task-tracking system for yourself.&lt;/strong&gt; In addition to what you use in your team (Scrum, Kanban, or any other board), create a system only for you. Keep it simple. Write down every task you have in that system. It doesn&apos;t matter if it&apos;s a 10-minutes thing or not; put it there. I have my own &lt;strong&gt;&lt;a href=&quot;https://www.personalkanban.com/&quot;&gt;Personal Kanban&lt;/a&gt;&lt;/strong&gt;, and I love it because it helps me see all my work. I create a new card (or post-it) for every task and freely move it between columns suited to &lt;em&gt;my work&lt;/em&gt;. While the team project tracking boards reflect your team&apos;s workflow, your personal tracking system reflects YOUR workflow, and you will see it&apos;s not the same.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Communicate, communicate, and &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;communicate once more&lt;/a&gt;.&lt;/strong&gt; You would be surprised to see how many tasks I stopped working on mid-way, but my reliability didn&apos;t get a hit at all. I always told people about it and explained the reasons instead of leaving the task unfinished and hoping that people would forget. If there is a chance that you will delay the delivery of a task, communicate with the stakeholder and explain the reasons. The key is communicating all way through.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If you have to drop a task because of other priorities, find a person to whom you can delegate the task.&lt;/strong&gt; As you become a leader, you should start matching tasks with people&apos;s skills and career plans and delegate them accordingly. Communicate this handover with your team and stakeholders and explain that you&apos;ll help the person when needed, but the new person will run the job.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Officially stop the project or task if you see that it doesn&apos;t provide value anymore or you simply have no time and can&apos;t delegate to another person.&lt;/strong&gt; Instead of leaving the projects in an unfinished state, officially close them. If you do, write down why you made that decision as it will help future you when someone asks about abandoned projects.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope these tips will help you. I know there is a lot there, and it might overwhelm you, but overall, they are easy to apply once you pay a bit of attention to them. Becoming reliable won&apos;t happen overnight; it&apos;s a long-term investment. This investment is not a risky bet and has a great return. Put some time and energy into it, and you won&apos;t regret it.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-24/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-24/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Being Morally Good in The War of Life</title><link>https://candost.blog/being-morally-good-in-the-war-of-life/</link><guid isPermaLink="true">https://candost.blog/being-morally-good-in-the-war-of-life/</guid><description>Do we know how to live? Are we expecting to have a great life because we&apos;re morally good? Do we know how to fight? Learning how to fight separates the good people from the winning people.</description><pubDate>Fri, 04 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Life is a war—a long war between happiness and others. In every battle of this war, we expect fairness—be happy as much as others and be treated as equals. From childhood, I was taught that people who are morally good and lawful will always win this war. That&apos;s who I wanted to be. All the movies, books, and religions taught me sticking the goodness will always result in happy endings. My parents, grandparents, friends, and relatives believed in this idea; we all believed in it together.&lt;/p&gt;
&lt;p&gt;All my life, I&apos;ve been waiting for this war to end. It&apos;s been thirty years, and with this expectation, I cannot survive; we cannot survive. There is no end to this war. Being morally good doesn&apos;t help happiness to grow. It helps to become a better person in society, that&apos;s all. Being a better person doesn&apos;t guarantee winning the war; it doesn&apos;t make me the best person in &lt;em&gt;my&lt;/em&gt; war.&lt;/p&gt;
&lt;p&gt;Ursula K. Le Guin was right when she separated a morally good man from the best man in a fight.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&apos;Let the best man win&apos; doesn&apos;t mean the good man will win. &apos;This will be a fair fight, no prejudice, no interference—so the best fighter will win it.&apos; If the treacherous bully fairly defeats the nice guy, the treacherous bully is declared champion.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Learning the best man is not the good man takes a long time for us—as it took thirty years for me. We have to forget all movies we have watched, all the superheroes we&apos;ve seen—all the misperceptions. The problem is not being morally good but expecting a good outcome solely from being good. The problem is the expectancy. Ursula saw our deficient comprehension and continued,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;This is justice. But it&apos;s the kind of justice that children can&apos;t bear. They rage against it. It&apos;s not fair! But if children never learn to bear it, they can&apos;t go on to learn that a victory or a defeat in battle, or in any competition other than a purely moral one (whatever that might be), has nothing to do with who is morally better.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Might does not make right—right?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Therefore right does not make might. Right?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;But we want it to. &quot;My strength is as the strength of ten because my heart is pure.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If we insist that in the real world the ultimate victor must be the good guy, we&apos;ve sacrificed right to might. (That&apos;s what History does after most wars, when it applauds the victors for their superior virtue as well as their superior firepower.) If we falsify the terms of the competition, handicapping it, so that the good guys may lose the battle but always win the war, we&apos;ve left the real world, we&apos;re in fantasy land—wishful thinking country.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This justice is the counterpoint to our beliefs, all the things we learned, and &lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;our envisions for happiness&lt;/a&gt;. Society taught us that a good soul would eventually win, but our beliefs are shaken from the core.&lt;/p&gt;
&lt;p&gt;When we abandon the rules in real life, we lose and become weak. Our goodness doesn&apos;t make us frail; believing we, the morally good ones, will be victorious does.&lt;/p&gt;
&lt;p&gt;In the fantasy land created around us, we don&apos;t realize that the good guys are &lt;em&gt;learning&lt;/em&gt; how to fight. They lose battles, but they win the war by choosing to fight. They practice, focus, and don&apos;t give up. However, folks behind movies and TV series still move our focus to only being morally good instead of the superheroes&apos; mentality change. They still display how these heroes learn to fight, but that part never sticks with us.&lt;/p&gt;
&lt;p&gt;With all the influence on us, with knowing that real justice is different, how do we become both right and might?&lt;/p&gt;
&lt;p&gt;If life is full of problems, &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;as Mark Manson said&lt;/a&gt;, how can we choose the good problems instead of the bad ones? How can we remember the big war we&apos;re in?&lt;/p&gt;
&lt;p&gt;Not learning how to fight doesn&apos;t prepare us for most of the fights in our adulthood. The protectiveness of our families, constant support, and religion make us believe that we don&apos;t need to prepare for the fight well.&lt;/p&gt;
&lt;p&gt;As unprepared fighters, we lose battles by hoping that we will win the war because we are morally good. However, we won&apos;t. If there is no preparation, no one can win a war by being nice.&lt;/p&gt;
&lt;p&gt;People often tell me, &quot;Pick your battles wisely.&quot; But I think choosing the battles is what makes good people lose. Accepting the reality that good people lose wars, we have to choose which wars we would like to have, not the battles. Similar to deciding on which problems we will focus on, we need to choose good wars to fight. Choosing the battles is an amateur mistake while choosing the wars is a professional approach, and we need to live professionally.&lt;/p&gt;
&lt;p&gt;This phrase may sound awkward, but professionally living requires learning how to live in happiness, not in a way we&apos;re forced to do. We don&apos;t have to stick to our weaknesses and accept them. I know that some of us are privileged, and not many people have a choice to decide what they should do. However, there is always a way out to happiness. History is filled with stories of people who didn&apos;t accept their fate. &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;They learned how to fight after a long struggle.&lt;/a&gt; That&apos;s what we should do as well: know our privileges, embrace our advantages, learn how to fight and pursue happiness. Is there any other way? Will someone else (maybe our parents again) teach us? &lt;a href=&quot;/what-hades-the-game-had-taught-me/&quot;&gt;No, nobody knows our fight better than us, and we will never win anything just because we&apos;re good.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/what-hades-the-game-had-taught-me/&quot;&gt;We&apos;re alone in our fight, and we have to figure it out alone.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, it&apos;s time to accept this and start practicing. Not tomorrow.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/being-morally-good-in-the-war-of-life/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/being-morally-good-in-the-war-of-life/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #23: The closest you can get to a leading role: hosting a workshop</title><link>https://candost.blog/newsletter/mektup-23/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-23/</guid><pubDate>Tue, 25 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;When I looked around me, I realized that many growing engineers have a few things in common, but we rarely talk about them. Engineers who want to grow still focus on many technical skills, which is correct. As you get these letters, you probably know that you need other skills to grow into Staff+ Engineer or manager roles.&lt;/p&gt;
&lt;p&gt;Although people are more aware that they need to improve their human skills to level up after senior engineering, they still focus on &lt;em&gt;themselves&lt;/em&gt; more than they need. This focus can become problematic and frustrating because one of the responsibilities of staff+ software engineers or managers is growing people around them. While looking at the bigger picture and solving problems that require multi-team effort, they have to mentor and level up others (usually more than one) around them. Otherwise, they won’t get anything done.&lt;/p&gt;
&lt;p&gt;Now the question is, how did staff+ engineers move their focus from themselves and begin to grow other people’s skills? &lt;strong&gt;One of the things many senior software engineers do is host events and workshops—one of the best ways of growing people around you.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I’ve done many workshops before I became a manager, and these workshops helped me show my skills to the people I don’t work closely with. Also, I’ve seen many software engineers who host amazing workshops, and it often became one of the things people remember about them. Most of them are already at their next level, and some are on the way.&lt;/p&gt;
&lt;h2&gt;What is the power of workshops?&lt;/h2&gt;
&lt;p&gt;Workshops are not presentations. Although some of them include small presentations, they are never monologues. Workshops—in their nature—are interactive. That’s where it has the biggest power. &lt;strong&gt;When you host a workshop, this nature forces you to wear different jackets in a short time. As a moderator, you have to facilitate it, create a story, coach others in the journey, clarify questions, lead people from the beginning till the end and engage everyone—even the most silent ones.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A workshop is like a project: it has a goal, and as a host, you have to plan it, explain the value proposition, estimate the expected time, set a schedule, explain to people why you’re hosting it, what’s the benefit and why do we need it. During the workshop, when someone is not engaging, you have to engage them without being too assertive and coach/mentor right at that moment for the things they struggle with.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you look closely, you can see that many responsibilities match the expectations of staff engineers, team leads, and managers.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Facilitating a workshop is the closest you can get to being a manager or staff engineer in a short period.&lt;/p&gt;
&lt;p&gt;Workshops bring you unique sets of skills AND additional visibility. If you’re not working in a big company with all the policies defined to get a promotion, you will need some visibility to level up. Decision-makers often want to be sure that you can manage the next level’s challenges. You can hear phrases like “&lt;em&gt;You have to be doing the job before getting the title.&lt;/em&gt;” That is how it usually works in many small to mid-size organizations. These organizations typically have a lot of things on their plates. That’s why they only recognize repeated action. Once you host workshops on your team and extend it to others, you will become visible, and people will remember you for your workshop’s topic.&lt;/p&gt;
&lt;h2&gt;About what you can host a workshop?&lt;/h2&gt;
&lt;p&gt;I must admit one thing: &lt;em&gt;technical workshops rarely work&lt;/em&gt;. If you’re thinking of hosting one, be mindful, and don’t put yourself under a lot of pressure if you don’t get the expected outcome. What works is team building, problem-solving, brainstorming, strategic thinking, or any other workshop engaging all joiners.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You can use books, white papers, mental models, or anything else you’ve come across as a workshop topic.&lt;/strong&gt; You can convert many things into a workshop. For example, I’ve read a fascinating book, and I thought about doing an exercise about the book’s content. After some preparations, I started hosting a workshop at work. Later, it became one of the topics people knew my name in the company. I’ve been hosting these workshops for more than a year, and I can comfortably say that these sessions helped me a ton in my promotion.&lt;/p&gt;
&lt;p&gt;You can also host a short workshop to solve a problem. One of my managers hosted a workshop for 45 minutes to resolve conflicts in our team. They used &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Tuckman%27s_stages_of_group_development&quot;&gt;Tuckman’s Stages of Group Development&lt;/a&gt;&lt;/strong&gt; as workshop material, and we worked on it and talked about it. It required minimum preparation. The topic is really up to you. Choose something that interests you and can become an exercise and learning material for everyone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you have no topic in mind, try running a retrospective meeting for another team and be a moderator.&lt;/strong&gt; The key to retrospective moderation is being a facilitator, communicating at different levels, and keeping everybody engaged while you’re staying outside of discussions.&lt;/p&gt;
&lt;h2&gt;A few tips on successfully running a workshop&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Run it with a passion: don’t do it for the sake of doing it.&lt;/em&gt; It’s not a checklist item for promotion. When you’re not doing it with passion, participants get bored quickly, and the workshop becomes useless. If there are six people in an hour-long workshop, it means six hours will be lost, not one.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Choose a topic you enjoy first, then think about others.&lt;/em&gt; To run it with passion, you have to choose a topic that interests you.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Rehearse&lt;/em&gt;. Rehearse. Rehearse. Rehearse. Rehearse—a minimum of five times.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Prepare for the worst case.&lt;/em&gt; Think about possible failure scenarios and get ready for them. Prepare backups. Prepare backups for backups.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Your first few workshops will not be great.&lt;/em&gt; Accept it, and don’t worry about it. Keep going.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Ask for feedback in the end.&lt;/em&gt; Ask people to leave a note on a (virtual) post-it. If no one says anything, send a message to a few individuals you value their opinion and ask for feedback.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Regularly ask participants during the workshop to see if anyone has any questions or if anything is unclear.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Balance the speakers.&lt;/em&gt; It is an art and difficult. There is one magical way to do this, and I will discuss it more in my next letters. Until then, give silent ones a nudge to talk and loud people a sign to shut up without saying “shut up.”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’ve run many workshops over the years, and I absolutely love them. Taking people on a journey and engaging them with the material is challenging, but these workshops honed my various skills. Thanks to them, I know how to give better presentations, lead people on a journey, and easily talk to people I haven’t met before. My friend, &lt;strong&gt;please don’t underestimate the power of facilitating a workshop.&lt;/strong&gt; I know preparation looks difficult, and speaking in front of others is stressful, but it’s actually easy once you give it a try, and I hope you will.&lt;/p&gt;
&lt;p&gt;Until next time, take care!&lt;/p&gt;
&lt;p&gt;— Candost​​&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-23/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-23/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why Listening with Empathy is an Important Skill for Every Leader?</title><link>https://candost.blog/the-must-have-skill-for-every-leader-listening-with-empathy/</link><guid isPermaLink="true">https://candost.blog/the-must-have-skill-for-every-leader-listening-with-empathy/</guid><description>Empathetic leadership improves leaders&apos; emotional intelligence, which is a fundamental skill for leadership development and better mental health.</description><pubDate>Thu, 13 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Many leaders have problems with empathy, especially managers with software engineering backgrounds. Before transitioning into people management, they were usually senior engineers: the knowledgeable ones who got used to providing opinions. But now, they hold a different position—one that requires them to understand people.&lt;/p&gt;
&lt;p&gt;The fundamental change during the transition happens in perspective. People encourage software engineers to give input, which trains them to talk more and share more thoughts. &lt;strong&gt;In leadership, instead of being encouraged to input, you start encouraging others to share opinions.&lt;/strong&gt; You have to listen and understand more; you have to silence your inner software engineer, keep it on hold and understand what people are saying.&lt;/p&gt;
&lt;p&gt;The leaders who cannot silence their inner engineers lead the team members into difficult situations and conversations. They forget that they were once in the same position, annoyed by the hands-on micromanager who always talked and gave directions. Now, they are in the same place and unintentionally repeating the same mistakes.&lt;/p&gt;
&lt;h2&gt;The leader has holistic knowledge; others don&apos;t&lt;/h2&gt;
&lt;p&gt;Leaders often see things others can&apos;t. They have a more holistic view and knowledge of projects, people, and goals. &lt;strong&gt;Although they can use this perspective to bring clarity to the problem, many leaders unintentionally force people to follow their solutions.&lt;/strong&gt; They fail to become great leaders; instead, they succeed as mediocre micromanagers.&lt;/p&gt;
&lt;p&gt;As the leader holds authority, their view has more weight and impacts the discussion. That&apos;s why leaders are discouraged from sharing opinions all the time. The leader has to let other people learn. &lt;strong&gt;Instead of assuming the engineers have similar knowledge and perspective, the managers have to listen, stay silent and develop understanding through people&apos;s growth and problems.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Genuinely understanding an engineer, or anyone, results from listening with empathy and requires a lot of work. Sometimes, it becomes difficult because the person is unaware of what they really need. They &lt;em&gt;want&lt;/em&gt; something, but they actually &lt;em&gt;need&lt;/em&gt; something else. &lt;strong&gt;The need often differs from the want. This mismatch is the difficulty of developing empathy.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For example, imagine an engineer who wants to work on a specific project. If the skill set matches with requirements, the non-empathetic leader assigns the person to the project. After a while, the engineer begins to have significant problems with the project. The manager starts to think that the engineer &lt;em&gt;is&lt;/em&gt; the problem. As a manager, they did what the engineer asked for: assigned them to the project. However, the problem is not on the engineer but the manager. Yes, the engineer said they wanted to work on a project and the manager assumed this is what they needed, but, instead, they either needed recognition, or a new challenge, or less stress, or to prove themselves. It&apos;s rare that what a person asks for is the same as what they really need.&lt;/p&gt;
&lt;h2&gt;Assuming rarely works; assuming without empathy never works&lt;/h2&gt;
&lt;p&gt;The first thing the leader has to do is active listening: silencing the noise both in the mind and in the mouth and focusing on the other person, seeing through and beyond them.&lt;/p&gt;
&lt;p&gt;Humans naturally form assumptions to find a common understanding between each other. However, many leaders unintentionally stick to these premature thoughts. &lt;strong&gt;Leaders have to constantly abandon assumptions until they find the correct route to the truth.&lt;/strong&gt; Many discussions lose track because one side sticks to a premature idea and drives the conversation with it while the other side is talking about something else. These switch-track conversations are easy to fall into and lead to many conflicts.&lt;/p&gt;
&lt;p&gt;Assumption and empathy are mutually inclusive: without one, we can&apos;t have the other. &lt;strong&gt;Building empathy requires forming a lot of assumptions and premature thoughts and constantly abandoning them.&lt;/strong&gt; If the wrong assumptions drive the conversations instead of a sudden dispersion, empathy will be hindered. For empathy to surface, assumptions have to repeatedly disappear until they are replaced by genuine understanding.&lt;/p&gt;
&lt;h2&gt;Approaching with empathy&lt;/h2&gt;
&lt;p&gt;Leaders confuse empathy with &lt;em&gt;being nice&lt;/em&gt;. Empathy indeed provides the source of power for kindness and care. It&apos;s also true that empathetic leaders &lt;em&gt;are nice&lt;/em&gt;. But empathy is more than that.&lt;/p&gt;
&lt;p&gt;Empathy is listening and seeing another person; preventing all personal judgment, fitting another lens on life, wearing another jacket, and putting on someone else&apos;s shoes. &lt;strong&gt;Empathy is becoming a different person &lt;em&gt;each and every time&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While these definitions are &lt;em&gt;nice&lt;/em&gt;, empathy is easier said than done. Approaching another soul with empathy is difficult. There are only a handful of known techniques which also don&apos;t guarantee great success. &lt;strong&gt;Actively listening encompasses these few techniques including increasing transparency, asking clarifying questions, and repeating the other side&apos;s message.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While many leaders try to do one or two of these, they still fail to &lt;em&gt;understand&lt;/em&gt; the person in front of them. &lt;strong&gt;The real value emerges when these three techniques are done in the correct order.&lt;/strong&gt; Many leaders begin with asking clarifying questions after listening to another person. This technique is the first recommendation attached to empathy in leadership literature, but it actually should come after bringing transparency to why you&apos;re asking clarifying questions.&lt;/p&gt;
&lt;p&gt;It should be a universally accepted understanding that when someone asks a question, they also give the reason why they are asking. &lt;strong&gt;Giving the reasoning behind a question brings transparency and, therefore, &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;builds trust&lt;/a&gt;.&lt;/strong&gt; Yet many leaders fail to form a simple sentence before asking a question: &quot;I would like to ask a few questions because I want to understand the core of your message, feelings, and thoughts.&quot; One sentence is often more than enough.&lt;/p&gt;
&lt;p&gt;Without transparency and clarification, there won&apos;t be trust. Without trust, all questions are meaningless, and all answers fall short. That&apos;s why before asking any question, the leader has to be transparent. Once the engineer understands the person behind the questions, getting the proper answers for clarifying questions becomes easier.&lt;/p&gt;
&lt;p&gt;Asking the right question at the right time is an art that many leaders work hard to become experts at. However, many of them also stop right after they get answers to their questions. There is one last thing to do, one of the most overlooked actions to understand another soul: simply repeating the message as heard.&lt;/p&gt;
&lt;p&gt;The power of the technique is in its simplicity, and that&apos;s why many people underestimate its value, yet, it solves almost all &lt;a href=&quot;/explicit-disagreement-is-better-than-implicit-misunderstanding/&quot;&gt;implicit misunderstandings&lt;/a&gt;. Both clarifying questions and repeating the message give the engineer a chance to, and the confidence to, elaborate on their message and correct any misunderstandings without the fear of judgment.&lt;/p&gt;
&lt;p&gt;If we put all the actions in order, the correct guide for becoming a leader who listens with empathy emerges as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Explain your intention about why you&apos;ll ask questions to bring transparency and build trust.&lt;/li&gt;
&lt;li&gt;Ask clarifying questions with curiosity. Let the engineer feel your curiosity.&lt;/li&gt;
&lt;li&gt;Repeat the other person&apos;s message as you understand it to seek alignment.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Truly listening and seeing another person is a long journey. Learning these simple techniques takes time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;To see takes time, like to have a friend takes time.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;— Georgia O&apos;Keeffe on&lt;/em&gt; &lt;a href=&quot;https://www.themarginalian.org/2018/11/15/georgia-okeeffe-flower/&quot;&gt;&lt;em&gt;the art of seeing&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Aside from taking the time to learn and practice empathy with this technique, there is another element of empathetic listening that has to spread through the whole conversation—staying silent.&lt;/p&gt;
&lt;h2&gt;Making peace with silence&lt;/h2&gt;
&lt;p&gt;Saying nothing always scares people. A moment of silence is one of the most vulnerable moments of our social lives. It creates heavy stress and an urge to speak up. &lt;strong&gt;Silence causes stress because it actually starts the busiest conversations; conversations between feelings.&lt;/strong&gt; Instead of a mouth, it uses the heart. This vulnerability scares leaders because the tough business leader image that society drew for decades cannot handle being open with another person.&lt;/p&gt;
&lt;p&gt;However, when the leader effectively uses silence, the message, &quot;I hear you, let&apos;s think and digest the words together&quot; shouts to the engineer. It becomes clear that the leader takes time to comprehend the message. In conversations, there is usually no place to think things through. That&apos;s why during the small pause, the leader &lt;em&gt;publicly&lt;/em&gt; and &lt;em&gt;silently&lt;/em&gt; announces that they heard and are currently thinking. Practicing this kind of silence is difficult because the software engineering leaders got used to giving opinions so much that staying silent always feels intense and miserable.&lt;/p&gt;
&lt;p&gt;It&apos;s the urge of not only every software engineer but also every human to fill a silence after &lt;a href=&quot;https://ukrant.nl/magazine/awkward-silences/?lang=en&quot;&gt;four seconds&lt;/a&gt;. During this time, many leaders fall into the flow because they want to take action on projects, while deadlines are putting pressure on them, and they interpret the silence of others as uncertainty on what action to take.&lt;/p&gt;
&lt;p&gt;Leaders don&apos;t have time as they rush through from a &lt;a href=&quot;/effective-1-on-1-meetings-own-your-one-on-one-meeting/&quot;&gt;one-one-onemeeting&lt;/a&gt; to a weekly update meeting, from &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;discussions&lt;/a&gt; to a &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;decision&lt;/a&gt;, from &lt;a href=&quot;/bias-towards-action/&quot;&gt;action&lt;/a&gt; to &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;feedback&lt;/a&gt;. Within this busy life, taking a ten-second silence is terrifying. The always-on, urgent life tricks leaders into destroying the beauty of silence and breaks the first opportunity to build true empathy. &lt;strong&gt;In empathetic listening, there is no place for urgency.&lt;/strong&gt; Taking the time is mandatory to understand the other person (and ourselves), to let the feelings have a great conversation.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If we were not so single-minded&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;about keeping our lives moving,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;and for once could do nothing,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;perhaps a huge silence&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;might interrupt this sadness&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;of never understanding ourselves.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;—&lt;/em&gt; &lt;a href=&quot;https://www.themarginalian.org/2015/05/28/keeping-quiet-sylvia-boorstein-reads-pablo-neruda/&quot;&gt;&lt;em&gt;Pablo Neruda&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Getting comfortable with silence is difficult. But it gets easier with practice. Without practice, trial and error, it&apos;s impossible to build empathy.&lt;/p&gt;
&lt;p&gt;While assumptions hurt relationships, silence, and active listening strengthen it. &lt;strong&gt;With every empathetic action, the leader makes a deposit into the trust bank and opens another line of connection with the engineer.&lt;/strong&gt; Once the leader begins understanding the engineer and their actions, the sky becomes clear, and coaching and guiding the engineer becomes easier.&lt;/p&gt;
&lt;p&gt;Before offering advice or reassurance, leaders have to offer empathy. Many leaders fall into the trap of giving advice because they believe they have to &quot;fix&quot; the situation. By approaching analytically and intellectually and sticking to wrong assumptions, empathy is blocked. The only way for the leader to hear what the engineer is saying is by starting with active listening and empathy. When the leader sees that the engineer releases their tension and their flow of words come to a natural halt, the leader becomes successful with their empathetic approach.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/the-must-have-skill-for-every-leader-listening-with-empathy/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/the-must-have-skill-for-every-leader-listening-with-empathy/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #22: What should you expect from your manager?</title><link>https://candost.blog/newsletter/mektup-22/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-22/</guid><pubDate>Tue, 11 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;In the last Mektup, I talked about which skills you should learn in the new year. Improving your skills and learning new ones help you take a step forward. However, you can&apos;t do these things alone. Your manager has to support you. Today, I will talk about what you can expect from your manager in your growth journey.&lt;/p&gt;
&lt;p&gt;Managers talk about their and the company&apos;s expectations of you most of the time. It&apos;s also essential to define the other way around. When people join the teams I&apos;m leading, one of the first questions I ask is, &quot;What do you expect from me?&quot; Surprisingly, the answers are often vague, like &quot;I expect clarity,&quot; &quot;I expect support,&quot; or &quot;I expect freedom.&quot; When we turn the tables, your manager usually expects certain things from you—sometimes delivering a significant feature in a project, taking the lead in a particular area, mentoring others, completing a course, etc.&lt;/p&gt;
&lt;p&gt;While it&apos;s the manager&apos;s job to define certain expectations from you, it&apos;s also your job to set particular expectations from your manager. If you two are not closely working together, you won&apos;t be growing in your role, and they won&apos;t be a successful manager (because the manager&apos;s work is measured not only by projects they deliver but also by how they grow their team members).&lt;/p&gt;
&lt;h2&gt;Set regular time with your manager—one-on-ones&lt;/h2&gt;
&lt;p&gt;Everything starts with one-on-ones. I wrote about &lt;a href=&quot;/effective-1-on-1-meetings-own-your-one-on-one-meeting/&quot;&gt;my thoughts about one-one-one meeting strategies&lt;/a&gt; before, but I still talk with many people who don&apos;t have alone time with their managers. If you don&apos;t have one-on-ones, ask your manager to have them at least once every two weeks. If you already have it but feel you need to talk more often, ask your manager and increase the frequency. One-on-ones will be the time to talk about your growth, career, and opportunities in the company. They will help you establish your relationship with your manager and build trust. Don&apos;t skip it even if you have no particular topic to discuss. Also, expect your manager not to postpone or skip one-on-ones. If they do, verbalize this expectation and tell them. If you have no discussion topic, bring one general question or use it as a coffee chat to get to know your manager. One-on-nes will be your relationship&apos;s foundation; you&apos;ll need to form other expectations.&lt;/p&gt;
&lt;h2&gt;Feedback&lt;/h2&gt;
&lt;p&gt;The second expectation is not new: &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;feedback&lt;/a&gt;. Each individual in my team asks me to give them feedback. Many people answer my question (&quot;What do you expect from me?&quot;) with feedback. However, telling me, &quot;I expect feedback,&quot; or asking, &quot;Do you have any feedback?&quot; rarely works. The crucial part is knowing which area or topic you want to get feedback on. Your manager won&apos;t shower feedback on you because it will overwhelm you. They will be selective with the feedback because there are only a few things you can improve simultaneously. That&apos;s why you should specify your expectation.&lt;/p&gt;
&lt;p&gt;If you want to get feedback on your communication style, instead of asking, &quot;Do you have feedback on my communication style?&quot; ask, &quot;How did you like my communication in our last weekly team meeting? I&apos;m trying to improve a few things, and I would love to hear your feedback.&quot; This way, it will be easier for them to give feedback. They will tie their feedback to your behavior, and you will get concrete feedback that you can turn into action. In the end, being specific will help you and your manager.&lt;/p&gt;
&lt;p&gt;If you don&apos;t know where you should improve, talk about it. Start the conversation with &quot;In which areas should I improve to grow my career in a way that I want to?&quot; Then probably, your manager will come up with specific areas they see as essential and fits into company and team goals. From there, you can start discussions and ask for detailed feedback.&lt;/p&gt;
&lt;h2&gt;Sponsoring&lt;/h2&gt;
&lt;p&gt;Last but definitely not least is sponsoring—one of the powers of being a manager. Managers often coach and mentor the engineers, but they rarely sponsor. Sponsoring is different than mentoring or coaching. In mentoring, your manager tells you, &quot;Did you try doing X?&quot; but in sponsoring, they tell you, &quot;I recommended you for doing X. Can you do it?&quot; They take the extra step and actively recommend you to others. Sponsoring makes you visible to others in the company. If your manager has never done something like this, send them &lt;a href=&quot;https://larahogan.me/blog/what-sponsorship-looks-like/&quot;&gt;this article&lt;/a&gt; and ask them what they think about sponsoring you for one significant thing in an area you want to grow. It&apos;s &lt;em&gt;literally&lt;/em&gt; your manager&apos;s job to sponsor you. But let&apos;s be clear; they might not quickly find the right opportunity that matches your skills, or they may think you are not ready yet. That&apos;s why you should also open your eyes around and look for projects that you want to contribute and bring the project to your one-on-ones and talk it over.&lt;/p&gt;
&lt;p&gt;These three expectations are the baseline. If you don&apos;t have one-on-ones or think you get less feedback, or don&apos;t have any sponsorship, it won&apos;t be easy to grow your career. Of course, you might have other expectations, such as better compensation, promotion, getting quick (and no-questions-asked) approval for your vacation request, and more. If you have the baseline set correctly and build your relationship with your manager, talking about other expectations will be way easier. Set the base correctly; the rest will follow smoothly.&lt;/p&gt;
&lt;p&gt;I hope this letter helps you and gives you at least one idea. Let me know what you think by replying to this email.&lt;/p&gt;
&lt;p&gt;Thanks for your answer in advance.&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;A technique in case you can&apos;t decide which project you should focus on next.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-22/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-22/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Is Software Engineering an Art?</title><link>https://candost.blog/is-software-engineering-an-art/</link><guid isPermaLink="true">https://candost.blog/is-software-engineering-an-art/</guid><description>Why is software engineering hard? Do we confuse the profession? Is software engineering really engineering? Or is it art? How does innovation play a role?</description><pubDate>Thu, 06 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The Software Engineering profession is one of the most misunderstood disciplines. Many folks consider it as engineering; some tell it&apos;s like painting—an art, a few think it as a creative journey full of flaws. While engineering and painting may look different, they are similar in software engineering. Both start with empty hands, requires discipline, repetition, and knowing the fundamentals.&lt;/p&gt;
&lt;p&gt;However, they differ in their approach to the problem. While painting can point out a problem, it rarely solves it. The engineering looks at an existing issue to find a solution. On the one hand, software engineering tries to achieve both with a single shot. On the other hand, it rarely succeeds because it&apos;s neither an established engineering discipline nor an accepted art trend.&lt;/p&gt;
&lt;p&gt;If we look at other engineering disciplines such as civil engineering and mechanical engineering, software engineering falls short as a discipline. It doesn&apos;t have the defined quality standards and the legislation to enforce any standard. That&apos;s why there are a lot of crappy software systems all around us.&lt;/p&gt;
&lt;p&gt;When we compare software engineering with painting, both often create new trends. In painting, new trends need time to establish and accepted by people. In software, we reinvent one trend after another without taking the time to establish the existing one. Being in the hype mode prevents bringing out creativity and blocks innovation.&lt;/p&gt;
&lt;p&gt;If the software is not engineering and not art, what is it?&lt;/p&gt;
&lt;h3&gt;What is Software Engineering?&lt;/h3&gt;
&lt;p&gt;Software engineering is thinking that we can build Sagrada Família, combining the art and the engineering but failing miserably. Sagrada Família is unique because numerous architects worked on it after the initial architect (Gaudi). Each architect faced the challenge of keeping the original design but applying new trends, technologies, and own ideas. These days, each software engineer faces a similar challenge but takes a different path.&lt;/p&gt;
&lt;p&gt;Unlike Sagrada Família, every software engineer who adds a piece of code tries to put their ideas and style by ignoring or destroying what the previous engineer has built. We think we are so good that we can quickly build Sagrada Família. But we don&apos;t have discipline, we don&apos;t know the fundamentals, and we often forget a foundation we should consider first.&lt;/p&gt;
&lt;p&gt;A while ago, we talked with a friend, and he said the good software is boring, reminding me of &lt;a href=&quot;https://mcfunley.com/choose-boring-technology&quot;&gt;Dan McKinley&apos;s post&lt;/a&gt;. Software engineering is actually to have a big enough tool belt, knowing each tool well, solving the problem, and using high-quality standards to measure the impact. And, this whole system is boring.&lt;/p&gt;
&lt;p&gt;It&apos;s boring because the focus is on solving the problem with the boring tools that are established and producing a high-quality result. If we&apos;re trying to reinvent the wheel every time, the chances are that we are moving away from the actual problem and/or sacrificing quality. Boring technology keeps our focus on the problem.&lt;/p&gt;
&lt;p&gt;Take Spring Framework, for example, it has many features, and it&apos;s established. And I think it&apos;s boring. Many things come out of the box and have guidelines to do certain things. Whenever we&apos;re stuck in any technicality, we can find an answer on Google.&lt;/p&gt;
&lt;p&gt;Using Spring in a project is more close to engineering. We don&apos;t think about how we should implement dependency injection or caching. It&apos;s there and ready to use. We just need to decide how to apply it in our use case.&lt;/p&gt;
&lt;p&gt;With using boring technology, the mindset shifts; we move the focus from technology to the domain—the goal changes from using new technology to solving the problem in the best way. The shift accentuates creativity and innovation.&lt;/p&gt;
&lt;h3&gt;Creativity and Innovation in Software Engineering&lt;/h3&gt;
&lt;p&gt;There is often confusion between being creative and being innovative. Being innovative encapsulates creativity, but not every creative activity is innovative.&lt;/p&gt;
&lt;p&gt;Almost all engineering process is creative. The goal is to bring out what&apos;s in our heads. When we&apos;re planning, we plan how we work on small pieces to bring out the masterpiece. When we&apos;re coding, we start with an empty text editor, a small section of the bigger piece. Every time we code, we become creators, not innovators.&lt;/p&gt;
&lt;p&gt;The innovation comes from combining both engineering and art. Building Siri, World Wide Web, multi-use rockets, blockchain, etc., are all innovations. These technologies advance our race. The problem is that we often praise innovation more than boring engineering.&lt;/p&gt;
&lt;p&gt;We often ignore the reality of innovation: The innovation rises from knowing the ground rules well enough that we know which ones we can bend or demolish.&lt;/p&gt;
&lt;p&gt;Take Tim Berners-Lee, for example. Before implementing the first HTTP, he worked in telecommunication companies, did many projects in computer networking for years. He learned the fundamentals well enough that later he was able to connect TCP and DNS to set the foundation of the World Wide Web (WWW).&lt;/p&gt;
&lt;p&gt;On a lower scale than WWW, let&apos;s take Uber (or any other big tech company) as an example. They have built their own mobile architecture (&lt;a href=&quot;https://eng.uber.com/driver-app-ribs-architecture/&quot;&gt;RIBs&lt;/a&gt;) &lt;em&gt;after&lt;/em&gt; they learned the ground rules and used the boring ones. Until it didn&apos;t fulfill their need, they used what was there. They learned the technology, needs, and business so well that they knew what they had to do to invent a new framework.&lt;/p&gt;
&lt;p&gt;The major problem of becoming an innovator, artist, and engineer, we have to do the boring work &lt;em&gt;first&lt;/em&gt;. Without having the fundamentals in place and knowing the ground rules, innovation cannot emerge.&lt;/p&gt;
&lt;p&gt;I&apos;m not saying that we have to learn how to use punch cards or write code in FORTRAN. We should choose our own boring technology that is established and won&apos;t require us to reinvent a new way to solve the same problems.&lt;/p&gt;
&lt;p&gt;Many people always pick the latest technology, and many companies promote them. If we keep focusing on learning the latest technology before the boring ones, we can be neither an engineer nor an artist; I&apos;m not even counting on being an innovator.&lt;/p&gt;
&lt;p&gt;To get better at software engineering, we should pick a part in it and do it over and over again. Once we learned and mastered one side, we can look for new ones around it. If we don&apos;t learn one thing well enough, our foundation will be weak, it will crack, or we will spend enormous time solving the problems that were solved years ago.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/is-software-engineering-an-art/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/is-software-engineering-an-art/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #21: Which skills should you learn in 2022? and How?</title><link>https://candost.blog/newsletter/mektup-21/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-21/</guid><pubDate>Tue, 28 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Here comes the 21st letter—the last letter of 2021. (The matching numbers are pure coincidence, I didn&apos;t plan this at all 😄.) The new year is upon us, and it&apos;s time to think about the next year.&lt;/p&gt;
&lt;p&gt;Before deciding on New Year&apos;s resolutions, it&apos;s always helpful to reflect on the last year and see how far we went in a year. When we look back, the frustrating moments usually look smaller than we experienced before. After learning this perspective, I decided to do these retrospectives more often, more than once a year. When possible, daily.&lt;/p&gt;
&lt;p&gt;Having regular retrospectives is a great way to recognize if we&apos;re progressing or not. Because many skills require a long time to build, we often forget about our goals and new year&apos;s resolutions after we set them. We start to live day-by-day.&lt;/p&gt;
&lt;p&gt;When I realized that I had stopped creating goals, I focused on forming habits instead of New Year&apos;s resolutions.&lt;/p&gt;
&lt;h2&gt;Goals vs. Habits&lt;/h2&gt;
&lt;p&gt;​&lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;I don&apos;t have goals in my life for almost two years&lt;/a&gt;. This strategy scares some goal-oriented people. However, I am focused on gaining new habits and playing a long-term game while living in the moment. This strategy helped me more than any goal that I had tried before. But I know that this style is not for everyone, especially not for many software engineers.&lt;/p&gt;
&lt;p&gt;When I think about software engineering, the goals are the profession&apos;s nature. K.P.I.s, O.K.R.s, bug metrics, dead­lines, and sprint goals are all pushing us to define more timely, measurable, and specific goals, a.k.a. &lt;strong&gt;&lt;a href=&quot;https://www.atlassian.com/blog/productivity/how-to-write-smart-goals&quot;&gt;S.M.A.R.T. goals&lt;/a&gt;&lt;/strong&gt;. However, there is one thing many engineers forget: &lt;strong&gt;developing skills takes time and demands a lot of practice, courage, and resilience to take an unknown journey.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Think about the last time you wanted to learn a new skill, let&apos;s say coding. How was your journey? Did you know what you will learn? Most probably, you didn&apos;t. Even if you had a university or a bootcamp curriculum, you didn&apos;t know. Yet, here you are. You know how to code, and you probably already forgot how much time and energy you put into it. Now, you are focused on learning a more specific skill aligned with your career&apos;s progress.&lt;/p&gt;
&lt;p&gt;As you grow your career, you get more specific with each skill. It was coding first, then software architecture and testing began. As you progress, there is always a more precise skill to learn. But learning any skill takes time, and &lt;strong&gt;creating goals for each of them puts us into a stressful race that achieving any goal will bring only a tiny moment of happiness because we have to think about the next one.&lt;/strong&gt; There is always a next goal, next objective, next destination, next, next, next.&lt;/p&gt;
&lt;p&gt;While you&apos;re onto new year&apos;s resolutions, think about how you work and live every day. If you want to learn how to design systems or how to build more secure systems, don&apos;t just say, &quot;I will learn cybersecurity practices in a year.&quot; &lt;strong&gt;Think about what you should change in your day to learn a new tool, skill, or approach.&lt;/strong&gt; Instead, your statement can be a mix of goal and habit, &quot;Learn one thing in the security field every two-to-three weeks and practice it every day until you can comfortably explain it to another person.&quot; This statement still focuses on security but changes your daily habits.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you are not going to change how you work or live, whatever goal you decide will fade away quickly.&lt;/strong&gt; Focus on changing a tiny bit of your day. The effect will compound, and the impact will be massive by the end of 2022.&lt;/p&gt;
&lt;h2&gt;Which skills should you improve in 2022?&lt;/h2&gt;
&lt;p&gt;Many software engineers think about improving their tech­nical skills and solely focus on them while they progress in their careers. &lt;strong&gt;The poor side of this approach is that they overlook other skills such as handling feedback and disagreement, managing projects, driving collaboration, facilitating meetings, mentoring, and many others.&lt;/strong&gt; The worse part is that the other skills are more significant when combined.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/skill-distribution-for-senior-software-engineers.png&quot; alt=&quot;Skill Distribution for Senior Software Engineers&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The chart gives an overview of all skills distribution for senior software engineers. To provide a better perspective for different roles, Gergely Orosz &lt;strong&gt;&lt;a href=&quot;https://newsletter.pragmaticengineer.com/p/engineering-leadership-skillset-overlaps&quot;&gt;shared&lt;/a&gt;&lt;/strong&gt; a great notion that&apos;ll take a lot of words to explain.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/time-spent-in-software-engineering-per-seniority.png&quot; alt=&quot;Source: Gergely Orosz&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href=&quot;https://twitter.com/GergelyOrosz/status/1473353064358756352&quot;&gt;Gergely Orosz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Looking at the picture closely, you see that &lt;strong&gt;hands-on building software loses its portion once the software engineer starts growing into other roles.&lt;/strong&gt; Don&apos;t get me wrong; technical skills are still mandatory for almost all leading roles. But they are not &lt;em&gt;the only skill&lt;/em&gt; to become a great software engineer. In junior roles, improving technical skills has the highest priority. After that, other skills are more crucial.&lt;/p&gt;
&lt;p&gt;When we think about technical skills, &lt;strong&gt;the leading roles demand more &lt;a href=&quot;/newsletter/mektup-8/&quot;&gt;technical breadth than technical depth&lt;/a&gt;&lt;/strong&gt;. It&apos;s still essential to keep technical skills alive because they are beneficial in all leading roles. But you don&apos;t need to know every single detail in the code. &lt;strong&gt;If you&apos;re leading, you will have to let others do the job so that they can grow while you&apos;re wor­king more strategically.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you are planning New Year&apos;s resolutions, consider the perspectives above. Don&apos;t bog yourself down on never-ending goals. It&apos;s difficult to say, &quot;Yes, I have this skill now.&quot; Developing new skills requires constant improvements, and it takes time. &lt;strong&gt;Focus on changing your day a tiny bit to open up a space for learning new skills. What­ever you choose to learn, do it every day. Every. Single. Day.&lt;/strong&gt; Even if it&apos;s reading an article for five minutes or trying one technique quickly, it doesn&apos;t matter: don&apos;t skip.&lt;/p&gt;
&lt;p&gt;I hope to see you develop your skills, become a great leader, and have the best year of your life in 2022.&lt;/p&gt;
&lt;p&gt;Thanks for reading; see you next year! 😉&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;https://skamille.medium.com/an-incomplete-list-of-skills-senior-engineers-need-beyond-coding-8ed4a521b29f&quot;&gt;Maybe you&apos;re curious about which specific skills senior engineers need beyond coding.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-21/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-21/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Make Time Book Review, Summary, and Notes</title><link>https://candost.blog/books/make-time-book-summary-review-and-notes/</link><guid isPermaLink="true">https://candost.blog/books/make-time-book-summary-review-and-notes/</guid><description>Make Time is written by the bestselling authors Jake Knapp and John Zeratsky, the authors of Sprint: Solve Big Problems and Test New Ideas in Just Five Days.</description><pubDate>Mon, 20 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How Strongly I Recommend It:&lt;/strong&gt; 5/10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How Likely I Will Gift It:&lt;/strong&gt; 1/10&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Make Time is written by the bestselling authors Jake Knapp and John Zeratsky. We know the authors from another book, Sprint: Solve Big Problems and Test New Ideas in Just Five Days.&lt;/p&gt;
&lt;h2&gt;📣 What is Make Time Book by Jack Knapp and John Zeratsky about?&lt;/h2&gt;
&lt;p&gt;The book is about improving your life by focusing on what matters to you. It&apos;s not about managing your time block by block. It&apos;s not about creating a complicated system to increase productivity. It&apos;s about trying simple and effective strategies and adjusting them to your life.&lt;/p&gt;
&lt;p&gt;The book gives only a straightforward strategy: choose a daily highlight. The rest of the book is focused on how you can do it, how you can improve your life to achieve your Highlight, and what you can focus on to have a better life.&lt;/p&gt;
&lt;p&gt;Inside the book, there are 87 techniques that you can test in your life.&lt;/p&gt;
&lt;h2&gt;🌟 My Review&lt;/h2&gt;
&lt;p&gt;If I was new to the time management and focus concept, I would have liked it more. This is a great book for beginners on the topic.&lt;/p&gt;
&lt;p&gt;The book&apos;s physical quality is low. The paper and cover are of good quality, but there are full black pages, and some of these pages left their mark on the adjacent pages.&lt;/p&gt;
&lt;p&gt;I didn&apos;t learn as much as and in a way I expected. That&apos;s not because the book doesn&apos;t contain information; it has many techniques (87, to be more specific). It&apos;s because I expected something else. As I bought it online, I couldn&apos;t look inside before buying it.&lt;/p&gt;
&lt;p&gt;But reading the book was smooth and easy. I also liked the drawings and page design; they made the reading a pleasure.&lt;/p&gt;
&lt;p&gt;Also, the authors reminded me of the daily Highlight and Reflection methods. They also presented some tactics that I want to learn about the scientific background.&lt;/p&gt;
&lt;p&gt;With all these, you might think that I&apos;m not recommending the book. On the contrary, I recommend this book to the people I wrote in the &quot;Who should read it?&quot; title.&lt;/p&gt;
&lt;h2&gt;🚀 The Book in Three Sentences&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Highlight, Laser, Energize and Reflect is the primary strategy that includes taking notes and writing, which I like to do.&lt;/li&gt;
&lt;li&gt;There are 87 techniques in the book that covers all four topics to help you take control of your life and get rid of constant busyness.&lt;/li&gt;
&lt;li&gt;The book is not just about time management tricks, but it&apos;s more about how to better focus on what matters to you and how to support this with your all life while getting rid of the busy bandwagon mindset.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;🎨 Impressions&lt;/h2&gt;
&lt;p&gt;The book is an easy read, and there is no need to read it cover to cover. However, reading the Introduction and How to Make The Works Chapters is necessary to grasp the idea.&lt;/p&gt;
&lt;p&gt;The book&apos;s language and style are aligned with its message. The language is succinct and straightforward; reading it doesn&apos;t take much time.&lt;/p&gt;
&lt;p&gt;If you&apos;re already aware of many health, time, and energy boost strategies, it might not give you much. But it will teach you something you didn&apos;t know.&lt;/p&gt;
&lt;h3&gt;Who Should Read It?&lt;/h3&gt;
&lt;p&gt;If you&apos;re struggling with managing your time and have issues setting time aside for your passion, you should read this book.&lt;/p&gt;
&lt;p&gt;If you&apos;re already working on your passion all the time, you can read this book to understand what aspects of your life you can improve. I&apos;m sure you will get at least one new idea.&lt;/p&gt;
&lt;h2&gt;📒 Summary + Notes&lt;/h2&gt;
&lt;p&gt;The methodology is simple but powerful if you can apply it to your life. The beauty is that there is no need to follow step-by-step like a recipe.&lt;/p&gt;
&lt;p&gt;Making Time methodology consists of four elements: Highlight, Laser Mode, Energize, and Reflect.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Highlight:&lt;/strong&gt; You choose one activity that requires your attention. The activity shouldn&apos;t take more than 90 minutes to accomplish. The Highlight can be any activity such as reading and answering many emails, preparing a marketing campaign, writing an article, developing a new feature in your app, cleaning the apartment, or fixing your car.&lt;/p&gt;
&lt;p&gt;A highlight is a single activity that you will prioritize during your day. It doesn&apos;t matter if your focus time is in the morning or evening. Your daily goal is to do whatever your Highlight is.&lt;/p&gt;
&lt;p&gt;When there is a highlight, your mind is more in a happy state. After you finish your Highlight, you&apos;re done. Whatever else you&apos;re doing will be much more straightforward.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Laser:&lt;/strong&gt; During your day, your laser focus will be on your Highlight. To increase your laser focus, you have to eliminate distractions.&lt;/p&gt;
&lt;p&gt;Email, social media, TV series, and news are everywhere, and we are usually not aware of them taking our time. These days, we can neither block all of them and live in a cave nor spend our life around them. There is a balance, which requires being mindful and adjusting how we use these technologies.&lt;/p&gt;
&lt;p&gt;If Instagram takes four hours every day, and you&apos;re complaining that you don&apos;t have time for anything you want to do, there are tricks to reduce your time on Instagram. Nobody is telling you to stop using it. The key is finding these techniques to focus on your Highlight of the day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Energize:&lt;/strong&gt; Cutting out time from distractions is alone not enough. Your body needs the energy to focus. That&apos;s why you have to take care of your physical and mental health with exercise, food, sleep, quiet time, and face-to-face social interaction.&lt;/p&gt;
&lt;p&gt;There are many ways you can energize yourself while keeping your focus on your Highlight. There are tiny habits you can form or small changes that help you turn your bad habits into good ones.&lt;/p&gt;
&lt;p&gt;For example, when you consume caffeine is crucial for balancing your energy during the day. Your body has its own clock and hormones that are adjusted during evolution. The extra chemicals you take have an impact, and not only how much you take these chemicals but also when you take them has a significant impact on your overall energy during the day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reflect:&lt;/strong&gt; Reflection is writing notes before going to bed. It&apos;s not long-form writing or keeping a diary. You&apos;re free to make it as short as you want and as long as you need. The important thing is that you write daily. If you&apos;re not into writing, just try it for a few days. You&apos;ll already see the change.&lt;/p&gt;
&lt;p&gt;What do you write? You write about the techniques you tried during the day and whether they worked or not. If they didn&apos;t work, why? Can you adjust it a little and try again tomorrow?&lt;/p&gt;
&lt;p&gt;If you couldn&apos;t accomplish your Highlight, it&apos;s okay. You don&apos;t have to drop everything.&lt;/p&gt;
&lt;p&gt;It&apos;s okay to have the same Highlight for the next day. You don&apos;t have to come up with something new every day.&lt;/p&gt;
&lt;p&gt;It&apos;s okay to take a break from the system and come back later. It&apos;s not a complex system, and you don&apos;t need to follow it for the rest of your life.&lt;/p&gt;
&lt;p&gt;The book has many techniques that are designed to fit each section (Highlight, Laser, Energize, Reflect). The goal is to choose any of these techniques that fit your life (or adjust it to your lifestyle) and try them. If it works, try again. If it doesn&apos;t work, change it or drop it and try something else.&lt;/p&gt;
&lt;p&gt;There are 87 techniques in the book. I&apos;m not going to write each one because almost all of them are written very well, and I can&apos;t write again without copy-pasting from the book. However, I will include the categories&apos; list as it appears in the Table of Contents and how many techniques there are inside the category. So, you know what you will get from the book.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Highlight Tactics
&lt;ul&gt;
&lt;li&gt;Choose Your Highlight (7 techniques)&lt;/li&gt;
&lt;li&gt;Make Time For Your Highlight (9 techniques)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Laser Tactics
&lt;ul&gt;
&lt;li&gt;Be The Boss Of Your Phone (6 techniques)&lt;/li&gt;
&lt;li&gt;Stay Out of Infinity Pools (11 techniques)&lt;/li&gt;
&lt;li&gt;Slow Your Inbox (9 techniques)&lt;/li&gt;
&lt;li&gt;Make TV &quot;Sometimes Treat&quot; (5 techniques)&lt;/li&gt;
&lt;li&gt;Find Flow (7 techniques)&lt;/li&gt;
&lt;li&gt;Stay In The Zone (6 techniques)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Energize Tactics
&lt;ul&gt;
&lt;li&gt;Keep It Moving (4 techniques)&lt;/li&gt;
&lt;li&gt;Eat Real Food (5 techniques)&lt;/li&gt;
&lt;li&gt;Optimize caffeine (7 techniques)&lt;/li&gt;
&lt;li&gt;Go Off The Grid (4 techniques)&lt;/li&gt;
&lt;li&gt;Make It Personal (2 techniques)&lt;/li&gt;
&lt;li&gt;Sleep In A Cave (5 techniques)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Reflect (No special techniques, but it has three titles inside)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;☘️ How the Book Changed Me&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;How my life / behavior / thoughts / ideas have changed as a result of reading the book.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;I can&apos;t tell that the book changed me or my life a lot. At least, not yet.&lt;/li&gt;
&lt;li&gt;As the authors suggest that we shouldn&apos;t try everything written there, I&apos;m only trying to adopt one thing in my life; daily notes, including Highlights and Reflections.&lt;/li&gt;
&lt;li&gt;Also, I realized that I already know a lot about productivity, time management, and how to focus on essential things. I picked up this book because I was having trouble with correctly spending time at work. I assumed that I needed a new approach or a framework. Yet, I didn&apos;t. Maybe one thing that will help me is consistently using Highlights and Reflection. I already tried writing daily Reflection before but failed miserably. Perhaps this time, it will stick, as I&apos;m more inclined to write than before.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I expect books to enlighten me. As I don&apos;t have unlimited time and capacity, I will probably read 25 books a year. If I live 40 more years, that&apos;s only 1000 books. It sounds like a lot, but not. 2,2 Million NEW BOOKS were published just in 2013. TWO MILLION and TWO HUNDRED THOUSAND. Therefore, my expectations are high from any book that I read.&lt;/p&gt;
&lt;h3&gt;How I Discovered It&lt;/h3&gt;
&lt;p&gt;I discovered the book with Amazon&apos;s recommendation algorithm when I looked for books related to Time Management.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/make-time-book-summary-review-and-notes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/make-time-book-summary-review-and-notes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Recognize but don&apos;t promote all of your employees</title><link>https://candost.blog/notes/24e/</link><guid isPermaLink="true">https://candost.blog/notes/24e/</guid><pubDate>Thu, 16 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recognizing the rock stars (excellent performance/gradual growth trajectory) is tricky because leaders often misunderstand these people and want to reward their performance. These leaders err in reward and give promotions while the person is not looking for a promotion. Promotion kills these people&apos;s motivation. They are looking for different challenges. One of the best ways to recognize these people&apos;s success is by asking them to teach what they know to inexperienced people. But also never forcing them to teach. If they don&apos;t want to, they should never be forced. Leaders should respect.&lt;/p&gt;
&lt;p&gt;Finding opportunities for these people is the delicate and difficult part of being a manager for these people. Identifying what can work and what cannot is challenging and requires a lot of conversations with these people and others.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/5/&quot;&gt;5: Managing Promotions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b5/&quot;&gt;3b5: Asking Questions to Build Trust with A Direct Report&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Radical Candor by Kim Scott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/24e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/24e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why people who are growing too fast can have low performance</title><link>https://candost.blog/notes/5a/</link><guid isPermaLink="true">https://candost.blog/notes/5a/</guid><pubDate>Thu, 16 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;People who grew quickly but have struggled in their position perform badly because of a couple of reasons: they might be in the wrong role. An engineer getting a promotion to manager because they were excellent is an example. Find the right role for these people. The second reason can be that they are new to the role, and therefore, too much happens too fast that they can&apos;t handle it. Clear out expectations in these cases. Setting the ground right will help them to learn and prioritize. Another reason can be personal problems. They might have difficult situations in life; just wait in this case. And the other reason can be that they are a poor fit for the company or the team. Either fire them or change their team. Keeping these people will be detrimental to everyone, including the person.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Radical Candor by Kim Scott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/5a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/5a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #20: The Rule of Three to Avoid Bias</title><link>https://candost.blog/newsletter/mektup-20/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-20/</guid><pubDate>Tue, 14 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;I&apos;ve been thinking about the goal of software engineering and what we do to achieve that goal. It&apos;s easy to generalize the goal by saying, &quot;&lt;em&gt;it&apos;s all about solving problems.&lt;/em&gt;&quot; However, it&apos;s not easy to generalize how we solve these problems at all. The most general answer to all our problems is &quot;&lt;em&gt;it depends.&lt;/em&gt;&quot;&lt;/p&gt;
&lt;p&gt;There is no single way to define our next step when facing any issue. We might immediately find a solution by instinct, or we research a lot and then come up with a solution, or even mix both and then do a little research, try an answer, do more research, and adjust the solution.&lt;/p&gt;
&lt;p&gt;The problem with going with instinct is that &lt;strong&gt;we have biases and prejudice&lt;/strong&gt;. We intuitively form these with experience. If we didn&apos;t have any biases, we probably couldn&apos;t decide whether to use a &lt;em&gt;for loop&lt;/em&gt; or a &lt;em&gt;while loop&lt;/em&gt;. Although biases are helpful for minor problems, when we face more significant issues, biases and prejudices are detrimental.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Biases prevent us from finding the optimal solution.&lt;/strong&gt; In a problem, we recognize some cues that are familiar to us because of our previous knowledge. If we solved a similar issue in an earlier project, we&apos;re inclined to use the same solution, although the conditions are dif­ferent and the solution is suboptimal.&lt;/p&gt;
&lt;p&gt;This flaw puts us at risk of miscalculating the solution or making ourselves blind to alternative and better solutions. Pair programming, Request for Comments (RFC), Post-Mortem Analysis (PMA), feedback sessions, and other processes were born to eliminate these flaws.&lt;/p&gt;
&lt;p&gt;These processes bring different minds together to eliminate bias. Another pair of eyes evaluate our solution and help us to find the flaws we missed in the first place. Albeit these processes are helpful, people often criticize them for the commu­nication and collaboration overhead. That&apos;s why many people are hesitant to do pair programming or write an RFC for their solution. Instead of dealing with all the complexities of these processes, we sometimes need another way to eliminate the bias.&lt;/p&gt;
&lt;h2&gt;The Rule of Three&lt;/h2&gt;
&lt;p&gt;There is one simple yet powerful method—The Rule of Three!&lt;/p&gt;
&lt;p&gt;Wherever we face a problem, we have to &lt;strong&gt;find a minimum of three solutions. Not one, not two, but three.&lt;/strong&gt; Before you think that is a lot of work, which will slow us down, look at it this way: Add it to your tool belt and use it wherever you need. I&apos;ve been using this methodology for years. Just even thinking about three solutions itself is a fantastic mental practice. Even if you choose your initial solution, the other two solutions give you enough perspective to open your eyes and understand the core of the problem.&lt;/p&gt;
&lt;p&gt;Because once you think of three different scenarios, you are already acting like you got feedback from your peers. If you write an RFC and include the alternatives to your solution, whoever comments on your proposal already notices that you considered their way but elimi­nated them for specific reasons. Hence, you prevent discussion overhead.&lt;/p&gt;
&lt;p&gt;By the way, I hear your inner voice keep asking: why three?&lt;/p&gt;
&lt;p&gt;Because &lt;strong&gt;one choice is literally a trap&lt;/strong&gt;, it&apos;s full of bias, and if your only solution doesn&apos;t work, you&apos;re out of options—you&apos;re screwed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Two solutions are not enough because it creates a dilemma&lt;/strong&gt;. Your mind starts to think it like either &lt;em&gt;this&lt;/em&gt; or &lt;em&gt;that&lt;/em&gt;. Instead of concentrating on the problem, you shift your focus to the solution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Three solutions give you an actual choice.&lt;/strong&gt; The more solutions you have, the better.&lt;/p&gt;
&lt;p&gt;If you want to give this method a try, here are some guidelines that Rothman and Derby recommend in their book &quot;Behind Closed Doors!&quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Don&apos;t worry about who will implement the solutions. First, find them. Choosing who will take care of the solution comes after.&lt;/li&gt;
&lt;li&gt;Consider solutions even if you don&apos;t know how to implement them—how part comes later.&lt;/li&gt;
&lt;li&gt;Find good solutions. Don&apos;t come up with lousy ones just for the sake of finding an alternative. Also, it doesn&apos;t matter if you like the solution or not. All of them have to be worthy of serious consideration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;m not saying that you should apply The Rule of Three everywhere. But be aware that the application is not limited to software engineering. You can use it for any problem you have in your life.&lt;/p&gt;
&lt;p&gt;Use the rule as a tool, and let me know if you give it a shot in one of your problems. It&apos;s always good to hear back from a friend who tries your advice.&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-20/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-20/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Have The First Win to Build Team Spirit</title><link>https://candost.blog/have-the-first-win-to-build-team-spirit/</link><guid isPermaLink="true">https://candost.blog/have-the-first-win-to-build-team-spirit/</guid><description>Solely encouraging people to create team spirit never works, especially for new teams. The manager has to give the team a goal and celebrate achievements.</description><pubDate>Wed, 08 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I became a manager, I asked my managers for advice about how to build the team spirit in a new team to have a great start. There were many answers, but one advice was common: give the team a goal and deliver something as soon as possible. &lt;em&gt;Deliver something&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;While it sounds like a vague idea that doesn&apos;t specify what to deliver, we found a goal and committed to it, and it worked. With small nudges to keep the team focus on the goal, the team of five people delivered three achievements in the first six weeks.&lt;/p&gt;
&lt;p&gt;And this article is about why the first wins are important.&lt;/p&gt;
&lt;p&gt;Before we dive into, it&apos;s better to grasp the context of the team. The team was a spin-off from an existing team. Three of us were working together already, one person came from a team that we were closely collaborating. The last person joined us from another team that we had no prior collaboration. We don&apos;t have a scrum master or a dedicated product manager, however, we have two great product managers and a staff engineer who help us whenever we need.&lt;/p&gt;
&lt;p&gt;Many teams just work on a project without having a clear vision and goals. Sometimes motivation comes from creating a new product or using a new technology. However, if the work doesn&apos;t provide any meaning, all the team building activities fall short. If we were in a boat with the team, it doesn&apos;t matter if we have the best boat or not. When we have to no destination to go, it&apos;s not fun to stay in the middle of the sea and consume all the supply in parties while floating. Especially, new teams quickly consume their low motivation supply in this floating state.&lt;/p&gt;
&lt;p&gt;New teams have different dynamics from existing teams because there are no processes yet and people don&apos;t know each other; they are in the forming state, &lt;a href=&quot;https://www.wikiwand.com/en/Tuckman%27s_stages_of_group_development&quot;&gt;as Tuckmann says&lt;/a&gt;. When we partially spun off a new team, we inherited some processes, such as daily stand-ups, planning cycles, and more. It was tempting to focus on creating processes around the new team. However, what I realized that giving the new team a goal helps to form these processes on the way. When the goal is clear, the processes evolve in alignment with the goal.&lt;/p&gt;
&lt;p&gt;Every team has unique sets of problems. Not everyone has a chance to form a new team. Sometimes we took over a team that is struggling to deliver. Most struggling teams usually forget their goals. When they focus on something else than the goal and have many discussions without a common objective, everyone follows their own track. When I was working in such a team as a software engineer, the first thing our new manager did (after listening to everyone) was gathering everyone around a goal and constantly reminding it to everyone. One common goal helped to solve other related issues as well. When people learned that they share a goal, they become more collaborative.&lt;/p&gt;
&lt;h2&gt;Team spirit forms around a common goal&lt;/h2&gt;
&lt;p&gt;Be it a new team or on existing one, when people have common understanding of the aim, they have a “reason to move the ship.” Instead of being in a floating ship, they focus on doing their part to move the ship in &lt;em&gt;the right&lt;/em&gt; direction. They also figure out better ways to collaborate while doing it. Collaboration creates team spirit, team spirit creates success. Once everyone believes in that they can work together and succeed, there is nothing can stand in front of them.&lt;/p&gt;
&lt;p&gt;Creating a team spirit passes from having the common and achievable goal. I don&apos;t like S.M.A.R.T. goals for teams. When I talk about goals for new teams, I mean release X in Y weeks, I don&apos;t mean increase conversion rate by 3% in a month. First, let the team accomplish something together, anything. Give them a meaningful, and achievable goal which is so small that they cannot &lt;em&gt;not&lt;/em&gt; achieve it.&lt;/p&gt;
&lt;p&gt;When we set a big goal for the team right in the beginning, it becomes difficult to achieve and people fall on to sidetracks and create their own smaller goals. In the beginning, pick the goals smaller. Small goals will bring more moments of success and celebration. However, giving a sole goal doesn&apos;t work alone.&lt;/p&gt;
&lt;p&gt;Setting the goal and leaving the team alone with it is apt to fail. The leader has to constantly repeat the goal and coach and nudge people in the correct direction. In the boat, if the captain doesn&apos;t remind the course all the time, neither helmsperson nor the navigator can fix the course by themselves.&lt;/p&gt;
&lt;h2&gt;Don&apos;t start with processes&lt;/h2&gt;
&lt;p&gt;While setting goals, many managers fall into a trap of defining processes, a.k.a. how we are going to work. When leaders start defining methods, they take responsibility from the team. The new groups who discuss how they will work tend to forget the goals. Even though the methods aim to achieve the goal, the team&apos;s focus stays on the processes and methods. When the whole team, including the manager, focus on the goals, they usually find superior processes and approaches on the side.&lt;/p&gt;
&lt;h2&gt;Celebrate&lt;/h2&gt;
&lt;p&gt;When everyone focuses on the same small goals, the achievement easily follows. There is one thing I briefly mentioned that is as important as the goal itself: celebration. Without celebrating an achievement, we cannot expect it to be repeated. We want repeated success, and celebration is a type of reward we can give the team because we want to reinforce the desired behavior and recognize the work that has been done.&lt;/p&gt;
&lt;p&gt;When managers immediately focus on the next goal and skip or forget the celebration, they fail to create the team spirit. Without taking a moment to recognize the achievement, we cannot create a sense of ownership.&lt;/p&gt;
&lt;p&gt;Pushing for shorter iterations, starting with small goals, and celebrating in the end helps to create an autonomous, self-healing team. Then as a leader, you can start having better one-to-one relations with team members and move your focus to stakeholder alignments, organizational problems and cross-team projects.&lt;/p&gt;
&lt;p&gt;If you&apos;re a manager of a new team and don&apos;t know where to start, gather people around a small goal and deliver it, &lt;a href=&quot;/bias-towards-action/&quot;&gt;deliver something&lt;/a&gt; to create team ego. What you deliver is not as important as you think in the beginning. Of course, it has to be related to your team&apos;s focus but deliver quickly and celebrate. I&apos;ve tried this, and it works great. Don&apos;t skip celebrations, and never stop listening to your team members. If you&apos;re a new team, you have to prove your value to the organization and stakeholders. The best way to do that is to deliver work consistently.&lt;/p&gt;
&lt;p&gt;When you deliver, your team becomes happy, you become happy, your stakeholders become happy: WIN-WIN-WIN.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/have-the-first-win-to-build-team-spirit/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/have-the-first-win-to-build-team-spirit/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>I&apos;m Sorry. The Project is Delayed and It&apos;s All My Fault</title><link>https://candost.blog/dont-take-responsibility-more-and-stop-blaming/</link><guid isPermaLink="true">https://candost.blog/dont-take-responsibility-more-and-stop-blaming/</guid><description>In one of my previous delayed projects, I told my manager, &apos;It&apos;s all my fault. I made many mistakes, and I take full responsibility for them.&apos; I blamed myself, which contributed to a burnout that I had a year later.</description><pubDate>Thu, 02 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In one of my previous delayed projects, I told my manager, &quot;It&apos;s all my fault. I made many mistakes, and I take full responsibility for it.&quot; Although my manager walked me through the reasons for the delay and tried to show me how everyone had their own portion, I still blamed myself, which contributed to a burnout that I had a year later.&lt;/p&gt;
&lt;p&gt;I learned that I was not acting responsibly. Instead, I absorbed &lt;em&gt;all responsibilities&lt;/em&gt; without leaving anything to others. At that time, it seemed like good behavior. I was the lead developer in the project, and I thought that the leaders should be responsible for the failures. However, absorbing all of it was destructive, and it was detrimental to me and everyone around me.&lt;/p&gt;
&lt;p&gt;I was soaking up all the responsibilities, or as &lt;a href=&quot;https://www.stoneandheen.com/thanks-feedback&quot;&gt;Douglas Stone and Sheila Heen&lt;/a&gt; call it, I was a blame absorber: &quot;When things go wrong, you point the finger at yourself, now and forever.&quot; Now I know why I always had an imaginary finger pointed at me.&lt;/p&gt;
&lt;p&gt;All my life, everyone &lt;a href=&quot;/notes/31/&quot;&gt;prompted the idea of learning from mistakes&lt;/a&gt;. We fail, we learn; we don&apos;t make the same mistake again. &quot;Make a lot of mistakes, own them. That&apos;s how you will learn,&quot; they said. However, I found out that some of us learn more than others, while few of us do not learn at all. When I put a magnifier on how to take lessons from failures, I found the connection to the amount of responsibility taken.&lt;/p&gt;
&lt;p&gt;When there is no responsibility taken, there is no learning. &lt;a href=&quot;https://www.stoneandheen.com/thanks-feedback&quot;&gt;Stone &amp;amp; Heen&lt;/a&gt; call these no-responsibility-takers blame shifters. When things go south, blame shifters, opposite the blame absorbers, shift all the blame to others and take no responsibility. Therefore, they don&apos;t learn at all. Both blame shifter and absorber are states we all have been in our lives. Who didn&apos;t blame the previous developer on the project for all the mistakes?&lt;/p&gt;
&lt;p&gt;In my delayed project, there was no previous developer to blame. When I soaked up all responsibility, I was focused on only &lt;em&gt;my&lt;/em&gt; side and failed to see how other elements contributed to the delay.&lt;/p&gt;
&lt;p&gt;There was no apparent contributor besides me in hindsight. When I dig now, I see that there were other small and significant contributions. When I soaked every failure, there was none left for these contributors to learn. They also made mistakes, and all of them went unnoticed, and they didn&apos;t learn as much as they could. There was one more consequence that nobody could have seen.&lt;/p&gt;
&lt;p&gt;I built up resentment. At that time, I looked around and thought that nobody took responsibility as much as I took. I started to have a grudge when I was the only one who took things &lt;em&gt;seriously&lt;/em&gt;. My obliviousness caused me to blackout the holistic view of everyone&apos;s contributions. These thoughts had built up, and until my burnout, I didn&apos;t recognize them at all.&lt;/p&gt;
&lt;p&gt;I learned now that the blame absorber behavior is not healthy for anyone. At first, it looks like a good habit that showcases responsible behavior. However, it&apos;s easy to recognize how detrimental it is to the group and the person when looked closely. The project was delayed, and I was responsible, true. However, I didn&apos;t delay the project alone. When I told my manager, &quot;It&apos;s all my fault. I made many mistakes, and I take full responsibility for it,&quot; she responded with, &quot;It&apos;s not a big problem, Candost. I appreciate you taking responsibility, but it&apos;s not all on you; we&apos;re in this together.&quot; Now, I understand how we are in this together.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/dont-take-responsibility-more-and-stop-blaming/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/dont-take-responsibility-more-and-stop-blaming/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #19: How to Prepare for Your Annual Review</title><link>https://candost.blog/newsletter/mektup-19/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-19/</guid><pubDate>Tue, 30 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, friend,&lt;/p&gt;
&lt;p&gt;It&apos;s that time of the year. Managers started the preparations and scheduled events on calendars. Today, I will share some tips for better and strong preparation for your annual review. I had many reviews, some good and some bad, as a software engineer. Now that I&apos;m a manager, I have experienced both sides and clearly see how things work behind closed doors.&lt;/p&gt;
&lt;p&gt;You may think that you don&apos;t need any preparation because your manager will do their job perfectly. Once, I had a manager who took care of everything and just told me about the raise I got in the end. He missed so many points, and the whole situation was inhumane. We didn&apos;t have a conversation; he had a monologue. Even if you have a similar manager like mine, and you know that preparation won&apos;t impact the result, you still have to prepare. You deserve this for yourself. Think of it as a reflection of the entire year.&lt;/p&gt;
&lt;p&gt;It is easier to prepare if you&apos;re taking notes during the year about what you&apos;ve done and achieved. If not, set an hour aside and scroll back to Jira tickets, Slack messages, calendar invitations, or any other tool that you use. While doing that, open a new document and start writing them down. Before starting this whole preparation, get &lt;a href=&quot;https://jvns.ca/blog/brag-documents/&quot;&gt;Julia Evans&apos; Brag Document&lt;/a&gt;. This document is what I use myself and recommend to my team members.&lt;/p&gt;
&lt;p&gt;Julia structured the document in a way that forces you to think at different levels about your work. You group your work under Projects, Collaboration &amp;amp; Mentorship, Design &amp;amp; Documentation, What you learned, and Outside of Work. I won&apos;t go into details that Julia already covered. But I will share a few tweaks and highlights. Even if you don&apos;t use the Brag Document, these tips will be highly beneficial in your own style.&lt;/p&gt;
&lt;h2&gt;Measure Business Impact&lt;/h2&gt;
&lt;p&gt;If you can identify the business impact of your specific work, add it to your document. Many people say they improved Continues Integration(Cl)/Continuous Deployment(CD) pipelines and reduced the deployment time from 40 minutes to 20. While it&apos;s &lt;em&gt;a&lt;/em&gt; good measurement, you can showcase it even better. If you want to impress, measure business impact.&lt;/p&gt;
&lt;p&gt;Let&apos;s imagine your project/company makes $10 per minute, and you had a system failure that took the whole system down. Once you found the problem, you pushed the code. If Cl had run in 40 minutes, your company could have lost $400 in revenue. Thanks to your improvement, it was $200. On top of the saved hours from developers and release times, $200 is &lt;strong&gt;an additional and literal&lt;/strong&gt; business impact.&lt;/p&gt;
&lt;p&gt;Why is this important? Because the result of your compensation discussion may need approval from higher-level managers and Human Resources, and they always ask one question: Why? Adding a $ presentation to your document makes your case strong to get better compensation and easier approval (more about the compensation below).&lt;/p&gt;
&lt;h2&gt;Add the user impact&lt;/h2&gt;
&lt;p&gt;Besides business impact, think about how you impacted your users. Did the work you have done change users&apos; lives? Not all of our work is on projects that reach millions of users. However, whatever we do, we impact &lt;em&gt;some&lt;/em&gt; people&apos;s lives.&lt;/p&gt;
&lt;p&gt;The user definitions are different depending on the team (e.g., &lt;a href=&quot;https://martinfowler.com/articles/talk-about-platforms.html&quot;&gt;product teams vs. platform teams&lt;/a&gt;) you work on. Find out &lt;strong&gt;how and how much&lt;/strong&gt; you impacted &lt;em&gt;your&lt;/em&gt; users. Did you improve performance by X%, and that improvement sole saved Y seconds every day in each user&apos;s life? If you have 10k users, Y second becomes Yx10kY seconds (probably some hours per day).&lt;/p&gt;
&lt;h2&gt;Attach the feedback&lt;/h2&gt;
&lt;p&gt;If your manager doesn&apos;t ask your peers for feedback, talk with your manager and ask them to collect feedback. If they won&apos;t, collect peer feedback yourself. Try asking three simple questions to your peers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What should I continue doing?&lt;/li&gt;
&lt;li&gt;What should I start doing?&lt;/li&gt;
&lt;li&gt;What should I stop doing?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Add &quot;Why?&quot; to each of these questions if you&apos;d like to.&lt;/p&gt;
&lt;p&gt;Additionally, add screenshots of the praise you got in public or private channels. If you think these praises are obvious, still add them. Your manager can neither see nor capture all of them.&lt;/p&gt;
&lt;h2&gt;Share the document with your manager in advance&lt;/h2&gt;
&lt;p&gt;Send the document to your manager at least a week or two before the meeting and ask for feedback. Your manager needs time to read and digest it. Let them know that you&apos;re open to any questions about the document.&lt;/p&gt;
&lt;h2&gt;Compensation&lt;/h2&gt;
&lt;p&gt;The next thing you should do is prepare for the expected compensation change. I know that many people don&apos;t negotiate it at all, especially people from underrepresented groups. But you&apos;re giving service, and it hopefully has a lot of return to the company. On top of that, the market for software engineers is so high right now; companies and managers are doing whatever they can to keep people in.&lt;/p&gt;
&lt;p&gt;Money might not be your primary motivator. However, money is what you get in return for labor, and if your value is higher than before, you should get more.&lt;/p&gt;
&lt;p&gt;Be mindful of negotiation. It doesn&apos;t always have to be about salary increase; approach holistically. If you can&apos;t get the salary you wish for, what would you prefer instead? More vacation days (paid time off)? Less working hours? One-time bonus? Extra training allowance? Stock options? Equity? Make a plan with possible scenarios, and make another backup plan if some scenarios don&apos;t work. Whatever you do, don&apos;t go to the review meeting without thinking about it.&lt;/p&gt;
&lt;p&gt;Don&apos;t let your manager decide anything alone. The annual review is not a monologue. It&apos;s about you, your impact, the company&apos;s options, and the market. The meeting should be a bidirectional communication. Better communication requires both parties to know what you have done, what both sides want, and what everyone needs.&lt;/p&gt;
&lt;p&gt;Thanks a lot!&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;strong&gt;&lt;a href=&quot;/the-good-the-bad-and-the-ugly-of-career-ladders-and-frameworks/&quot;&gt;Know your career system.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Two Topics From Me&lt;/h2&gt;
&lt;p&gt;I&apos;ve recently finished the book Worth Doing Wrong by Arnie S. Malham. I found out about this book when I was searching for books related to changing the culture at work. After keeping it on my wish list on Amazon, my manager bought it as a job anniversary gift.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🔖 &lt;a href=&quot;/books/worth-doing-wrong-book-summary-review-and-notes/&quot;&gt;Worth Doing Wrong Book Summary, Review, and Notes&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In our conversation on the season finale episode, Jesper talks about the differences between Machine Learning and Data Science, how to enter the field, and how and why life scientists shift their focus to Data Science.
​
We talk about how businesses should approach data as the processes and methodologies are completely different from software engineering.&lt;/p&gt;
&lt;p&gt;🎙 &lt;strong&gt;PODCAST: &lt;a href=&quot;https://candost.substack.com/p/26-machine-learning-and-data-science&quot;&gt;#26: Machine Learning and Data Science with Jesper Dramsch&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;One Topic from Others&lt;/h2&gt;
&lt;p&gt;Gergely is one of the people I have been following for a long time. Based on his experience in Uber, Skype, Skyscanner, and more, he wrote pieces of advice for software engineers to get the most out of the current heated market. Read it to learn more about how you can turn this opportunity to your advantage, whether you stay in your job or leave.&lt;/p&gt;
&lt;p&gt;​&lt;a href=&quot;https://blog.pragmaticengineer.com/advice-for-tech-workers-to-navigate-a-heated-job-market/&quot;&gt;The Most Heated Tech Job Market in History: Advice for Software Engineers&lt;/a&gt;​&lt;/p&gt;
&lt;h2&gt;One Question for You&lt;/h2&gt;
&lt;p&gt;Think about this question to reflect and learn more about your skills.&lt;/p&gt;
&lt;p&gt;Why is the team stronger because you’re part of it? (&lt;a href=&quot;https://shop.beplucky.com/products/the-plucky-1-1-starter-pack&quot;&gt;Credit&lt;/a&gt;)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-19/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-19/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Clarify the expected outcome and the action it requires in written form to get it out of your mind</title><link>https://candost.blog/notes/16b/</link><guid isPermaLink="true">https://candost.blog/notes/16b/</guid><pubDate>Mon, 29 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we have tasks or other things that keep our minds busy, we usually think about them without taking action. This creates anxiety because we don&apos;t do these things; they just constantly occupy our minds.&lt;/p&gt;
&lt;p&gt;When we write them down, we stop thinking about them. Because we trust ourselves that we will take care of it, we don&apos;t need to contemplate it anymore.&lt;/p&gt;
&lt;p&gt;That&apos;s what typically happens when we procrastinate or forget to write down. The important thing is that we need to keep them out of our minds to relax and get things done at the same time.&lt;/p&gt;
&lt;p&gt;We need to clarify to get it done. When we manage projects, we split everything into small chunks, especially in scrum. However, we fail to follow a similar strategy when we are at upper levels in our careers or managing projects vertically and horizontally. Especially managing time becomes difficult if we don&apos;t clarify tasks. We start excusing ourselves by saying, “I&apos;m busy.” while the reality lacks clarity: we don&apos;t define what “done” means (outcome) and what it looks like (action).&lt;/p&gt;
&lt;p&gt;When both are written down in tasks, it is usually easy to take care of them. Once we know what we will do and the expected outcome, we can take the task on time and finish it properly.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Getting Things Done by David Allen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/16b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/16b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Have a single highlight of the day</title><link>https://candost.blog/notes/16c/</link><guid isPermaLink="true">https://candost.blog/notes/16c/</guid><pubDate>Mon, 29 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A daily highlight is a method for focusing on your day. A flexible highlight that is achievable within 60-90 minutes of focused time keeps your attention on one thing. If you achieve your highlight during the day, you&apos;re done with the day.&lt;/p&gt;
&lt;p&gt;Having a highlight helps you adjust other tasks to create space for it. If your calendar is full of meetings, you will look for ways to create a space to work on your highlight.&lt;/p&gt;
&lt;p&gt;If you realize you can&apos;t achieve your highlight of the day, you can still change it in the middle of the day. You can also use the same highlight on multiple days if you haven&apos;t finished yet. Flexibility is the power of the highlight. But keep your highlights within the 60-90-minute achievable range.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/make-time-book-summary-review-and-notes/&quot;&gt;Make Time by Jack Knapp and John Zeratsky&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/16c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/16c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Difference between an amateur and a professional</title><link>https://candost.blog/notes/41a/</link><guid isPermaLink="true">https://candost.blog/notes/41a/</guid><pubDate>Mon, 29 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we start a hobby as an amateur, we are okay with dropping it or not doing it for a while. But we&apos;re not okay with failure. Wherever we have a setback or failure, we demoralize ourselves and have a really hard time standing up again.&lt;/p&gt;
&lt;p&gt;At the same time, in our professional endeavors, we never drop. Even when we&apos;re not in the mood to go to work, unmotivated, frustrated, or have other feelings, we still get up and do the job. This difference in mindset makes everything different. What about if we choose some of our hobbies and approach them professionally? Instead of falling down in every negative feedback or getting demoralized when people don&apos;t care about us, we take them as feedback and still keep going.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;1: Why do we bother to write?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2a/&quot;&gt;2a: Take breaks to write better&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;31: Accountability and Learning Culture in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/28/&quot;&gt;28: Mental Health for Professionals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/14/&quot;&gt;14: Experiences are like compound interest on money&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/9/&quot;&gt;9: Growing does not always mean being an expert&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://stevenpressfield.com/books/the-war-of-art/&quot;&gt;The War of Art by Steven Pressfield&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/41a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/41a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Not everyone has to have a passion for work</title><link>https://candost.blog/notes/53a/</link><guid isPermaLink="true">https://candost.blog/notes/53a/</guid><pubDate>Mon, 29 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve worked with people who want to bring money home and keep their passion for something else. This is entirely normal. Many people don&apos;t look to find meaning in their jobs. For them, it&apos;s just a job that enables them to live the way they want.&lt;/p&gt;
&lt;p&gt;As leaders, our job is not to give them meaning in life at work. Our job is to understand each person&apos;s desire and motivation and create an environment where they can find their own meanings in their own ways.&lt;/p&gt;
&lt;p&gt;Not everyone has to have a passion for work, and it&apos;s okay. If they still try their best and do that job well, there is no need for passion in these people.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b5/&quot;&gt;3b5: Asking Questions to Build Trust with A Direct Report&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Radical Candor by Kim Scott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/53a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/53a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why do we bother to write?</title><link>https://candost.blog/notes/1/</link><guid isPermaLink="true">https://candost.blog/notes/1/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There are many reasons why we must write:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Writing is thinking. It shapes thoughts. We &lt;em&gt;learn&lt;/em&gt; fresh ideas when we write them. Whatever we read, watch, and listen to is not ours. We internalise them by writing them in complete sentences.&lt;/li&gt;
&lt;li&gt;Writing is remembering. The thoughts that only stay in our minds abandon us quickly. There is a Turkish saying, “Expression flies; writing stays.” When something is written, it&apos;s permanent.&lt;/li&gt;
&lt;li&gt;Writing frees the mind from clutter and opens new places for fresh ideas. Whatever we write, we don&apos;t have to think about it anymore. It&apos;s written, shaped, and out of our minds. We now have more room for new thoughts.&lt;/li&gt;
&lt;li&gt;Writing is creating. We make connections between ideas when we start writing more and more. Creating a network of thoughts not only helps us reflect on our thoughts but also improves our thought processes. We generate new ideas when we connect written ideas.&lt;/li&gt;
&lt;li&gt;Writing is sharing. A written idea is not always individual. We share it with others, get feedback, and open more discussions about the topics we write about. We create communities, enhance the knowledge of the community and move forward.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17a/&quot;&gt;On writing’s impact on choosing a topic for public speaking&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;Writing brings the habits from the automatic brain to awareness&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;The writing has to reach to the audience at some point without falling into the editing trap&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2c/&quot;&gt;A strategy to unlock the writer’s block&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25d/&quot;&gt;I commit to writing&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;How to Stop Endless Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/why-is-writing-important/&quot;&gt;Why is Writing Important?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Individual Contributor or Manager</title><link>https://candost.blog/notes/10/</link><guid isPermaLink="true">https://candost.blog/notes/10/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How to make a career decision?&lt;/p&gt;
&lt;p&gt;Ask yourself and answer truly: Do you imagine yourself in five years still coding the same thing or coding at least?&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8a/&quot;&gt;8a: Making the decision between management or IC Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/10/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/10/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Growing in IC track in Engineering</title><link>https://candost.blog/notes/10a/</link><guid isPermaLink="true">https://candost.blog/notes/10a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Growing in seniority requires more autonomous work. One needs to be able to work independently from others and in ambiguity. Helping others improve what they are doing becomes the kind of motto. Clear, concise, and transparent communication in written form is absolutely necessary. If the writing is abysmal, explaining the stuff in mind to others will not be easy. Last but not least, asking the right questions is one of the underrated skills, along with being kind.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;12: Engineer Autonomy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/13/&quot;&gt;13: Be Kind at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;4a: On Being Curious&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1g/&quot;&gt;1g: Winners and losers share the same goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1h/&quot;&gt;1h: Continuous Improvement Means Changing The System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/38/&quot;&gt;38: Changing Habits Happen in Three Different Ways&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27b/&quot;&gt;27b: How to Learn New Things via Habit Stacking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17d/&quot;&gt;17d: Focus on only one improvement in every rehearsal for public speaking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27f/&quot;&gt;27f: Try to keep your learning in &apos;Just Manageable Difficulty&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://candost.substack.com/p/9-engineering-career-path&quot;&gt;Software World with Candost #9 - Engineering Career Path with Tobias Bales&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/10a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/10a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Doing side projects helps you test your ideas</title><link>https://candost.blog/notes/10b/</link><guid isPermaLink="true">https://candost.blog/notes/10b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you have the energy, do side projects where you can test what you&apos;ve learned in a sandbox environment. While growing, you need to be able to identify the gaps in your knowledge, and you need a place to test your ideas first before applying them to work in production.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://candost.substack.com/p/9-engineering-career-path&quot;&gt;Software World Podcast #9: Engineering Career Path - Tobias Bales&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/10b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/10b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to move to the next level</title><link>https://candost.blog/notes/11/</link><guid isPermaLink="true">https://candost.blog/notes/11/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Look at the defined career path in your company. If you don&apos;t have one, ask your manager about the expectations. List them down and learn what moving to the next level requires. Then focus on achieving them one by one. While doing this, write down all the things you&apos;re doing on the way.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/11/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/11/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Engineer Autonomy</title><link>https://candost.blog/notes/12/</link><guid isPermaLink="true">https://candost.blog/notes/12/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The senior and above levels are more autonomous than juniors or lower levels. Prove your autonomy. But don&apos;t create a silo of your own. You should be able to work by yourself while still sharing what you&apos;ve learned and done on the way, and bring people to the solution.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/12/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/12/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Be Kind at Work</title><link>https://candost.blog/notes/13/</link><guid isPermaLink="true">https://candost.blog/notes/13/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Be kind. If you&apos;re working with juniors, they can make mistakes, but they are still people. Be a decent human being. Nothing comes out of being a dickhead. You cannot have a bigger impact if you are a dickhead.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://candost.substack.com/p/9-engineering-career-path&quot;&gt;Software World with Candost 9&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/13/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/13/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Experiences are like compound interest on money</title><link>https://candost.blog/notes/14/</link><guid isPermaLink="true">https://candost.blog/notes/14/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The effects of our habits multiply over time. Same as habits, in our career, whatever we focus on, our knowledge and experience multiply over time as well. In each area, we start small but each added knowledge creates an exponential growth. All our experiences add to our career development, like money multiplying through compound interest.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10a/&quot;&gt;10a: Growing in IC track in Engineering&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30b1/&quot;&gt;30b1: Immunity to suffering requires healthy doses of pain&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/14/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/14/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What should you do when your manager delegates a task to you</title><link>https://candost.blog/notes/15/</link><guid isPermaLink="true">https://candost.blog/notes/15/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you get a delegated task, get as much information as possible. Ask what the manager has in mind to complete this task. How would &lt;em&gt;your manager&lt;/em&gt; approach the task? There are multiple ways they delegate the task to you. Clarify their expectations.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do they want completed work returned for confirmation?&lt;/li&gt;
&lt;li&gt;Do they delegate everything and trust you to do the job and they don’t mind seeing the result?&lt;/li&gt;
&lt;li&gt;Do they want you to come up with a plan before the execution and get a confirmation?&lt;/li&gt;
&lt;li&gt;Do they want you to come up with a plan only for optional feedback but you’re free to go to the execution?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are many ways to delegate and it also depends on the relationship and the task at hand. So if you’re a manager, be clear about what you delegate to a person. Make everything clear in the beginning so that you won’t have any problems later on. Make sure that you won’t block your direct report.&lt;/p&gt;
&lt;p&gt;People sometimes don&apos;t complain even if the delegation is not clear. It doesn&apos;t mean that that is a problem. When something is not right, it will come back to you. Don&apos;t stress over it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32a/&quot;&gt;32a: Continually and consistently repeat the message&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b/&quot;&gt;24b: Specify goals instead of methods or processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/35/&quot;&gt;35: Protective Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40b/&quot;&gt;40b: Creating accidental adversaries&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/15/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/15/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Managing Time as a Manager</title><link>https://candost.blog/notes/16/</link><guid isPermaLink="true">https://candost.blog/notes/16/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you are waiting for work to be completed, think about what the future will look like. If you have time, plan for it.&lt;/p&gt;
&lt;p&gt;When you have time, make sure that others have what they need to do the work. Catch up with them and ask them if they need something from you.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19d/&quot;&gt;19d: Why can&apos;t this be done sooner?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/16/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/16/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Meetings of a manager</title><link>https://candost.blog/notes/16a/</link><guid isPermaLink="true">https://candost.blog/notes/16a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The meetings are where the actual work happens. Don’t think you don’t have time to complete the work. In the meetings, thoughts are discussed, ideas are reviewed, and decisions are made.&lt;/p&gt;
&lt;p&gt;There is no escape from the meetings in management. Even if the team is remote, you’ll have one-on-ones, planning meetings, etc. It’s not avoidable.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19d/&quot;&gt;19d: Why can&apos;t this be done sooner?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/16a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/16a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Public Speaking and Improving Skills</title><link>https://candost.blog/notes/17/</link><guid isPermaLink="true">https://candost.blog/notes/17/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Give people a couple of questions before the talk and let them prepare to increase engagement.&lt;/p&gt;
&lt;p&gt;If the talk is online, they should write to the chat so that there is an engagement going on.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20a/&quot;&gt;20a: Thinking out loud&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17b/&quot;&gt;17b: Increasing Public Speaking Skills&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17f/&quot;&gt;17f: Make key takeaways clear on your talk&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17g/&quot;&gt;17g: Prepare and ask questions to create engagement&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; A colleague at my previous workplace&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/17/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/17/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Choosing a talk topic is art</title><link>https://candost.blog/notes/17a/</link><guid isPermaLink="true">https://candost.blog/notes/17a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Choosing a talk topic is art. You need to take a look at the roots of a challenge or a problem you solved. You must define what you are talking about—is it people-related or deliverables-related? Share your progress. Reassess your solution. Could you have chosen a better approach? What are the mistakes or failures?&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Demystifying Public Speaking by Lara Hogan&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/17a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/17a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Increasing Public Speaking Skills</title><link>https://candost.blog/notes/17b/</link><guid isPermaLink="true">https://candost.blog/notes/17b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Flip your fear and anxiety about public speaking to &quot;deeply caring about the topic or subject&quot; you are gonna talk about. There is no shame in caring about stuff.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27f/&quot;&gt;27f: Try to keep your learning in &apos;Just Manageable Difficulty&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1i/&quot;&gt;1i: Embrace &amp;amp; Love Boredom&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2c/&quot;&gt;2c: Write a letter to a friend&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41c/&quot;&gt;41c: Do something principle&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Demystifying Public Speaking by Lara Hogan&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/17b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/17b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Do whatever works for you in your public speaking</title><link>https://candost.blog/notes/17c/</link><guid isPermaLink="true">https://candost.blog/notes/17c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&quot;Do what works for you.&quot; When you want to present a topic, don&apos;t listen to the cliches such as &quot;Never say umm.&quot; Doing what works for you brings authenticity, invites vulnerability, and forces you to be open to new things.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Demystifying Public Speaking by Lara Hogan&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/17c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/17c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Focus on only one improvement in every rehearsal for public speaking</title><link>https://candost.blog/notes/17d/</link><guid isPermaLink="true">https://candost.blog/notes/17d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In every practice run, focus on one improvement area and try developing it. When focusing on multiple areas, it is difficult to catch nuances.&lt;/p&gt;
&lt;p&gt;If you make a mistake, don&apos;t start over. Finish the whole talk first.&lt;/p&gt;
&lt;p&gt;Learn how to cover screw-ups one by one.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Demystifying Public Speaking by Lara Hogan&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/17d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/17d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Transform your nervousness into mindfulness in public speaking</title><link>https://candost.blog/notes/17e/</link><guid isPermaLink="true">https://candost.blog/notes/17e/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Transform nervous thinking to mindful thinking in public speaking. Instead of saying, &quot;I&apos;m nervous,&quot; say, &quot;I&apos;m getting an adrenaline rush because I&apos;m excited, and adrenaline helps me to concentrate.&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/17e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/17e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Make key takeaways clear on your talk</title><link>https://candost.blog/notes/17f/</link><guid isPermaLink="true">https://candost.blog/notes/17f/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Choose the key takeaways so that an attendee of your talk can directly apply them when they are back at work. Also, don&apos;t forget to give context so they understand the key points well.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Demystifying Public Speaking by Lara Hogan&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/17f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/17f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Prepare and ask questions to create engagement</title><link>https://candost.blog/notes/17g/</link><guid isPermaLink="true">https://candost.blog/notes/17g/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ask questions to the audience to create engagement. Put yourself into the audience&apos;s shoes. They are strangers to you. Will they still get the joy? Will they understand why you think this topic is important? Will they learn something new?&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Demystifying Public Speaking by Lara Hogan&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/17g/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/17g/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Understand The Public Talk Feedback You Get</title><link>https://candost.blog/notes/17i/</link><guid isPermaLink="true">https://candost.blog/notes/17i/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;LifeLabs Learning developed a rubric to define four kinds of feedback on a public talk.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hearts ♥️: Positive, but not specific. (I liked your talk)&lt;/li&gt;
&lt;li&gt;Diamonds ♦️: Positive, specific, and actionable. (Your talk is good. If you do this, it can be great)&lt;/li&gt;
&lt;li&gt;Spades ♠️: Negative, actionable suggestions.&lt;/li&gt;
&lt;li&gt;Clubs ♣️: Negative, not specific or constructive.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Always look for Diamonds♦️ and Spades ♠️.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30c/&quot;&gt;30c: Choose good values and good metrics in life&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44c/&quot;&gt;44c: Confrontation brings honesty&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44d/&quot;&gt;44d: Without conflict, there can be no trust&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40/&quot;&gt;40: Understanding the Feedback You Receive&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://blog.ed.ted.com/2017/11/09/how-to-give-effective-feedback-on-a-talk/&quot;&gt;How to give effective feedback on a talk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/17i/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/17i/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Inform viewers about questions</title><link>https://candost.blog/notes/18/</link><guid isPermaLink="true">https://candost.blog/notes/18/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tell in the beginning that you expect your audience to write something in the chat, or you’ll have the options to invite them to talk directly. When they know that they will be asked to engage, they can shake the “shyness.”&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; A colleague at my previous workplace&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/18/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/18/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Knowns and Unknowns</title><link>https://candost.blog/notes/19a/</link><guid isPermaLink="true">https://candost.blog/notes/19a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Choosing the technology, creating a new product, or even a company has its stages. In each stage, we figure out how to approach a problem. There are two different unknowns. We have known unknowns. We know that there is a thing we have to do, but we don&apos;t know how to do it or what happens if things go wrong. There are also unknown unknowns that we have no idea exist. New technologies often come with many unknown unknowns. We don&apos;t know what can go wrong.&lt;/p&gt;
&lt;p&gt;We should not only be careful but also consider many different perspectives and take a look at the maturity of our new choice.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;We can find out some unknowns with collaboration.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4b/&quot;&gt;4b: Monitoring &amp;amp; Inspection to Learn&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24d/&quot;&gt;24d: Strong product teams solve customer problems, instead of output&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19d/&quot;&gt;19d: Why can&apos;t this be done sooner?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19e/&quot;&gt;19e: How to make faster decisions by validating objections?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://mcfunley.com/choose-boring-technology&quot;&gt;Choose Boring Technology&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Choosing the old technology</title><link>https://candost.blog/notes/19a1/</link><guid isPermaLink="true">https://candost.blog/notes/19a1/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When technology is boring, it has its standards set. We not only know how to use it but also know the failures if we use it wrong. New technologies have more unknown unknowns than older ones. Older ones have that too, but the set is a lot smaller.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href=&quot;https://mcfunley.com/choose-boring-technology&quot;&gt;Choose Boring Technology&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19a1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19a1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The process of choosing a new technology</title><link>https://candost.blog/notes/19a2/</link><guid isPermaLink="true">https://candost.blog/notes/19a2/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Choosing a new technology is a process and a conversation, and we need to facilitate that.&lt;/p&gt;
&lt;p&gt;We need to consider how we can solve our current problems without adding a new thing.&lt;/p&gt;
&lt;p&gt;We need to write down why solving the problem with the current stack is difficult and expensive.&lt;/p&gt;
&lt;p&gt;We need to set clear expectations when you want to migrate old technology to the new one.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;How to Stop Endless Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://mcfunley.com/choose-boring-technology&quot;&gt;Choose Boring Technology&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19a2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19a2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Consent-Based Decision Making</title><link>https://candost.blog/notes/19b/</link><guid isPermaLink="true">https://candost.blog/notes/19b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Deciding and Trusting scales from The Culture Map form Consent-based decision-making.
You have to trust in task-based, low-level communication about why and egalitarian leading, top-down decisions.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b/&quot;&gt;24b: Specify goals instead of methods or processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/38/&quot;&gt;38: Changing Habits Happen in Three Different Ways&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27c/&quot;&gt;27c: Why Environment Matters More Than You Think When Building Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19e/&quot;&gt;19e: How to make faster decisions by validating objections?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52a/&quot;&gt;52a: Accepting one thing requires saying no to other things&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;The Culture Map by Erin Meyer&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to move faster in organizations</title><link>https://candost.blog/notes/19c/</link><guid isPermaLink="true">https://candost.blog/notes/19c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Businesses work with making decisions and executing the decisions. To move faster, first, decide &lt;em&gt;when&lt;/em&gt; the decision will be made in the beginning. &lt;em&gt;When&lt;/em&gt; the decision is made is more important than &lt;em&gt;which&lt;/em&gt; decision is made.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://review.firstround.com/speed-as-a-habit&quot;&gt;Speed As a Habit by David Girouard on FirstRound Magazine&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why can&apos;t this be done sooner?</title><link>https://candost.blog/notes/19d/</link><guid isPermaLink="true">https://candost.blog/notes/19d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Good decisions consist of gathering input and pushing toward it. Ask, &quot;Why can&apos;t this be done sooner?&quot; to achieve both. When moving fast, people should have a low level of discomfort. This indicates that they are out of their comfort zone. If we&apos;re going too fast, we can see this in the faces of team members.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/26/&quot;&gt;26: The Cost of Software Deployment and Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://review.firstround.com/speed-as-a-habit&quot;&gt;Speed As a Habit by David Girouard on FirstRound Magazine&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to make faster decisions by validating objections?</title><link>https://candost.blog/notes/19e/</link><guid isPermaLink="true">https://candost.blog/notes/19e/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How can we validate objections to make faster decisions that are &quot;safe to try?&quot;&lt;/p&gt;
&lt;p&gt;Give everyone a chance to object to the decision by asking&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Does anyone have evidence why trying this proposal would cause immediate harm? If so, please suggest an edit that would make it safe to try.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Whenever you hear an objection, ask three questions in order.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Are you objecting because you have a better idea? Yes → Invalid objection.&lt;/li&gt;
&lt;li&gt;Is the problem you foresee a future problem or now problem? Future → Invalid objection&lt;/li&gt;
&lt;li&gt;Will that &quot;now problem&quot; be easy to recover from? Yes → Invalid objection.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30/&quot;&gt;30: Scientific Thinking and Fact-Checking for A Better Life&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44h/&quot;&gt;44h: Present humility and ask questions to persuade others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; From The Decision-Making workshop (by &lt;a href=&quot;https://www.aug.co/&quot;&gt;aug.co&lt;/a&gt;) that I attended from a previous workplace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;How to Handle and Overcome Objections to Your Proposal&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/19e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/19e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Writing by Hand</title><link>https://candost.blog/notes/1b/</link><guid isPermaLink="true">https://candost.blog/notes/1b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Writing by hand is more effective than writing on a computer or other electronic device. Handwriting forces us to understand the fundamental idea, concept, and structure of the thought better. The main reason is that handwriting is slow. We cannot be faster to write everything we hear. We have to be selective and write what we understand in the clear and the shortest way possible.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2/&quot;&gt;Handwriting also happens together with editing and rewriting&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; How to Take Smart Notes Book&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Take Literature Notes</title><link>https://candost.blog/notes/1c/</link><guid isPermaLink="true">https://candost.blog/notes/1c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Write briefly what you understood and your thoughts in your own sentences.&lt;/p&gt;
&lt;p&gt;Keep all notes in one place.&lt;/p&gt;
&lt;p&gt;Sort them alphabetically with surname_year format.&lt;/p&gt;
&lt;p&gt;Match them with bibliographic details in your system.&lt;/p&gt;
&lt;p&gt;The goal is understanding the text and preparing to transfer ideas into the context of our own thought lines in the slip-box.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; How to Take Smart Notes Book&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Adding a New Note To Slip-Box</title><link>https://candost.blog/notes/1d/</link><guid isPermaLink="true">https://candost.blog/notes/1d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we try to place a new note, the slip-box&apos;s chain-of-notes strategy forces us to think about the connections with other notes, including unrelated ones.&lt;/p&gt;
&lt;p&gt;Instead of directly relating the note to something, we are nudged not to fit the idea into the existing line of thought and create a new line of thought. That&apos;s the beauty of Zettelkasten.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; How to Take Smart Notes Book&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Contradictions in ideas within a thought line</title><link>https://candost.blog/notes/1e/</link><guid isPermaLink="true">https://candost.blog/notes/1e/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Contradictions within the slip-box can be discussed further in the thought line. We find (and discover) opposite thoughts when we try to place the note in the slip-box. The most important part is connecting the note with as many thoughts as possible (while keeping a close relationship). However, it doesn&apos;t mean that opposing thoughts can&apos;t stay together. We can still discuss the contradiction within a line of thought.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; How to Take Smart Notes Book&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Elaboration on an idea</title><link>https://candost.blog/notes/1f/</link><guid isPermaLink="true">https://candost.blog/notes/1f/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The most successful learning method is the elaboration of what we&apos;ve learned. When we elaborate, we first think about what we read. Then when we think about and write it, we start considering how it informs different questions and topics. And when we try to relate the note with our previous notes, we think about how it could combine with them.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; How to Take Smart Notes Book&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Winners and losers share the same goals</title><link>https://candost.blog/notes/1g/</link><guid isPermaLink="true">https://candost.blog/notes/1g/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Achieving goals are only for the moment. Winners focus on the systems and how to improve them. Losers only focus on the goal. Once they reach the goal, they are done. Winners are never done. Because the goals create &quot;Either-or&quot; conflict, it doesn&apos;t bring endless happiness. Setting goals means winning the game. When we focus on building systems and our mechanisms, we stay in the game.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;Growth with Systematic Bliss&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1g/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1g/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Continuous Improvement Means Changing The System</title><link>https://candost.blog/notes/1h/</link><guid isPermaLink="true">https://candost.blog/notes/1h/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the most common systems in the software industry is continuous improvements. When we don&apos;t make the improvement, systems start to rot. However, we don&apos;t change our goal while making an improvement. Continuous improvement means changing the systems, not the goal.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1h/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1h/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Embrace &amp; Love Boredom</title><link>https://candost.blog/notes/1i/</link><guid isPermaLink="true">https://candost.blog/notes/1i/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&quot;You have to fall in love with boredom.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This sentence has many aspects. Producing something valuable and being a creator requires dealing with boredom. Having a deep life with meaning requires knowing and facing boredom. For example, if you want to improve your writing, there are many days that you will look at the empty page for a long time. If you distract yourself and check social media, you will not write anything. Embrace boredom so that you can do some exercises over and over and over again, even if you are not in the mood to do them. &quot;The only way to become excellent is to be endlessly fascinated by doing the same thing over and over. You have to fall in love with boredom.&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1i/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1i/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Improve Writing</title><link>https://candost.blog/notes/2/</link><guid isPermaLink="true">https://candost.blog/notes/2/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Rewrite to learn what you didn&apos;t write&lt;/h2&gt;
&lt;p&gt;When we rewrite the text we have written, we learn about the parts we didn&apos;t know before. The first writing puts the raw idea out. Editing and rewriting shape the idea and perfect it. Putting the raw idea on paper is a sculptor&apos;s drawing on the paper; rewriting it is making the sculpture. We see the small details and nuances when we start rewriting. We connect dots that we missed at first. We learn what we haven&apos;t thought about yet.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Bird by Bird by Anne Lamott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Influencing Others</title><link>https://candost.blog/notes/20/</link><guid isPermaLink="true">https://candost.blog/notes/20/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we share our thinking with someone early enough, we can generate more ideas, and people can get on board way easier, especially if we incorporate some of their suggestions into the plan.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/26/&quot;&gt;26: The Cost of Software Deployment and Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19d/&quot;&gt;19d: Why can&apos;t this be done sooner?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23c/&quot;&gt;23c: How to give positive feedback?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Think Less Learn More by Srini Pillay&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Thinking out loud</title><link>https://candost.blog/notes/20a/</link><guid isPermaLink="true">https://candost.blog/notes/20a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In discussions at work, encourage people to &quot;think out loud.&quot; Do the same. Then, people will stop thinking about authority and explain their opinions as well.&lt;/p&gt;
&lt;p&gt;The same might work with saying, &quot;Let me play devil&apos;s advocate&quot; from &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;The Culture Map by Erin Meyer&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Sharing knowledge is not a noise</title><link>https://candost.blog/notes/20b/</link><guid isPermaLink="true">https://candost.blog/notes/20b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Knowledge sharing might seem like a lot of noise. However, when the knowledge is/might affect someone else, then it is worth it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/20b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/20b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Efficient Code Review Process (The changes I wanted to do in one of my teams)</title><link>https://candost.blog/notes/21/</link><guid isPermaLink="true">https://candost.blog/notes/21/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;3 people assigned and two reviews are required. The more the merrier.&lt;/p&gt;
&lt;h2&gt;Why do I want to do?&lt;/h2&gt;
&lt;p&gt;We have a lot of (unintentionally) hidden knowledge about our services.&lt;/p&gt;
&lt;p&gt;Domain knowledge is not spread across the team.&lt;/p&gt;
&lt;p&gt;Learning domain knowledge is hard if you are trying to discover it by yourself. There are many legal or non-legal aspects of the features.&lt;/p&gt;
&lt;p&gt;Onboarding people is hard, and our onboarding process still needs to get better.&lt;/p&gt;
&lt;h2&gt;What I want to do - and what&apos;s the value of that?&lt;/h2&gt;
&lt;p&gt;I want to&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Increase the number of code reviewers to three&lt;/li&gt;
&lt;li&gt;Set merge requirements to two approvals&lt;/li&gt;
&lt;li&gt;Automatically assign people using the &lt;strong&gt;Load Balance&lt;/strong&gt; algorithm instead of &lt;strong&gt;Round Robin&lt;/strong&gt; as the &lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-organizations-and-teams/managing-code-review-assignment-for-your-team#routing-algorithms&quot;&gt;routing algorithm&lt;/a&gt; within the whole team, not task-forces.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Value &amp;amp; Goals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prevent creating new unintentionally hidden knowledge&lt;/li&gt;
&lt;li&gt;Increase domain knowledge&lt;/li&gt;
&lt;li&gt;Increase tech stack knowledge&lt;/li&gt;
&lt;li&gt;Give and receive more valuable and effective feedback from different members&lt;/li&gt;
&lt;li&gt;Have a better onboarding process&lt;/li&gt;
&lt;li&gt;Increase communication between task-forces&lt;/li&gt;
&lt;li&gt;Improve code quality.&lt;/li&gt;
&lt;li&gt;Lower the efforts in new feature/project planning phases.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How do I want to do?&lt;/h2&gt;
&lt;p&gt;I will go to GitHub team management and change everything as I propose above.&lt;/p&gt;
&lt;p&gt;I will remove squad GitHub groups. I will keep task-force groups. If someone has a question related to the task force, they will be able to mention others.&lt;/p&gt;
&lt;h2&gt;What you will have to (do/learn/change) after I finish it&lt;/h2&gt;
&lt;p&gt;You will use only the team group on Github (and remove other subgroups) while assigning code reviewers.&lt;/p&gt;
&lt;p&gt;This process will require everyone to review the code of others and other projects actively. It will add a little bit of overhead. But an important and valuable one.&lt;/p&gt;
&lt;p&gt;You will have to learn each task force’s mission and their work. You will have to spend some time reading Jira tickets and ask questions proactively to challenge others.&lt;/p&gt;
&lt;p&gt;The code reviews will probably take &amp;gt;0.5 days per person per week, but I don’t expect it to take more than one day per week.&lt;/p&gt;
&lt;h2&gt;Risks&lt;/h2&gt;
&lt;p&gt;If we change the code review mentality from “yet another task to do” to “it’s another chance to make this team better than I found,” we can lower the following risks.&lt;/p&gt;
&lt;p&gt;PR review waiting times might get longer.&lt;/p&gt;
&lt;p&gt;People will not actively review the code but will let the third person do it.&lt;/p&gt;
&lt;p&gt;Communication overhead. If people don’t check the code at a certain time, it will require pinging people in person to take a look at the code. To lower this risk, everyone can review once a day the PRs that they have been assigned.&lt;/p&gt;
&lt;h2&gt;Measurement&lt;/h2&gt;
&lt;p&gt;Faster software designing for new projects, features. (We can measure how much time it will take us to plan the next feature/project implementation and compare with the last one)&lt;/p&gt;
&lt;p&gt;Fewer bug reports. It’s hard to directly measure since we’re using different projects, boards, etc. But I know that it’s possible in Jira.&lt;/p&gt;
&lt;p&gt;Faster and better onboarding. We will get feedback from the people who are currently in the onboarding stage.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/13/&quot;&gt;13: Be Kind at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a/&quot;&gt;19a: Knowns and Unknowns&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/26/&quot;&gt;26: The Cost of Software Deployment and Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4b/&quot;&gt;4b: Monitoring &amp;amp; Inspection to Learn&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31d/&quot;&gt;31d: Effectively Learn from mistakes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1h/&quot;&gt;1h: Continuous Improvement Means Changing The System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2a/&quot;&gt;2a: Take breaks to write better&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27f/&quot;&gt;27f: Try to keep your learning in &apos;Just Manageable Difficulty&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/21/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/21/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why should we do a code review?</title><link>https://candost.blog/notes/21a/</link><guid isPermaLink="true">https://candost.blog/notes/21a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we&apos;re onboarding, we often don&apos;t know the domain and the system. On a personal level, we have many known unknowns. If we&apos;re a junior developer, then we have many unknown unknowns. That&apos;s why mentoring and code review helps a lot in figuring out what we didn&apos;t know. Especially for junior people, it&apos;s a great strategy to learn because they don&apos;t know if something exists. When a person starts getting experienced in the job, their unknown unknowns in their domain or tech stack start dissolving. However, when they pick something new, the same thing starts again. The code review process helps to share knowledge. If we share our knowledge, we might solve someone else&apos;s unknown unknown.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a/&quot;&gt;19a: Knowns and Unknowns&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/21a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/21a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Four stages of the best code review process</title><link>https://candost.blog/notes/21b/</link><guid isPermaLink="true">https://candost.blog/notes/21b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The most convincing code review happens in four steps. First, make it obvious: explain in a very detailed form. Don&apos;t just say, please change X to Y. Explain the why so the change should be very obvious. Second, make it attractive: explain the benefits of the change. Make the change request very attractive that they want to do it. Third, make it easy. Don&apos;t request a full rewrite. Your changes shouldn&apos;t create hesitancy or devastation, on the other side. Last, make it satisfying. They should &quot;get&quot; a reward after that. You can praise their effort, or do other things to make the code review satisfying. These cannot be done all at the same time. These are in an endless loop and in order. Once there is satisfaction, it should feed into the loop again.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/21b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/21b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Cross-Cultural Communication</title><link>https://candost.blog/notes/22/</link><guid isPermaLink="true">https://candost.blog/notes/22/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the cross-cultural communication scale (low- and high-context), which two communication styles have more conflicts and problems in communication?&lt;/p&gt;
&lt;p&gt;Two high-context cultures: Both high-context cultures try to read the air from their own cultural point of view. But the other side&apos;s cultural difference makes it difficult to grasp the thought behind the scene.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;4a: On Being Curious&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20a/&quot;&gt;20a: Thinking out loud&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17g/&quot;&gt;17g: Prepare and ask questions to create engagement&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44c/&quot;&gt;44c: Confrontation brings honesty&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;The Culture Map by Erin Meyer&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/22/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/22/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t assume while working with people from various cultures</title><link>https://candost.blog/notes/22a/</link><guid isPermaLink="true">https://candost.blog/notes/22a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You shouldn&apos;t assume things. For example, when you are not sure about someone&apos;s religion, you shouldn&apos;t even try celebrating the religious days of their religion. Assuming is one of the worst strategies in cross-cultural communication. It creates awkward moments. Unless you explicitly ask, hypothetical approaches will always be based on stereotypes. But people are not stereotypical.&lt;/p&gt;
&lt;p&gt;Having a diverse workforce is a crucial step for many companies. Leaders in these companies need to build trust with many different cultures. That&apos;s why leaders have to learn when to ask explicitly and how to read between lines. As a practice, ask yourself &quot;is this knowledge come from my assumptions, or did I ask explicitly about it, or did I hear them talking about it before?&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/22a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/22a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The First Question of Feedback Discussions</title><link>https://candost.blog/notes/23/</link><guid isPermaLink="true">https://candost.blog/notes/23/</guid><description>How to give feedback to others? Where do we start?</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Would you be open to hearing some feedback? How do you want to receive feedback? Written? Verbal? In private? In public?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The above phrase is one of the first questions I ask my direct reports. It&apos;s also one of the questions I ask &lt;em&gt;anyone&lt;/em&gt; before giving them feedback.&lt;/p&gt;
&lt;p&gt;Use it. You won&apos;t regret it.&lt;/p&gt;
&lt;p&gt;Before giving any feedback, ask the person how they would like to receive the feedback and in which format—for both negative and positive feedback. Each person is different and wants a different style.&lt;/p&gt;
&lt;p&gt;Many people want to receive negative feedback in private and praise in public. However, don&apos;t put everyone in the same basket. Many &lt;a href=&quot;https://candost.substack.com/p/8-cross-cultural-communication&quot;&gt;cultural influences&lt;/a&gt; impact people&apos;s styles.&lt;/p&gt;
&lt;p&gt;Some people are okay with receiving negative feedback in front of others. But they might not be okay with sharing praise in public. Some folks want to receive feedback in written form upfront to digest it and think about it before talking with you about your feedback.&lt;/p&gt;
&lt;p&gt;Always ask in which form (written or verbal) they would like to receive &lt;em&gt;any&lt;/em&gt; feedback—positive or negative.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;The Culture Map by Erin Meyer&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Give positive feedback at the moment of action</title><link>https://candost.blog/notes/23a/</link><guid isPermaLink="true">https://candost.blog/notes/23a/</guid><description>Positive reinforcement works with timely feedback</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The feedback has its meaning when it&apos;s timely. Positive feedback usually feels like a pat on the shoulder, and we usually think that we can do it at any time. However, positive reinforcement works better when it&apos;s delivered right after the desired behavior. When we reward people at the moment they do something good, they directly connect it to the behavior, and that behavior solidifies. When the reward is late, it loses its meaning, and we begin to have a hard time justifying achievements.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around by David Marquet&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Authority has no impact when action on feedback</title><link>https://candost.blog/notes/23b/</link><guid isPermaLink="true">https://candost.blog/notes/23b/</guid><description>When giving feedback managers shouldn&apos;t expect their authority&apos;s effect on action</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When an authoritative figure (like a CEO or manager at work) gives feedback, the feedback usually has more weight. People often carefully listen. This situation creates a fallacy for leaders: when they give feedback, they expect that everybody will act on it. However, it&apos;s not true. Regardless of authority, if the receiver side doesn&apos;t take the feedback, nobody can force it, including the CEO. They can take action and give notice or even fire the person; however, there is literally nothing they can do besides threatening and forcing other people to take the feedback.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks For The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Be careful with obnoxious aggression</title><link>https://candost.blog/notes/23b1/</link><guid isPermaLink="true">https://candost.blog/notes/23b1/</guid><description>What&apos;s obnoxious aggression and how does it impact?</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Obnoxious Aggression occurs when you give feedback without personally caring about the person. Feedback goes out as pure, non-constructive criticism. It becomes a slap in the face, and you become an asshole boss who stabs people while looking in the eye.&lt;/p&gt;
&lt;p&gt;Obnoxious Aggression also occurs in praise. If you give praise without personally caring about the other side, the praise becomes empty and even detrimental. It begins to be seen as insincere and disgusts people.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Radical Candor by Kim Scott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23b1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23b1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What is Manipulative Insincerity?</title><link>https://candost.blog/notes/23c1/</link><guid isPermaLink="true">https://candost.blog/notes/23c1/</guid><description>Telling people what they want to hear</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In manipulative insincerity, you give feedback to others without personally caring and without challenging them directly. So, you give feedback for the sake of giving feedback. You tell another person what they want to hear instead of your real thoughts. This type of feedback shows that you don&apos;t care about the other person enough.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Radical Candor by Kim Scott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23c1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23c1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t give feedback for the sake of giving feedback</title><link>https://candost.blog/notes/23d/</link><guid isPermaLink="true">https://candost.blog/notes/23d/</guid><description>We can take a step back and look at how each of us contributes to the work</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we give feedback to each other, we sometimes get stuck in the feedback. I once had a direct report asking me to give feedback in their first month on the team. I focused on giving &lt;em&gt;something&lt;/em&gt; as feedback. When we focus on delivering feedback about what they are doing wrong while we have nothing to say, we get stuck. We need to take a step back and look at what each of us is contributing to the work and collaboration. This strategy helps us to find what&apos;s going well and what&apos;s not. When we do this, we see common patterns. Instead of giving empty and wrong feedback, we can deliver meaningful feedback.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to show a blame absorber other factors&apos; impact on the problem</title><link>https://candost.blog/notes/23e/</link><guid isPermaLink="true">https://candost.blog/notes/23e/</guid><description>Working with people who absorbs all the blame</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A blame absorber is a person who &lt;a href=&quot;/dont-take-responsibility-more-and-stop-blaming/&quot;&gt;takes all responsibility and leaves no responsibility to others&lt;/a&gt;. They absorb all responsibilities even if they have nothing to do with it. They don&apos;t count the external factors. We know these people who usually say, &quot;I should/could have done X. It&apos;s all my fault.&quot;&lt;/p&gt;
&lt;p&gt;To show them the effect of other elements, walk them through the big picture, and broaden their perspective without blaming them. First, help them see how they contribute and how their behavior and impact are (you can use situation, behavior, impact modal). Take the second step and explain how their and others&apos; roles and responsibilities clash and create a responsibility conflict and adversaries. Third, show them how the overall system causes or affects these players to act in that way.&lt;/p&gt;
&lt;p&gt;While explaining, don&apos;t load all responsibility into yourself or the system. Let the blame absorber understand how all the factors play a role by showing all factors together. Then, help them understand their part and enable them to take full responsibility for that part, not for the others.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c/&quot;&gt;3c: Giving Ownership to People&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/35/&quot;&gt;35: Protective Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks For The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/dont-take-responsibility-more-and-stop-blaming/&quot;&gt;I&apos;m Sorry. The Project is Delayed and It&apos;s All My Fault&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Just say what you are going to say while giving a damn</title><link>https://candost.blog/notes/23f/</link><guid isPermaLink="true">https://candost.blog/notes/23f/</guid><description>How I improved my feedback skills by just thinking in the radical candor framework</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I started thinking about my feedback and how can I give it in the Radical Candor framework, my feedback already improved because I had to think about challenging people and caring about them. I realized that I already care about people; my only missing part was challenging them directly. Now, I&apos;m looking for ways to challenge people.&lt;/p&gt;
&lt;p&gt;Caring about people is often &lt;a href=&quot;/can-you-fire-your-colleague/&quot;&gt;seen as a weakness&lt;/a&gt; because professionalism doesn&apos;t include personal feelings a lot. But we&apos;re born with caring for others; we currently hide under the professionalism tag and use it as an excuse to be inhuman.
If we have a hard time giving feedback, we can think of a similar but simpler situation and apply techniques from the simpler situation to the complicated one.&lt;/p&gt;
&lt;p&gt;In the end, &quot;If you are holding an authoritative position, just say what you are going to say while giving a damn.&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Radical Candor by Kim Scott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Strong teams are motivated by goals</title><link>https://candost.blog/notes/24/</link><guid isPermaLink="true">https://candost.blog/notes/24/</guid><description>Concrete team goals drive people to success</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;People have different motivation drivers. However, when we form teams, they are motivated by team goals. Individual goals follow behind the team goals. Without an aim for the team to go, they cannot feel successful. No one wants to be in a ship that is just floating in the middle of the sea. If people don&apos;t know where they are headed, they won&apos;t follow at all.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32a/&quot;&gt;32a: Continually and consistently repeat the message&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/35/&quot;&gt;35: Protective Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23a/&quot;&gt;23a: Give positive feedback at the moment of action&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b1/&quot;&gt;24b1: Begin with The End in Mind&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1h/&quot;&gt;1h: Continuous Improvement Means Changing The System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17f/&quot;&gt;17f: Make key takeaways clear on your talk&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27c/&quot;&gt;27c: Why Environment Matters More Than You Think When Building Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19d/&quot;&gt;19d: Why can&apos;t this be done sooner?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33a/&quot;&gt;33a: Invest in growing your employees&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Introduction to OKRs by Christina Wodtke&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/24/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/24/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Creating goals when you join a new team</title><link>https://candost.blog/notes/24a/</link><guid isPermaLink="true">https://candost.blog/notes/24a/</guid><description>Separate Evaluation Feedback from Coaching &amp; Appreciation Feedback In Performance Reviews</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you are joining a new team, one of the first things you should do is learn the goals of the team. If there is nothing, start by figuring out how you can create goals that are ambitious and can gather people around them as much as possible. OKRs are a nice method, but it&apos;s hard to use them in the beginning.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b/&quot;&gt;3b: Joining A Team As A New Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Introduction to OKRs by Christina Wodtke&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/24a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/24a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Specify goals instead of methods or processes</title><link>https://candost.blog/notes/24b/</link><guid isPermaLink="true">https://candost.blog/notes/24b/</guid><description>People should focus on achieving goals, not following rules for the sake of following</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Specifying goals instead of methods creates confidence. When people try to focus on implementing methods to achieve a goal, they get stuck and forget the goal. Their focus only stays on the method implementation. When they focus on goals, they apply the methods better and can even figure out a superior approach as well.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/24b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/24b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Begin with The End in Mind</title><link>https://candost.blog/notes/24b1/</link><guid isPermaLink="true">https://candost.blog/notes/24b1/</guid><description>Set clear and measurable goals for both short and long term</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Writing up evaluations of 1, 3, and 5 years later and thinking ahead clears the mind and creates achievable goals. At the same time, these goals need to be measurable. We can&apos;t say &quot;improve test results&quot; as a goal. We need to define how much we want to improve. Is it 30% or 50%? And these goals have to be aligned with the bigger goals of the organization.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25a/&quot;&gt;25a: You get what you repeat&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1h/&quot;&gt;1h: Continuous Improvement Means Changing The System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17c/&quot;&gt;17c: Do whatever works for you in your public speaking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17f/&quot;&gt;17f: Make key takeaways clear on your talk&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24d/&quot;&gt;24d: Strong product teams solve customer problems, instead of output&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30c/&quot;&gt;30c: Choose good values and good metrics in life&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52a/&quot;&gt;52a: Accepting one thing requires saying no to other things&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40b/&quot;&gt;40b: Creating accidental adversaries&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around by David Marquet&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/24b1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/24b1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>People need clarity, not motivation</title><link>https://candost.blog/notes/24c/</link><guid isPermaLink="true">https://candost.blog/notes/24c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Does &lt;a href=&quot;/notes/25b/&quot;&gt;this&lt;/a&gt; work with tasks at work, too? When people say that they don&apos;t have motivation, do they actually mean they need more clarity? Having a clear picture and unambiguous situations are more desirable at work. We look for more structure and clarity at work.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25b/&quot;&gt;A strategy&lt;/a&gt; to find clarity yourself, instead of waiting for motivation.&lt;/li&gt;
&lt;li&gt;Bringing people clarity needs &lt;a href=&quot;/notes/1/&quot;&gt;writing them down&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/24c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/24c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Strong product teams solve customer problems, instead of output</title><link>https://candost.blog/notes/24d/</link><guid isPermaLink="true">https://candost.blog/notes/24d/</guid><description>Separate Evaluation Feedback from Coaching &amp; Appreciation Feedback In Performance Reviews</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Strong product teams solve problems instead of focusing on delivering a product or a feature (a.k.a. output). Strong product leaders define the strategy and identify the problems for these teams.&lt;/p&gt;
&lt;p&gt;The strategy serves customers (not businesses) but works for the company.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Empowered by Marty Cagan &amp;amp; Chris Jones&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/24d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/24d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Consistent writing brings success</title><link>https://candost.blog/notes/25/</link><guid isPermaLink="true">https://candost.blog/notes/25/</guid><description>Separate Evaluation Feedback from Coaching &amp; Appreciation Feedback In Performance Reviews</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Being a consistent writer is one of the underrated and underestimated skills. If the writing and publishing are not in a rhythm, the success is very low. Most blog authors fail, not because they are bad at writing but because they are not constantly writing and publishing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Most blogs fail because blogging is an ultra-marathon, and the author gave up after a lap around the kiddie pool.&quot; — Monica Lent&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;1: Why do we bother to write?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Starting to write in a big chunk or start small: &lt;a href=&quot;/notes/26a/&quot;&gt;26a: The Bigger Batch-Size Deployment&apos;s Impact on People&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b1/&quot;&gt;24b1: Begin with The End in Mind&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/38/&quot;&gt;38: Changing Habits Happen in Three Different Ways&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/38a/&quot;&gt;38a: Focus on who you want to become, not what you want to achieve&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24c/&quot;&gt;24c: People need clarity, not motivation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17b/&quot;&gt;17b: Increasing Public Speaking Skills&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17h/&quot;&gt;17h: Choosing a topic for content and public speaking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27b/&quot;&gt;27b: How to Learn New Things via Habit Stacking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27c/&quot;&gt;27c: Why Environment Matters More Than You Think When Building Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27d/&quot;&gt;27d: Self-control and motivation are short-term strategies of habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17d/&quot;&gt;17d: Focus on only one improvement in every rehearsal for public speaking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1i/&quot;&gt;1i: Embrace &amp;amp; Love Boredom&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41c/&quot;&gt;41c: Do something principle&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; By Monica Lent in &lt;a href=&quot;https://bloggingfordevs.com/&quot;&gt;Blogging for Devs&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/25/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/25/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>You get what you repeat</title><link>https://candost.blog/notes/25a/</link><guid isPermaLink="true">https://candost.blog/notes/25a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;“You get what you repeat.” — Atomic Habits by James Clear&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Big-win moments are the results of previous actions. These previous actions can build up for a long time.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24c/&quot;&gt;24c: People need clarity, not motivation&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/25a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/25a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Making the habit obvious helps not to wait for motivation</title><link>https://candost.blog/notes/25b/</link><guid isPermaLink="true">https://candost.blog/notes/25b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we fail to form a new habit or get rid of a bad one, we focus on having motivation. But, what we need is clarity on the time and location of the habit. When we have vague dreams, it is easy to rationalize small excuses not to follow the change. Making the actions more obvious helps to take conscious actions in a certain way, even without motivation. The Atomic Habits book suggests using the formula &quot;I will [BEHAVIOR] at [TIME] in [LOCATION].&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24c/&quot;&gt;24c: People need clarity, not motivation&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/25b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/25b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t slip twice</title><link>https://candost.blog/notes/25c/</link><guid isPermaLink="true">https://candost.blog/notes/25c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Don&apos;t slip away from your writing habit twice.&lt;/li&gt;
&lt;li&gt;It&apos;s better to do it every time, even if you can&apos;t make it perfect or as much as you want. Just writing a small piece is better than not writing at all.&lt;/li&gt;
&lt;li&gt;Don&apos;t fall into an all-or-nothing cycle. Do something small rather than fully neglecting it.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/25c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/25c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Commitment gives you freedom</title><link>https://candost.blog/notes/25d/</link><guid isPermaLink="true">https://candost.blog/notes/25d/</guid><description>Saying no to good things enables us to say yes to great things</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Committing to something is perceived as limiting your options, limiting your freedom of choice. But committing brings freedom. Freedom from things that don&apos;t matter.&lt;/p&gt;
&lt;p&gt;When there are many options for the same thing, we get stressed and cannot decide. Especially in the digital age, we are bombarded with different things that ask for our attention.&lt;/p&gt;
&lt;p&gt;Committing to one thing means freedom from distraction. It enables us to work on one thing to excel at it. It keeps our attention on that and discards others.&lt;/p&gt;
&lt;p&gt;Committing is saying no to many other things. It frees us, reduces our stress, and enables us to get better at the things we commit.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/25d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/25d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Cost of Software Deployment and Continuous Delivery</title><link>https://candost.blog/notes/26/</link><guid isPermaLink="true">https://candost.blog/notes/26/</guid><description>Delayed deployments increase the repair cost</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Whenever we delay deploying minor fixes of software (changes in small batches), the repair cost also escalates. The minor work becomes major and requires more work every moment we delay. The increase in effort and expense is non-linear.&lt;/p&gt;
&lt;p&gt;When the batch size becomes larger, people start multitasking in deployments because they have many different things to take a look at. Deployment often takes a long time and requires big parallel tasks like running migrations, checking if the data aggregation is correct, etc. They lose focus on individual tasks. Stress becomes high.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31d/&quot;&gt;31d: Effectively Learn from mistakes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19d/&quot;&gt;19d: Why can&apos;t this be done sooner?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17d/&quot;&gt;17d: Focus on only one improvement in every rehearsal for public speaking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27f/&quot;&gt;27f: Try to keep your learning in &apos;Just Manageable Difficulty&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://jessitron.com/2021/01/18/when-costs-are-nonlinear-keep-it-small/&quot;&gt;When costs are nonlinear, keep it small. – Jessitron&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.eferro.net/2021/01/small-batches-for-win-continuous.html&quot;&gt;Small Batches for Win / Continues Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/26/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/26/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Bigger Batch-Size Deployment&apos;s Impact on People</title><link>https://candost.blog/notes/26a/</link><guid isPermaLink="true">https://candost.blog/notes/26a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In large batch-size deployments, people become disconnected from the changes they made. Because there is a time gap between changes and deployments, they forget what they have fixed. And this might create new problems because if something goes wrong, they will not be able to fix that.&lt;/p&gt;
&lt;p&gt;Psychological safety gets lower. Since the changes are significant and the risk of failure is high, people can’t have a safety net anymore. The no-returning back (or problematic returning back) hurts psychology.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://www.eferro.net/2021/01/small-batches-for-win-continuous.html&quot;&gt;Small batches for the win-Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/26a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/26a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Bigger Batch Size Deployments lower product feedback cycle</title><link>https://candost.blog/notes/26b/</link><guid isPermaLink="true">https://candost.blog/notes/26b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Big batch-size deployments lower the feedback cycle. With small batch deployments, we can get feedback early on in the product. With big batches, we wait for the deployment date. And if everything goes well, we start getting feedback. Adjusting the product according to the feedback takes even more time because we wait for the next deployment. It causes to have bad product decisions.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://www.eferro.net/2021/01/small-batches-for-win-continuous.html&quot;&gt;Small batches for the win-Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/26b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/26b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Lack of ownership</title><link>https://candost.blog/notes/26c/</link><guid isPermaLink="true">https://candost.blog/notes/26c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we have bigger-size deployments, the deployment team might seem like they own the changes. The teams who made the change can lack ownership. If the batch has a problem, who will send a hotfix?&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://www.eferro.net/2021/01/small-batches-for-win-continuous.html&quot;&gt;Small batches for the win-Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/26c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/26c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Software Delivery Batch Size vs. Transaction Cost</title><link>https://candost.blog/notes/26d/</link><guid isPermaLink="true">https://candost.blog/notes/26d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Deploy smaller batches until the transaction cost (cost of deployment, cost of people and time, infrastructure cost, etc.) makes smaller batches inefficient.&lt;/p&gt;
&lt;p&gt;Big batches have other costs, such as the number of people needed to align increases with code freezes, communication, and testing. And also, the possibility of having a change that is difficult to revert (data migrations) is costly. The mean time to recover increases a lot.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://www.eferro.net/2021/01/small-batches-for-win-continuous.html&quot;&gt;Small batches for the win-Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/26d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/26d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Developing Habits</title><link>https://candost.blog/notes/27/</link><guid isPermaLink="true">https://candost.blog/notes/27/</guid><description>Don&apos;t act, do it.</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Don&apos;t act, do it. When you are doing something, don&apos;t act like you are doing it. If your procrastination comes from being in motion (preparing or acting like you are doing), you need to change something. Instead of simply satisfying yourself and feeling better from vaguely doing something, focus on what you do and try to produce results often.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;1: Why do we bother to write?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/27/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/27/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Increasing awareness of the actions and behaviors</title><link>https://candost.blog/notes/27a/</link><guid isPermaLink="true">https://candost.blog/notes/27a/</guid><description>We need to increase the consciousness of our actions by naming them.</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Naming the actions, especially the ones we do without thinking, increases the consciousness of the action. When we repeatedly do the same actions, we start to form habits. In Kahneman&apos;s words, our actions move to system one (conscious) from system two (automatic) (&lt;a href=&quot;https://us.macmillan.com/books/9780374533557/thinkingfastandslow&quot;&gt;Thinking, Fast and Slow by Kahneman&lt;/a&gt;) when we get used to them. However, when we point to the action and call it (Pointing &amp;amp; Calling strategy), we become aware of our actions (move back from system two to one) and reduce the chance of making mistakes. Japanese underground train drivers, pilots, and many more professionals are using this technique to increase awareness on the job.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25b/&quot;&gt;25b: Making the habit obvious help to break waiting for motivation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27b/&quot;&gt;27b: How to Learn New Things via Habit Stacking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27c/&quot;&gt;27c: Why Environment Matters More Than You Think When Building Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23c/&quot;&gt;23c: How to give positive feedback?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b1/&quot;&gt;41b1: Our minds are changeable; we can get rid of our inner critic&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30d/&quot;&gt;30d: Our lives are full of choices&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25d/&quot;&gt;25d: Commitment gives you freedom&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23d/&quot;&gt;23d: Don&apos;t give feedback for the sake of giving feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/27a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/27a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Learn New Things via Habit Stacking</title><link>https://candost.blog/notes/27b/</link><guid isPermaLink="true">https://candost.blog/notes/27b/</guid><description>Habit stacking is forming new habits by tieing a new habit into an existing one.</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Habit stacking is a technique to tie a new habit into an existing one. Old habits already have cues everywhere. They have certain times and places embedded in them. Our habits work with cues coming from time and place. To form a new habit, instead of defining a specific time and location, we can simply attach the new habit to an existing one. To make it obvious, we can use the formula &quot;After [old habit], I will [new habit].&quot; The time and location are already embedded inside. For example, after I stop working, I will play bass guitar.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17g/&quot;&gt;17g: Prepare and ask questions to create engagement&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17d/&quot;&gt;17d: Focus on only one improvement in every rehearsal for public speaking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1i/&quot;&gt;1i: Embrace &amp;amp; Love Boredom&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41c/&quot;&gt;41c: Do something principle&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/27b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/27b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why Environment Matters More Than You Think When Building Habits</title><link>https://candost.blog/notes/27c/</link><guid isPermaLink="true">https://candost.blog/notes/27c/</guid><description>Changing environment is the backbone of building new habits.</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&quot;If you want to make a habit a big part of your life, make the cue a big part of your environment.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Smokers have many cues around them. They always have a reason to light up a cigarette. People cannot form new habits or stop the bad ones because most people live in an environment someone else designed for them, either their parents, partner or family. To make the habits more consistent, design your own environment. If you can&apos;t, try a new environment. Building new habit is easier in a new environment. That is why we behave differently on holidays or elsewhere than at home.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/27c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/27c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Self-control and motivation are short-term strategies of habits</title><link>https://candost.blog/notes/27d/</link><guid isPermaLink="true">https://candost.blog/notes/27d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Reduce cues of bad habits. Increase exposure to good habits and related things by putting them on sight and making them obvious. Self-control is a short-term strategy while changing the environment is a long-term strategy to form habits.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/27d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/27d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Learn when you reflect: 20/40 Rule</title><link>https://candost.blog/notes/27e/</link><guid isPermaLink="true">https://candost.blog/notes/27e/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Always spend a minimum of 20 minutes before asking for any help. Never spend 40 minutes before asking for any help.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/27e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/27e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Try to keep your learning in &apos;Just Manageable Difficulty&apos;</title><link>https://candost.blog/notes/27f/</link><guid isPermaLink="true">https://candost.blog/notes/27f/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you want to learn something and grow yourself on that topic constantly, you need to keep your learning level in the &quot;just manageable difficulty.&quot; If the challenge is too hard, it demotivates you. If it&apos;s too easy, you get bored. This is called The Goldilocks Rule. If you are learning how to write code, don&apos;t try to do it all at once. Take a very small step and learn it until it starts to be boring.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/27f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/27f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Build your skills gradually to climb Mount Everest</title><link>https://candost.blog/notes/27f1/</link><guid isPermaLink="true">https://candost.blog/notes/27f1/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you want to climb Mount Everest, you don&apos;t start by going there and walking up. You first start in small mountains and build up your skills gradually. After you master the necessary skills and build up your body for the challenge, you plan to climb Everest. Even when you start climbing to the highest mountain in the world, you spend nights in camps to get used to the climate and have a rest. You don&apos;t always go up every single day. This is the same thing as being an engineer. Start building basics and master. Choose higher mountains every time. Have rest in between to allow your body and brain to have a rest.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2/&quot;&gt;2: How to Improve Writing&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;17: Public Speaking and Improving Skills&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/68/&quot;&gt;68: Thinking Retrospectively Helps to Correct The Course&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/27f1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/27f1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Uncertainty is needed to stay open-minded</title><link>https://candost.blog/notes/29/</link><guid isPermaLink="true">https://candost.blog/notes/29/</guid><description>The more you read and learn, the less you know. The more uncertain you are, the more you are open to learning and changing.</description><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Similar to knowledge acquiring, being confident and pursuing to be certain makes you more uncertain. The more you read and learn, the less you know. The more uncertain you are, the more you are open to learning and changing.&lt;/p&gt;
&lt;p&gt;The more you are open to uncertainty, the more comfortable you will feel when you encounter something you don&apos;t know.&lt;/p&gt;
&lt;p&gt;When you are certain, you limit yourself and put borders around your thoughts. Certainty is the enemy of open thinking.&lt;/p&gt;
&lt;p&gt;When we put everything in a certain way, there is no joy in it. The joy, learning, and growth come from enough uncertainty and being open to new things.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/29/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/29/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to get rid of distractions in your head while you write</title><link>https://candost.blog/notes/2b/</link><guid isPermaLink="true">https://candost.blog/notes/2b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Writing is boring. Sometimes, when you start writing, there are many voices and thoughts that pop up in your head. They distract you by saying check social media, did you turn off the oven, or what should you eat at dinner. Think as if these thoughts are coming from small mice. Pick one of them from the tail. Put them in a jar and close the lid. Do it for all. Then imagine a volume knob in all these jars. Turn them all at once. Listen for a minute and turn them off. Go back to writing the first draft.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1j/&quot;&gt;1j: No happiness without suffering&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/91/&quot;&gt;Turn off social media as it’s worthless&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Bird by Bird by Anne Lamott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/2b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/2b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to create a story?</title><link>https://candost.blog/notes/2f/</link><guid isPermaLink="true">https://candost.blog/notes/2f/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;Identify and Understand the audience (the most difficult one)&lt;/li&gt;
&lt;li&gt;Create and determine the goal&lt;/li&gt;
&lt;li&gt;Discover the challenges&lt;/li&gt;
&lt;li&gt;Find the right character&lt;/li&gt;
&lt;li&gt;Bring the challenges to resolution&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Unleash the Power of Storytelling by Rob Biesenbach&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/newsletter/mektup-49/&quot;&gt;Mektup #49: The Craft of Writing Effectively&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/2f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/2f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Being a Team Manager and Manager&apos;s Job</title><link>https://candost.blog/notes/3/</link><guid isPermaLink="true">https://candost.blog/notes/3/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We can summarize the manager&apos;s job as helping people execute in the best way by clearing out the blockers and ensuring they grow while bringing success to the business.&lt;/p&gt;
&lt;p&gt;Managing a team comes with challenges. The team might face blockers, can steer away from the goal, or can get stuck. There are many unknowns, and it&apos;s the beauty of it.&lt;/p&gt;
&lt;p&gt;There are known knowns, such as things to do in the projects, and known unknowns, such as how to give feedback and personal growth. The manager knows their existence and, sometimes, how to approach these, but the possible result is often unknown.&lt;/p&gt;
&lt;p&gt;There are also unknown unknowns. For instance, introducing new technology to an organization. New technologies come with many unknown unknowns; there are many things we don&apos;t even know they exist. Engineers and managers can not know every single detail, especially if the technology is new in the industry. If you&apos;re a manager, steer away from unknown unknowns or take small steps to convert them to known unknowns.&lt;/p&gt;
&lt;p&gt;If you&apos;re joining a team, know your unknowns or try to figure them out.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Change is Inevitable</title><link>https://candost.blog/notes/30a/</link><guid isPermaLink="true">https://candost.blog/notes/30a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;By using E. coli bacteria, the scientists observe the evolution through an experiment. E. coli bacteria can multiply multiple times a day. In the experiment, they populated E. coli bacteria every day for 36 years while keeping their environment exactly the same (using the same solution). After 20+ years or so, E. coli bacteria surprisingly started to consume Citrus (it was in the environment from the beginning, but bacteria never consumed it as a food source; they always used Glucose) as a food source. Over the years, tiny mutations in their DNA have led to a big difference in the bacteria.&lt;/p&gt;
&lt;p&gt;What we learn from this experiment is also in another direction. We say that the earth and the universe are always changing, and therefore, we, humans, change as well. But the change happens even when our environment is exactly the same. Change is inevitable.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=w4sLAQvEH-M&quot;&gt;The Longest Running Experiment&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Immunity to suffering requires healthy doses of pain</title><link>https://candost.blog/notes/30b1/</link><guid isPermaLink="true">https://candost.blog/notes/30b1/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In our everyday life, social media bombards us with happy moments. The protection of safe zones that we created for ourselves caused us to see reality less. Not experiencing the pain, we&apos;re losing the benefits of learning how to deal with it. Like babies not being exposed to germs early on and growing up being more vulnerable with a weak immune system, we&apos;re growing to suffer more and more from less important things. Social media, especially Instagram and TikTok, cause misconceptions about the real world. Yet, the reality is full of pain.&lt;/p&gt;
&lt;p&gt;The important part is learning how to deal with this pain. If we avoid healthy doses of pain early on, we become extremely sensitive to any trivial pain. Our suffering bar gets lower day by day. We need to get the benefit of learning and experiencing healthy doses of pain early on to choose what to suffer from later on.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46e/&quot;&gt;46e: Choose good problems to deal with&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46d/&quot;&gt;46d: Doubts are rarely formed on experience&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30b1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30b1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Case of Happiness</title><link>https://candost.blog/notes/30b3/</link><guid isPermaLink="true">https://candost.blog/notes/30b3/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The media likes to show extraordinary people who have achieved great things. Because these people create attention. Humans are interested in things other than themselves, and the press uses the exceptional to keep interest high.&lt;/p&gt;
&lt;p&gt;The misperception created by the media causes many mental problems. The extraordinary people we see in the media do unusual things because they usually accept themselves as average or worse at what they do. They live the reality: most things in life are either average or suck. The media blurs this reality. It also creates a fake one by saying that everyone can achieve everything. The mental burden of seeing these people and being pumped with &apos;you are special&apos; speeches leads us to think that we also must be extraordinary while we&apos;re not. Once we accept that we are such (or average), we can leverage the appreciation of the essential things in life. This mindset lets us accomplish what we want to achieve without having self-criticism or judgment. It helps us focus on the moment more instead of blaming our past or creating dreams that will never happen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=-qLchg4xkOY&quot;&gt;“When you focus on the past, that’s your ego.” Giannis Antetokounmpo Life Lessons&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30b3/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30b3/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Choose good values and good metrics in life</title><link>https://candost.blog/notes/30c/</link><guid isPermaLink="true">https://candost.blog/notes/30c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Everyone has values and metrics that define their perspective and perception of life. They also describe the problems they face. In each situation, they interpret the events and either accept them as a problem or not. When they don&apos;t take the &quot;bad&quot; event as a problem, they just don&apos;t give a fuck about it. It&apos;s also possible that they see these things as good. It&apos;s really a half-glass full or half-glass empty situation. Their personal values and the measures they use to evaluate these things define how they see the glass. Some good metrics yield good results; some bad ones yield poor results.&lt;/p&gt;
&lt;p&gt;The crucial part is that when they want happiness in life, they need to be cautious about which metrics they use to measure happiness and which values they are looking for. For example, if their value is honesty and they count the number of lies, telling the truth makes them feel satisfied. However, if they value success by measuring how they are doing compared to others (&lt;a href=&quot;/notes/30b3/&quot;&gt;comparing with people who are doing extraordinary things&lt;/a&gt;), they will always feel unsatisfied and unhappy.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44b/&quot;&gt;44b: We attribute failure differently&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30b3/&quot;&gt;30b3: The Case of Happiness&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Our lives are full of choices</title><link>https://candost.blog/notes/30d/</link><guid isPermaLink="true">https://candost.blog/notes/30d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We always have to choose if we care about something or not. We decide to have a particular perspective on different things. Even when we don&apos;t choose anything, it&apos;s still a choice by its nature. The reality is that choice is unavoidable. It is why we should move our focus to how and what we choose. If why we choose something is clear and aligned with good values, we can become happier. If we decide on something with our shitty values, then there is a high chance that we won&apos;t feel that much satisfied. That&apos;s why &lt;a href=&quot;/notes/30c/&quot;&gt;figuring out the values&lt;/a&gt; and making mindful decisions are crucial for happiness.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46e/&quot;&gt;46e: Choose good problems to deal with&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44b/&quot;&gt;44b: We attribute failure differently&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/38/&quot;&gt;38: Changing Habits Happen in Three Different Ways&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/15/&quot;&gt;15: What should you do when your manager delegates a task to you&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44c/&quot;&gt;44c: Confrontation brings honesty&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Choose how you want to play with your existing hand</title><link>https://candost.blog/notes/30e/</link><guid isPermaLink="true">https://candost.blog/notes/30e/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As you are born, the cards are already dealt in your life. You may be lucky and get a good hand, or you&apos;re out of luck and have a bad hand. The reality is, these are not our choices. However, having a bad hand doesn&apos;t mean that you will lose the game of poker. Your strategy is your choice. Ultimately, you&apos;re responsible for choosing how you will approach playing with that hand.&lt;/p&gt;
&lt;p&gt;The same applies to life as well. If you are not in a good position from the beginning, you will have a good or bad life, depending on how you want to live. If you choose shitty values, it&apos;s your responsibility. When you decide to move on after a bad thing that&apos;s &lt;a href=&quot;/notes/46g/&quot;&gt;not in your control&lt;/a&gt;, you can have a better life. If you choose to &lt;a href=&quot;/notes/23e/&quot;&gt;blame yourself&lt;/a&gt; for what happened, although you didn&apos;t pick it and didn&apos;t have an impact on it, you are responsible for having a miserable life. The choice is yours, and you&apos;re responsible for it. Choose good values and measurements over bad ones to stop yourself from complaining all the time.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Avoiding Accountability Dysfunction in The Team</title><link>https://candost.blog/notes/31b/</link><guid isPermaLink="true">https://candost.blog/notes/31b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Accountability, in a teamwork context, means holding each other accountable and calling each other on our actions, behaviors, and performance that might hurt the team.&lt;/p&gt;
&lt;p&gt;When people avoid this type of call-on, they actually avoid their internal discomfort, they avoid confrontation.&lt;/p&gt;
&lt;p&gt;On the peer level, I rarely did this—calling people on. But giving feedback is a big part of it. When we give feedback, we&apos;re holding other people accountable. Regardless of their intention to be accountable or not, that&apos;s what we do. If they don&apos;t feel accountable still, it impacts the team more. Because not having this skill creates dysfunction in the team and prevents the team from succeeding.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33a/&quot;&gt;33a: Invest in growing your employees&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/35/&quot;&gt;35: Protective Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/31b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/31b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Effectively Learn from mistakes</title><link>https://candost.blog/notes/31d/</link><guid isPermaLink="true">https://candost.blog/notes/31d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How effectively do we learn from mistakes? Having different mechanisms, such as retrospectives, helps increase learning. But how effectively do we use these mechanisms? Clear intention for improvement and having follow-ups are crucial. We shouldn&apos;t have these mechanisms just to say, &quot;yes, we are doing it.&quot; We need to use them effectively.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/31d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/31d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Communicating Decisions in Organizations</title><link>https://candost.blog/notes/32/</link><guid isPermaLink="true">https://candost.blog/notes/32/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Be authentic. Personalization in the language is essential. If we always talk formally, we remove the sophistication and the touch of personality from the conversation. This also applies to the decisions. Decisions can be formal. But communication of decisions might be better in an informal way.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b/&quot;&gt;24b: Specify goals instead of methods or processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24c/&quot;&gt;24c: People need clarity, not motivation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17a/&quot;&gt;17a: Choosing a talk topic is art&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24d/&quot;&gt;24d: Strong product teams solve customer problems, instead of output&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17g/&quot;&gt;17g: Prepare and ask questions to create engagement&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2a/&quot;&gt;2a: Take breaks to write better&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17e/&quot;&gt;17e: Transform your nervousness into mindfulness in public speaking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19e/&quot;&gt;19e: How to make faster decisions by validating objections?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/32/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/32/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Continually and consistently repeat the message</title><link>https://candost.blog/notes/32a/</link><guid isPermaLink="true">https://candost.blog/notes/32a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;People forget. If we want people to change their minds or apply a new method, there is no other way than continually and consistently repeating the message. They will eventually learn by hearing when the message is resistant. The problem is not their competence. When we want to give a message that they should follow, what alternative do we have? Changing the message will only create confusion and a lack of direction.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3a/&quot;&gt;3a: Team Decision Deployment Strategies&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/32a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/32a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Invest in growing your employees</title><link>https://candost.blog/notes/33a/</link><guid isPermaLink="true">https://candost.blog/notes/33a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You need to put your money where your mouth is. If you want to grow your people, don&apos;t just send them to conferences; tell them to read books. Lead by example. Otherwise, no one will follow. Put awards for people who grow. Promotion is not the only way to reward people. Give swags and awards; invest in these because your company will grow only when people grow. If you want people to read books, pay them to read books. Either tell them to spend an hour every week or pay extra rewards for reading.&lt;/p&gt;
&lt;p&gt;If you&apos;re not putting your money into the things you ask people to do, no one will follow.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/worth-doing-wrong-book-summary-review-and-notes/&quot;&gt;Worth Doing Wrong by Arnie S. Malham&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/33a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/33a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Clarity in Organizations</title><link>https://candost.blog/notes/34/</link><guid isPermaLink="true">https://candost.blog/notes/34/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Clarity is needed in the organization. Everyone needs to fully understand what we&apos;re trying to achieve. Since everyone is a decision-maker in leader-leader organizations, they have to make decisions in line with what the organization is trying to accomplish. If not, we end up with a suboptimal decision.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24c/&quot;&gt;24c: People need clarity, not motivation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25b/&quot;&gt;25b: Making the habit obvious help to break waiting for motivation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24d/&quot;&gt;24d: Strong product teams solve customer problems, instead of output&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19e/&quot;&gt;19e: How to make faster decisions by validating objections?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54a/&quot;&gt;54a: Create company values from stories in your life&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40b/&quot;&gt;40b: Creating accidental adversaries&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/34/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/34/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Transparency and respect build trust</title><link>https://candost.blog/notes/34a/</link><guid isPermaLink="true">https://candost.blog/notes/34a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Trust is built by respect and transparency. Employees feel respected when the leader gives them what they need; equipment, devices, coffee machines, and &lt;em&gt;information&lt;/em&gt;. People should feel empowered when their needs are fulfilled.&lt;/p&gt;
&lt;p&gt;When the leader hides information, people can&apos;t do their jobs because they need the information to make decisions and execute tasks. If the leader wants people to bring solutions, own projects, and become loyal employees, the leader should give the information. Secrecy only leads to low morale and people feeling like pawns, not players (an Engineering Manager at previous job).&lt;/p&gt;
&lt;p&gt;When there is no transparency, people will hear different things—often the wrong ones—and it will impact many decisions and morale. As the secrecy goes on, it will also be difficult to detect and notice these problems.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;12: Engineer Autonomy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19/&quot;&gt;19: Decision-Making Strategies&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a/&quot;&gt;19a: Knowns and Unknowns&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/worth-doing-wrong-book-summary-review-and-notes/&quot;&gt;Worth Doing Wrong by Arnie S. Malham&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/34a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/34a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Protective Leadership</title><link>https://candost.blog/notes/35/</link><guid isPermaLink="true">https://candost.blog/notes/35/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Taking care of people in the organization doesn&apos;t mean keeping them safe from the results of their behavior and work. It means giving them tools, education, and advantage to achieve their personal and professional goals in the best way.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://candost.substack.com/p/14-protective-leadership-and-leadership-style&quot;&gt;Protective Leadership and Finding Your Leadership Style - Software World&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44c/&quot;&gt;44c: Confrontation brings honesty&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52a/&quot;&gt;52a: Accepting one thing requires saying no to other things&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23b1/&quot;&gt;23b1: Be careful with obnoxious aggression&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/35/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/35/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Open Feedback Culture</title><link>https://candost.blog/notes/36/</link><guid isPermaLink="true">https://candost.blog/notes/36/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Resilient organizations don&apos;t allow mistakes or errors. Even when the captain or CEO makes mistakes, people who are competent in the area can inform the leader and say, &quot;No, you&apos;re wrong.&quot; This open feedback culture creates resilient organizations that eliminate mistakes.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27c/&quot;&gt;27c: Why Environment Matters More Than You Think When Building Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24d/&quot;&gt;24d: Strong product teams solve customer problems, instead of output&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44d/&quot;&gt;44d: Without conflict, there can be no trust&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/36/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/36/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Setting Organizational Goals and Processes</title><link>https://candost.blog/notes/37/</link><guid isPermaLink="true">https://candost.blog/notes/37/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&quot;While goals give direction, systems make progress.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Focusing on systems bring result and help us to reach goals. Goals only set the course. If we leave the port and set our course only half a degree wrong, we end up in a totally different place.&lt;/p&gt;
&lt;p&gt;Use goals to set a direction and systems to find clues that distract you from the goal. Keep your main focus on having good systems that tell you you&apos;re off.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17c/&quot;&gt;17c: Do whatever works for you in your public speaking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27b/&quot;&gt;27b: How to Learn New Things via Habit Stacking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27c/&quot;&gt;27c: Why Environment Matters More Than You Think When Building Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24d/&quot;&gt;24d: Strong product teams solve customer problems, instead of output&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17d/&quot;&gt;17d: Focus on only one improvement in every rehearsal for public speaking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25c/&quot;&gt;25c: Don&apos;t slip twice&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27f/&quot;&gt;27f: Try to keep your learning in &apos;Just Manageable Difficulty&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25d/&quot;&gt;25d: Commitment gives you freedom&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/37/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/37/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Including side work into technical initiatives</title><link>https://candost.blog/notes/37a/</link><guid isPermaLink="true">https://candost.blog/notes/37a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When you sell a technical initiative as a business case successfully, you can use that initiative as an umbrella for others. If other initiatives will contribute to the business case you sold (it doesn’t have to be a strong contributor), you can include them as well after you sell it. This looks sneaky at first, but it’s actually your job to make things happen on the engineering side. If you are able to explain how the things you include are related to the case you sold, it’s fine. The stage test is a good model for thinking: if you can answer the question in front of the whole company in public, then it’s alright. For example, if you sold Continuous Delivery as a business need, you can include some migration efforts and focus on tech debt in it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;31: Accountability and Learning Culture in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/71/&quot;&gt;71: Defining Transparency in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/76/&quot;&gt;76: Becoming a CTO&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/79/&quot;&gt;79: Managing Tech Debt&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; CTO Craft Con Berlin 2024, Grygoriy Gonchar - CTO Eurowings Digital, Elevate Engineering Goals to your Company’s Genuine Priorities&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/37a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/37a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Changing Habits Happen in Three Different Ways</title><link>https://candost.blog/notes/38/</link><guid isPermaLink="true">https://candost.blog/notes/38/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Three levels (outcome, process, identity) of change define our success in changing habits. These are like onion layers. Changing outcomes is the outer layer, such as losing weight. Changing processes is the middle layer, such as the eating system. Changing identity is the inner layer, such as our self-image or the world view. So, outcomes are what you get, processes are what you do, and identity is what you believe.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25b/&quot;&gt;25b: Making the habit obvious help to break waiting for motivation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41c/&quot;&gt;41c: Do something principle&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/38/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/38/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Focus on who you want to become, not what you want to achieve</title><link>https://candost.blog/notes/38a/</link><guid isPermaLink="true">https://candost.blog/notes/38a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most of the time, we try to change our habits, starting with outcomes. We focus on what we want to achieve. However, if we reverse our view and focus on who we want to become, we see real change. For example, when we want to quit smoking, and someone offers us a cigarette, instead of saying, &quot;No, I&apos;m trying to quit&quot;, we say, &quot;No, I&apos;m not a smoker.&quot; Instead of saying, &quot;I&apos;m a person who wants this behavior,&quot; we say, &quot;I&apos;m a person who is this.&quot; Once we do this, we start doing things related to this personality. We start taking pride that is our driving power to maintain the habit. We start following habits that fit our identity.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;1: Why do we bother to write?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;17: Public Speaking and Improving Skills&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46/&quot;&gt;46: Coaching Yourself&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30b3/&quot;&gt;30b3: The Case of Happiness&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Atomic Habits by James Clear&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/38a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/38a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Increasing Quality of Systems</title><link>https://candost.blog/notes/39/</link><guid isPermaLink="true">https://candost.blog/notes/39/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There is a sweet spot in optimizing for quality. The further you try to maximize something, the less benefit you get. At some point, the quality becomes useless and only serves as an art piece. This applies to many things, such as writing, architecting software systems, coding, etc. We need to carefully analyze the relation between the cost and the quality and try to keep it balanced.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19d/&quot;&gt;19d: Why can&apos;t this be done sooner?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2/&quot;&gt;2: How to Improve Writing&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;17: Public Speaking and Improving Skills&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/50/&quot;&gt;50: Service Level Agreements/Indicators/Objectives - Percentiles&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;56: Structuring Teams in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://commadot.com/the-cost-quality-curve/&quot;&gt;The Cost-Quality Curve – commadot com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/39/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/39/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Team Decision Deployment Strategies</title><link>https://candost.blog/notes/3a/</link><guid isPermaLink="true">https://candost.blog/notes/3a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We make decisions to make the team work efficiently and in harmony. Sometimes these decisions come from the top of the hierarchy, and sometimes not. The team lead or manager takes responsibility for the implementation. However, most of the time, this process is not that easy. There are many factors involved in the implementation of the decision. And also, what kind of decision we’re gonna deploy is the major question.&lt;/p&gt;
&lt;p&gt;The decision implementation strategies are similar to the software deployment strategies. It’s also the last step of every planning, design, and implementation, as the decision implementation. There are different strategies for software deployment.&lt;/p&gt;
&lt;p&gt;In Canary Deployment, we deploy the new service in one instance and test it with production data. If the instance and the new version of the system are working as expected, we deploy to other instances. For deploying decisions, we implement the decision with only one person. If it works, we apply it to the whole team. These decisions can test one idea in the team. We assign one task to one person and see how the person handles the task. Or we tell the decision to only one person to test it and get feedback.&lt;/p&gt;
&lt;p&gt;In Blue-Green Deployment, we deploy the new service as a separate environment, test it and move all traffic to the new one once everything is working as expected. While applying team decisions, we announce the decision and the change but do not directly implement it. Once the decision is accepted by the team, we make the change. This strategy is effective in restructuring the team or department. We test the idea in production by getting feedback from people and understanding if they want to work on a new strategy or not.&lt;/p&gt;
&lt;p&gt;In Rolling Deployment, we deploy the new service in the same environment but in one instance. And if everything works as expected, we slowly update the instances one by one. In team decision deployment, it can be personal growth decisions. It’s easy to try out a new personal growth or development strategy with one person and see if it’s working or not. Once we understand that our approach is suitable and we get a better result, we can start applying it to other team members one by one.&lt;/p&gt;
&lt;p&gt;In “Big-Bang Deployment,” we terminate one version and deploy the new version. This strategy is suitable for team or company restructurings. We change it by destroying everything and building all things from the ground up.&lt;/p&gt;
&lt;p&gt;The team decision and software deployment strategies are very similar in nature. They both come from hard planning and design. Only the implementation differs. While implementing software, you work hands-on in writing the code. In decision implementation, you talk with people and explain why a decision is made and how it affects them. And the application of the decision is the last step, where we stop talking and start working with the new change.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Joining A Team As A New Manager</title><link>https://candost.blog/notes/3b/</link><guid isPermaLink="true">https://candost.blog/notes/3b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The first thing is people.&lt;/p&gt;
&lt;p&gt;Build &lt;a href=&quot;/notes/3b1/&quot;&gt;trust&lt;/a&gt; and understand how to communicate and clear out expectations.&lt;/p&gt;
&lt;p&gt;Be organized. If you promised something, you need to deliver it. Take responsibility for your actions.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; My Previous Manager&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building Trust as a New Engineering Manager</title><link>https://candost.blog/notes/3b1/</link><guid isPermaLink="true">https://candost.blog/notes/3b1/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What to do, especially when you don&apos;t know the domain and the tech stack?&lt;/p&gt;
&lt;p&gt;Building trust is tricky, but you might have an advantage. If you don&apos;t know the tech stack and the domain very well, you should not give suggestions immediately. You should ask questions as an outsider. This can make them realize things they didn&apos;t consider before. It will help you to understand the domain without being biased and build trust. When you ask questions, they will see that you care. While asking, admit that you don&apos;t know and are trying to learn. This behavior can lower their shield.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3b1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3b1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building Trust as a Leader</title><link>https://candost.blog/notes/3b2/</link><guid isPermaLink="true">https://candost.blog/notes/3b2/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The very first rule of building trust as a leader; do what you say, say what you do. Build authenticity. When you act differently than what you talk about, the people you are leading get confused. Confusion leads to frustration and conflicts between you and your employee.&lt;/p&gt;
&lt;p&gt;Trust is something like insurance; you have to pay regular contributions to use it when you need it. When you act differently than what you talk about, you don&apos;t pay your regular contribution. Similar to insurance companies, employees will ask you to pay your debt in a meaningful time. Otherwise, you will lose the trust fully.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3b2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3b2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Be Honest and Open to Building Trust</title><link>https://candost.blog/notes/3b3/</link><guid isPermaLink="true">https://candost.blog/notes/3b3/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Be honest and admit when you don&apos;t know. Accept that the team consists of experts who know the work better than you. As long as they see that you are trying to get better at what you do and &lt;a href=&quot;/the-must-have-skill-for-every-leader-listening-with-empathy/&quot;&gt;you&apos;re being empathetic&lt;/a&gt; towards the team you&apos;re managing, they will trust you. Be honest and open with the team.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3b3/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3b3/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Make Your Intention Clear</title><link>https://candost.blog/notes/3b4/</link><guid isPermaLink="true">https://candost.blog/notes/3b4/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Understand what kind of trust the person wants to build. If the person needs more &quot;personal relationship,&quot; ask them how their kids or cats are doing. If they are more inclined to task-based trust, care about their goals, what is important to them and how they define a successful relationship (e.g., if someone says they don&apos;t want public praise, don&apos;t give them public praise. If they don&apos;t wish to public feedback, don&apos;t give them feedback in public).&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3b4/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3b4/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Giving Ownership to People</title><link>https://candost.blog/notes/3c/</link><guid isPermaLink="true">https://candost.blog/notes/3c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you want to give ownership, don&apos;t just preach and hope for the best. Implement mechanisms that will support ownership. People should be able to use these mechanisms to own their domain.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn the Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Autonomy and Ownership Requires Technical Capability</title><link>https://candost.blog/notes/3c1/</link><guid isPermaLink="true">https://candost.blog/notes/3c1/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;To be able to give someone autonomy and ownership, the person has to have the necessary technical capability. If they lack the skills, they will make wrong calls/judgments.&lt;/p&gt;
&lt;p&gt;Seeing training as increasing decision-making authority is a good way. It makes people first better at their job, and second, they start owning the decisions with more trust in themselves. Their fear dissolves in time. Increased competency means increased decision-making authority.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/think-again-by-adam-grant-book-summary-review-and-notes/&quot;&gt;Think Again by Adam Grant&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3c1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3c1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Creating an Agenda for One-one-Ones with Your Manager</title><link>https://candost.blog/notes/3c2/</link><guid isPermaLink="true">https://candost.blog/notes/3c2/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Meetings with managers are crucial for career development. We keep one shared document to prepare one-on-ones better. We fill this document during the week. Everyone writes down what they have in mind so we don&apos;t forget anything. We list achievements, things we ask for feedback and action items. The document is not perfect in itself. However, whenever we have something in our mind to talk about during the one-one-one, we open the document and write it there.&lt;/p&gt;
&lt;p&gt;This document opened many topics for us to discuss. We don&apos;t forget things anymore. We don&apos;t confuse the topics. Having the structure forces us to use time efficiently and prevents wasting time.&lt;/p&gt;
&lt;p&gt;Each person writes to their column. There is no requirement to fill every line. Because sometimes you don&apos;t have any blockers. My goal is to have at least one item in the learnings and &quot;things that went well.&quot; Because these are celebration points.&lt;/p&gt;
&lt;p&gt;Before, we had 30-minute one-one-one sessions. Now, we&apos;re in the process of increasing the time. Because if you just randomly talk about a topic, thirty minutes is a lot. When you put structure, it&apos;s nothing. The meetings have an agenda; they are very effective and full of constructive discussions. That&apos;s why we decided to increase the time. We don&apos;t see this as a waste of time.&lt;/p&gt;
&lt;p&gt;So here are the exact titles in our document:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What’s on top of my mind?&lt;/li&gt;
&lt;li&gt;Things that went well&lt;/li&gt;
&lt;li&gt;Learnings&lt;/li&gt;
&lt;li&gt;Priorities (since we last met)&lt;/li&gt;
&lt;li&gt;Priorities until we meet again&lt;/li&gt;
&lt;li&gt;Challenges &amp;amp; Blockers&lt;/li&gt;
&lt;li&gt;Feedback&lt;/li&gt;
&lt;li&gt;Action Items&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/effective-1-1-meetings-one-on-one-meeting-template/&quot;&gt;Effective one-one-one Meetings—1-on-1 Meeting Template&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3c2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3c2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Giving ownership to people by delegation</title><link>https://candost.blog/notes/3c3/</link><guid isPermaLink="true">https://candost.blog/notes/3c3/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Giving ownership to people and delegating the work is one of the greatest ways to empower people.&lt;/p&gt;
&lt;p&gt;I&apos;ve grown in my career because my managers gave me the job and empowered me by making me the owner of the initiative, project, or piece of work. Once I owned it, I tried my best to do it well and finish it. After a while, I became reliable. So, delegating tasks to your employees enables them to grow, learn, and showcase their skills, and become reliable.&lt;/p&gt;
&lt;p&gt;If you want projects moving and initiatives running, assign a responsible person to each. You cannot run every single piece by yourself as a leader. You don&apos;t have that capacity and expertise. Only involve yourself when they need you or when they are blocked. Let them make decisions, not you.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/worth-doing-wrong-book-summary-review-and-notes/&quot;&gt;Worth Doing Wrong by Arnie S. Malham&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3c3/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3c3/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Working with and leading blame absorbers</title><link>https://candost.blog/notes/3c4/</link><guid isPermaLink="true">https://candost.blog/notes/3c4/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There are people who always say I should&apos;ve/could&apos;ve/would&apos;ve done this and didn&apos;t; it is all on me. If you are leading a person like this, as Sheela Heen calls them, blame absorbers, you have to take precautions. Otherwise, it leads to a toxic and unlearning environment. It&apos;s easy to fall into the trap of owning a responsibility. When a blame absorber takes full responsibility, there is none left for others. Also, it is detrimental to the absorber. Usually, there is not only one responsible person. Usually, there is a system, and other people and situations impact the problem.&lt;/p&gt;
&lt;p&gt;If you let this slip, it builds resentment over time. The absorber starts to think they&apos;re always to blame, and others don&apos;t take responsibility at all. If you&apos;re building an ownership culture, be careful and show people the bigger picture and how you, they, and others are responsible together.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/systematic-approach-to-give-feedback-to-blame-absorbers/&quot;&gt;A Systematic Approach to Give Feedback to Blame Absorbers&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/learning-cone-and-blame-spiral-the-case-of-blame-absorbers/&quot;&gt;Learning Cone and Blame Spiral—The Case of Blame Absorbers&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3c4/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3c4/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Teams need emancipation, not empowerment</title><link>https://candost.blog/notes/3d/</link><guid isPermaLink="true">https://candost.blog/notes/3d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Empowerment doesn&apos;t work without clarity and competence—empowerment results from a top-down structure. We need emancipation instead of empowerment. An emancipated team doesn&apos;t need empowerment. Because they don&apos;t need the power from the leader, when they have emancipation, they can act freely. Since they are competent and there is a clear goal, they have the power on themselves to make better decisions.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn the Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Setting Clear Expectations About Communication and Collaboration</title><link>https://candost.blog/notes/3e/</link><guid isPermaLink="true">https://candost.blog/notes/3e/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sharing status updates doesn&apos;t mean the team is collaborating. We need to organize our meetings to both communicate and collaborate. There can be certain meetings where we only communicate (such as daily stand-ups), but there must be someplace we collaborate (it doesn&apos;t have to be a meeting). Understanding what&apos;s collaboration and what&apos;s not is part of a manager&apos;s job, and they have to clearly define their expectations from the team and communication mediums.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html&quot;&gt;Bottleneck #03: Product v Engineering&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Monitoring Work of Direct Reports</title><link>https://candost.blog/notes/4/</link><guid isPermaLink="true">https://candost.blog/notes/4/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Top-down monitoring systems like tracking everything people do at work are not efficient. They don&apos;t work. However, we still need to collect data to monitor systems. But they should be used to make the invisible things visible and identify problems to solve them. They should not be used to determine what direct reports do or track people&apos;s work.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn the Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/4/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/4/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Understanding the Feedback You Receive</title><link>https://candost.blog/notes/40/</link><guid isPermaLink="true">https://candost.blog/notes/40/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;The feedback in relationships is about you AND the other person&lt;/h2&gt;
&lt;p&gt;The feedback in relationships is never about you or me. It&apos;s about you AND me. It&apos;s a two-way street. When we hear feedback from someone else, and if they are close to us, such as a spouse or a boss, we receive it according to our relationship lens. It&apos;s never independent of the relationship and never in one direction. When your spouse says, &quot;you could&apos;ve been more friendly at the party last night.&quot; they don&apos;t only tell you about your behavior. They include your relationship, how they feel about your behavior, and how it impacts them. The same applies at work. When your boss gives feedback about a meeting performance from yesterday, they also have concerns about their presence and how you impact it. This also affects how they want to work with you.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/5/&quot;&gt;5: Managing Promotions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;12: Engineer Autonomy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/40/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/40/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Switchtrack conversations</title><link>https://candost.blog/notes/40a/</link><guid isPermaLink="true">https://candost.blog/notes/40a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the feedback discussion, there are relationship triggers. The feedback comes from our relationship with another person. In this kind of feedback, one person starts giving feedback. The other person responds with a totally unrelated thing to the feedback; they switch track of the conversation. It&apos;s similar to the railroad switch tracks. One example would be a couple. One person buys a bouquet for the other, but the other person told before that they don&apos;t like bouquets and starts complaining that no one listens to them. The person who gives the flowers says that they do not appreciate it. Here, the person who gives the bouquet switches the track. The feedback becomes you vs. me while focusing on different subjects.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/40a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/40a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Creating accidental adversaries</title><link>https://candost.blog/notes/40b/</link><guid isPermaLink="true">https://candost.blog/notes/40b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We create accidental adversaries because of a lack of clarity or confusion in roles. When roles are not clear, we confuse the other side. That&apos;s why the feedback we get may feel off-point; when responsibilities and roles are unclear, who is responsible for answering support requests? When these kinds of things are unclear, the expected things from us will also be unclear. In these situations, it&apos;s better to take a step back and ask, “How are our roles contributing to how we see each other? How do we give feedback to each other?&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/40b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/40b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Learning How to Receive Feedback</title><link>https://candost.blog/notes/40c/</link><guid isPermaLink="true">https://candost.blog/notes/40c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Focus on how to pull feedback instead of giving feedback.&lt;/p&gt;
&lt;p&gt;Master the pulling feedback skills that drive our learning and curiosity. We always focus on giving effective feedback, yet whoever receives it is more important to hand over the feedback right. The teacher gives the same lesson to all students. It&apos;s how you learn to pull the information that makes you learn and be successful in class. The same applies to my whole life. We learn by pulling the feedback even in the toughest situations, such as when we&apos;re not in the mood or it&apos;s delivered poorly. Then you will learn and feed your curiosity.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30d/&quot;&gt;30d: Our lives are full of choices&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44c/&quot;&gt;44c: Confrontation brings honesty&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44d/&quot;&gt;44d: Without conflict, there can be no trust&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23d/&quot;&gt;23d: Don&apos;t give feedback for the sake of giving feedback&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/40c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/40c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Characteristics of Creative Work</title><link>https://candost.blog/notes/41/</link><guid isPermaLink="true">https://candost.blog/notes/41/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every idea in each creative process has inconsistencies and missing parts. They reveal themselves in the execution step. When an author has an idea, they don&apos;t realize the inconsistencies in the idea and don&apos;t see the missing points until writing it down. A software engineer cannot oversee every missing part of the design or inconsistent structure until the implementation part or experimentation starts. That&apos;s why ideas will always be raw and not great until they see an execution.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52b/&quot;&gt;52b: Accepting Death Destroys Entitlement&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://web.eecs.umich.edu/~weimerw/2018-481/readings/mythical-man-month.pdf&quot;&gt;Mythical Man-Month by Frederik P. Brooks Jr.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/41/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/41/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to discover creativity?</title><link>https://candost.blog/notes/41b/</link><guid isPermaLink="true">https://candost.blog/notes/41b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We can discover our hidden creativity instead of focusing on negativity and how incompetent we feel.&lt;/p&gt;
&lt;p&gt;Set aside some time and go over the following to find out your creative sides:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Success:&lt;/strong&gt; Think back and find out your talents and abilities. What are you good at? Think about your skills. Consider your previous accomplishments and achievements. What were they?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intrinsic qualities:&lt;/strong&gt; Who are you inside? What are your human qualities? Which qualities do you associate with yourself? Some ideas: driven, efficient, practical, respectful, analytical, ambitious, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your esteemed self:&lt;/strong&gt; Think about another new person with the qualities you defined above. How would you talk with this person? Would you be impressed and have a lot of respect for this person? And think about how different you talk to yourself when you compare your talk with this person.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Where is your creativity?&lt;/strong&gt; Take a look at 1 &amp;amp; 2 again and ask yourself: In where did you exercise creativity? How exactly were you creative at those times? What qualities inform and enhance your creativity? Think about a moment when you were in the flow.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52a/&quot;&gt;52a: Accepting one thing requires saying no to other things&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://candost.substack.com/p/17-banish-your-inner-critic-with-638/&quot;&gt;Software World #17: Banish Your Inner Critic with Denise Jacobs&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://innercriticbook.com/&quot;&gt;Banish Your Inner Critic by Denise Jacobs&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/41b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/41b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Systems and Design Thinking</title><link>https://candost.blog/notes/42b/</link><guid isPermaLink="true">https://candost.blog/notes/42b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We can define traditional systems thinking as separating the system into parts, looking at the relationships between them, and designing the overall system while thinking about these relations. In systems thinking, the problem is considered holistically. It is a logical exercise where we solve the problem in parts. We separate the problem into smaller parts, try to understand the interconnections between these parts and solve these smaller ones. Design thinking is missing in traditional systems thinking. In design thinking, we first understand the full context and then prototype solutions. In architectural thinking, we look at how the parts need to connect to the needs defined in design thinking.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/51/&quot;&gt;51: Consistency Models in Distributed Systems Index&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/42b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/42b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Actors/actions model</title><link>https://candost.blog/notes/42c/</link><guid isPermaLink="true">https://candost.blog/notes/42c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While preparing and planning software architectures, the architect can get help from the actors/actions model to discover how the system will be used by whom. The architect defines actors and how they act in the system. The actors map each incoming communication to either a message sent to other actors or a new behavior that will govern the response to the next message processed or create new actors.&lt;/p&gt;
&lt;p&gt;Thinking and finding out how the actors will handle the incoming communication and going beyond and finding out what they need to do helps architects understand the domain and create a better architecture for it.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a/&quot;&gt;19a: Knowns and Unknowns&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/51a/&quot;&gt;51a: Database Race Conditions&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;http://fundamentalsofsoftwarearchitecture.com/&quot;&gt;Fundamentals of Software Architecture by Mark Richards &amp;amp; Neal Ford&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/42c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/42c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Component discovery with Event Storming</title><link>https://candost.blog/notes/42d/</link><guid isPermaLink="true">https://candost.blog/notes/42d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Event Storming is a component discovery technique from Domain-Driven Design. An architect assumes that the system will use events and messages. Together with the team, they identify which events will occur and how these events will be handled. They design the components around these events and message handlers. This technique can be pretty helpful for distributed architectures (e.g., microservices).&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2a/&quot;&gt;2a: Take breaks to write better&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a2/&quot;&gt;19a2: The process of choosing a new technology&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;http://fundamentalsofsoftwarearchitecture.com/&quot;&gt;Fundamentals of Software Architecture by Mark Richards &amp;amp; Neal Ford&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/42d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/42d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Role and Responsibility of Software Architect</title><link>https://candost.blog/notes/43/</link><guid isPermaLink="true">https://candost.blog/notes/43/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The level of the architect&apos;s involvement in the project should be certain and not very deep. When architects create extremely detailed software designs, they begin micromanaging the work. This is one of the reasons why architects are often misunderstood and people don&apos;t like getting directions from them. The role of the architect is defining top-level partitioning of the system, not designing individual components or classes. These tasks are part of developers&apos; and tech leads&apos; jobs. Unclear responsibilities of architects cause unnecessary harm and conflict between roles. Taking the creative work from engineers and tech leads steers to having no architects in the future because the next generation of architects will grow within that group. When they get no design challenge, they cannot grow properly. Keeping a good amount of system design and managing it should be in the direction of leading and coaching. Architects define top-level partitioning and top-level design. They can suggest a way for implementation. But they shouldn&apos;t dictate and be open to accepting other ways to implement and even sometimes forego the credit for suggested improvements.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10a/&quot;&gt;10a: Growing in IC track in Engineering&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/15/&quot;&gt;15: What should you do when your manager delegates a task to you&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://web.eecs.umich.edu/~weimerw/2018-481/readings/mythical-man-month.pdf&quot;&gt;Mythical Man-Month by Frederik P. Brooks Jr.&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/43/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/43/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Explicit disagreement is better than implicit misunderstanding</title><link>https://candost.blog/notes/44a/</link><guid isPermaLink="true">https://candost.blog/notes/44a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When giving or receiving feedback, the statement is true. But I couldn&apos;t stop myself from thinking and challenging it by thinking about different cultures. Does it apply to every culture, especially where people highly avoid confrontation? In Asian cultures, such as Japan, harmony is preferred, and disagreements are extremely discouraged. We might argue that disagreement and misunderstandings are different things as well. Maybe we can change the statement to an explicit misunderstanding better than an implicit misunderstanding. I think, from my cultural perspective, explicit disagreement is not always better than implicit misunderstandings, but mostly better. Sometimes you need to have it implicit but have to make it explicit misunderstanding in one way. It doesn&apos;t have to be a disagreement. Also, I think the author&apos;s point is that when we make the disagreement explicit, it&apos;s out there. We&apos;re not in our heads while understanding things in the wrong way anymore.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19b/&quot;&gt;19b: Consent-Based Decision Making&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/explicit-disagreement-is-better-than-implicit-misunderstanding/&quot;&gt;Explicit Disagreement is Better Than Implicit Misunderstanding&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>We attribute failure differently</title><link>https://candost.blog/notes/44b/</link><guid isPermaLink="true">https://candost.blog/notes/44b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Our perception differs from others about situations, ourselves, and our behaviors. For example, when someone fails, we think they are not capable of the job or don&apos;t have what it takes. But when we fail, we say and believe that the situation was not great and that other problems caused the failure. We don&apos;t say that we&apos;re not capable.
The difference in perspectives is the point that requires more empathy. While preparing or receiving feedback, we need to think from both perspectives and correctly analyze the root cause to act accurately.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17i/&quot;&gt;17i: How to Understand The Public Talk Feedback You Get&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b4/&quot;&gt;3b4: Make Your Intention Clear&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/15/&quot;&gt;15: What should you do when your manager delegates a task to you&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Confrontation brings honesty</title><link>https://candost.blog/notes/44c/</link><guid isPermaLink="true">https://candost.blog/notes/44c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Confrontational cultures such as Russia and the Netherlands drive the confrontation with honesty. They are openly honest about things, and the situation derives from their culture.&lt;/p&gt;
&lt;p&gt;Only you can be honest with yourself if you are honest with others. That&apos;s where other cultures lack. When a person tries to be in harmony with the group and avoid conflicts, they think the drive to succeed with the group. It&apos;s sometimes true, as we also see in Japan. However, understanding ourselves requires being honest with ourselves. Being honest with ourselves demands being honest with others, even if we have to confront them.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/13/&quot;&gt;13: Be Kind at Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/7/&quot;&gt;7: Confident Humility&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40/&quot;&gt;40: Understanding the Feedback You Receive&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Without conflict, there can be no trust</title><link>https://candost.blog/notes/44d/</link><guid isPermaLink="true">https://candost.blog/notes/44d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Conflicts are healthy in relationships. Always agreeing with each other will demand sacrifice from one side. One side hides their true thoughts or accumulates resentment that bursts out after a while. The relationship feels fake, not natural.&lt;/p&gt;
&lt;p&gt;Society forces us to be the same, although individuals differ. Always confirming with each other and avoiding conflicts prevent us from finding the truth. When there is no truth in the relationship, we cannot be honest and, therefore, cannot form trust.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19/&quot;&gt;19: Decision-Making Strategies&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/28/&quot;&gt;28: Mental Health for Professionals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Software Architecture Patterns and Models</title><link>https://candost.blog/notes/45/</link><guid isPermaLink="true">https://candost.blog/notes/45/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Entity-Trap Anti-Pattern&lt;/h2&gt;
&lt;p&gt;Creating entity managers to perform CRUD operations is not architectural thinking, and the result is not architecture. These operations can be easily handled by frameworks such as Ruby on Rails, NakedObjects, or Isis. Mapping from a database to a server doesn&apos;t need a full-blown architecture. Incorrectly identifying database relationships as workflows is called an entity trap, and it&apos;s an anti-pattern.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;http://fundamentalsofsoftwarearchitecture.com/&quot;&gt;Fundamentals of Software Architecture by Mark Richards &amp;amp; Neal Ford&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/45/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/45/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Architecture Sinkhole Anti-Pattern</title><link>https://candost.blog/notes/45a/</link><guid isPermaLink="true">https://candost.blog/notes/45a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When a request is made to a &lt;a href=&quot;/notes/47a/&quot;&gt;layered architected&lt;/a&gt; service, if the request has to go through all the &lt;a href=&quot;/notes/47a1/&quot;&gt;layers&lt;/a&gt; without applying any business logic, the situation indicates an &lt;em&gt;architecture sinkhole anti-pattern&lt;/em&gt;. This pattern happens often. The healthy ratio is 80%-20%; a maximum of 20% of the requests having sinkhole anti-pattern is considered healthy.&lt;/p&gt;
&lt;p&gt;Although it looks like it is happening more in layered architectures, I also saw it often happening in technically distributed architectures such as VIPER architecture in iOS. VIPER is especially criticized for this anti-pattern.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/49/&quot;&gt;49: Accidental Complexity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/45/&quot;&gt;45: Software Architecture Patterns and Models&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/47/&quot;&gt;47: Software Architecture Styles Index&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;http://fundamentalsofsoftwarearchitecture.com/&quot;&gt;Fundamentals of Software Architecture by Mark Richards &amp;amp; Neal Ford&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/45a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/45a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Intentions, Behaviors, and Their Impact</title><link>https://candost.blog/notes/46a/</link><guid isPermaLink="true">https://candost.blog/notes/46a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We might not intend to do something, but the situation can develop so that our behavior impacts others differently than our intention. That&apos;s why we often say or hear that &quot;I know their intentions are good, but they shouldn&apos;t behave in that way.&quot;&lt;/p&gt;
&lt;p&gt;Our behaviors affect others, not our intention. How do we align our intention, behavior, and impact on others? Looking from a different perspective is the first step to aligning intentions and their impact. Our brains evolved in a way that we don&apos;t hear our sounds or see our body language. To bypass this, we can record ourselves and watch later to realize how we behave, respond to someone, and react to events.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17i/&quot;&gt;17i: How to Understand The Public Talk Feedback You Get&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/38/&quot;&gt;38: Changing Habits Happen in Three Different Ways&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17/&quot;&gt;17: Public Speaking and Improving Skills&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Doubts are rarely formed on experience</title><link>https://candost.blog/notes/46d/</link><guid isPermaLink="true">https://candost.blog/notes/46d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&quot;Doubts are formed around concepts, ideas, beliefs, and rejections. They are very rarely formed on experience.&quot; — Andy, Headspace.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Most self-doubts are rooted in beliefs. We believe we won&apos;t be able to do anything. Even though we get signals that say we are good at what we&apos;ll do, convincing ourselves is difficult. Understanding doubts and their root causes helps us realize that they are not 100% real.&lt;/p&gt;
&lt;p&gt;Our experiences are the real part of us. They are our past. But we don&apos;t retrospect enough and usually think about the future. &lt;a href=&quot;/notes/68a/&quot;&gt;Retrospecting and reflecting on our experiences&lt;/a&gt; are not difficult; with journaling and writing, they become easy.&lt;/p&gt;
&lt;p&gt;Journaling helps to figure out what worked and what didn&apos;t. The experience log is the real reflection, and doing it daily makes this reflection more valuable. Because, in the end, we present ourselves as proof of our experience.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2b/&quot;&gt;2b: How to get rid of distractions in your head while you write&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;4a: On Being Curious&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;1: Why do we bother to write?&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Headspace Meditation App&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Measuring self-worth comes from negative experiences</title><link>https://candost.blog/notes/46d1/</link><guid isPermaLink="true">https://candost.blog/notes/46d1/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we evaluate ourselves, we put some measurements. Depending on the measure, we feel satisfied, happy, and fulfilled. The measurements directed to self-worth--how much we feel valued by ourselves—usually come from negative experiences. It doesn&apos;t arise from how we feel happy or entitled to be happy, but rather what we hide beneath. How we feel about our negative experiences shows us our true self-worth. The person who has high self-worth can look at themself and say; yes, this is where I&apos;m weak or vulnerable.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30c/&quot;&gt;30c: Choose good values and good metrics in life&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46d1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46d1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Choose good problems to deal with</title><link>https://candost.blog/notes/46e/</link><guid isPermaLink="true">https://candost.blog/notes/46e/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Happiness without any problems is improbable. Instead of focusing on removing all the problems, we should focus on which problems to tackle. Because if we try to solve every single issue, we won&apos;t have any energy left. Additionally, achieving big goals often involves many struggles along the way. By focusing on only certain struggles, we can achieve our goals.&lt;/p&gt;
&lt;p&gt;Good goals are more important than others, and they vary from person to person. Upon choosing good problems, we can experience happiness consistently.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27f1/&quot;&gt;27f1: Build your skills gradually to climb Mount Everest&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;4a: On Being Curious&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10a/&quot;&gt;10a: Growing in IC track in Engineering&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52/&quot;&gt;52: Personal Values&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52a/&quot;&gt;52a: Accepting one thing requires saying no to other things&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Software Architecture Styles</title><link>https://candost.blog/notes/47/</link><guid isPermaLink="true">https://candost.blog/notes/47/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Entries:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/47a/&quot;&gt;Layered Software Architecture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/47b/&quot;&gt;Pipeline Architecture Style&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/47/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/47/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Layered Software Architecture</title><link>https://candost.blog/notes/47a/</link><guid isPermaLink="true">https://candost.blog/notes/47a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Open/Closed Layers in Layered Architecture&lt;/h2&gt;
&lt;p&gt;In a layered architecture, there are two kinds of layers: open and closed. In closed layers, the request comes from the above layers and has to go through all closed layers one by one to reach simple data in the bottom layer. For example, if the presentation layer only needs a simple string from a database, the request has to pass through all closed layers.&lt;/p&gt;
&lt;p&gt;In open layers, the request can bypass layers (until it hits a closed layer) and get data from the bottom layer. If we think a presentation layer needs a string again, the presentation can directly request this string from the database without going through all layers (called the fast-lane reader pattern).&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42b/&quot;&gt;42b: Systems and Design Thinking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/59/&quot;&gt;59: Functional Decomposition in Software Systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;http://fundamentalsofsoftwarearchitecture.com/&quot;&gt;Fundamentals of Software Architecture by Mark Richards &amp;amp; Neal Ford&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/47a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/47a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Layers of Isolation</title><link>https://candost.blog/notes/47a1/</link><guid isPermaLink="true">https://candost.blog/notes/47a1/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In layered architectures, we can set up isolation between layers. It means the changes in one layer won&apos;t impact or affect any other layers, providing the contracts between layers remain unchanged. This isolation helps the software architect replace any layer with comfort when necessary. For example, a presentation layer developed with Angular can be replaced with React easily without having any impact on the layers below.&lt;/p&gt;
&lt;p&gt;Wrappers partially do this job but on the lower levels. Isolating a presentation layer enables us to even use very different languages and frameworks. We should be able to replace Angular with Spring MVC, for example.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;http://fundamentalsofsoftwarearchitecture.com/&quot;&gt;Fundamentals of Software Architecture by Mark Richards &amp;amp; Neal Ford&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/47a1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/47a1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Pipeline Architecture Style</title><link>https://candost.blog/notes/47b/</link><guid isPermaLink="true">https://candost.blog/notes/47b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In this architectural style, the system is unidirectional. One module follows the other. Pipes connect these modules, which can be a producer (feeds the pipeline with data), filter (manipulates the data that it receives), or consumer (which is the end of the pipeline and can persist the data in a database).&lt;/p&gt;
&lt;p&gt;The pipeline architecture is a common strategy in Unix development using pipes &lt;code&gt;|.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The pipeline architecture is simple and cheap since it&apos;s monolithic by nature and doesn&apos;t have distributed system complexity.&lt;/p&gt;
&lt;p&gt;It&apos;s fairly testable because of its partial modularity.&lt;/p&gt;
&lt;p&gt;The worst part is it&apos;s not fault-tolerant. One of the failures in any part causes a complete system failure. Also, it&apos;s not scalable and elastic. Although it&apos;s possible to make certain functions scale more than others in the monolithic architecture, this operation is very complex.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;http://fundamentalsofsoftwarearchitecture.com/&quot;&gt;Fundamentals of Software Architecture by Mark Richards &amp;amp; Neal Ford&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/47b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/47b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Putting servers close to clients</title><link>https://candost.blog/notes/48b/</link><guid isPermaLink="true">https://candost.blog/notes/48b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The handshake between server and client doesn&apos;t cost bandwidth, although it makes a full round trip. Until the connection is open, the bandwidth is zero.&lt;/p&gt;
&lt;p&gt;Lowering the handshake fastens the connection. The earlier the handshake ends, the faster the connection starts. To beat this penalty for every connection, we put the servers close to the clients. When the distance is short, the connection starts earlier.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Designing Data-Intensive Applications by Martin Kleppmann&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/48b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/48b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Accidental Complexity</title><link>https://candost.blog/notes/49/</link><guid isPermaLink="true">https://candost.blog/notes/49/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Accidental complexity happens when teams don&apos;t care about their codebase, applications, and systems enough and when they break down tasks in the wrong way. The name &lt;em&gt;accidental&lt;/em&gt; also explains that it usually happens unwittingly. The teams unintentionally build up accidental complexity, and it makes their job more difficult to evolve and change the systems. Onboarding becomes more challenging, and technical debt builds up. One way to reduce accidental complexity is through abstraction. Abstraction helps to make code simpler and limits access to in-depth implementation to prevent possible mistakes or wrong usages.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Designing Data-Intensive Applications by Martin Kleppmann&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/49/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/49/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Monitoring &amp; Inspection to Learn</title><link>https://candost.blog/notes/4b/</link><guid isPermaLink="true">https://candost.blog/notes/4b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Embracing inspections/monitoring and third parties to check how you are doing is a good learning mechanism. While they are inspecting, we can ask for a better solution that they already know (and learned) from others. This also looks like a rubber duck programming and pairing as well.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn the Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/4b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/4b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Managing Promotions</title><link>https://candost.blog/notes/5/</link><guid isPermaLink="true">https://candost.blog/notes/5/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a leader, you&apos;re responsible for people and their promotions. If you are making the call for promotion for your team member, then it&apos;s easier. If you&apos;re not the one who decides on the promotion, you need to learn how to play the promotion game. Every company has different game rules. But regardless of the company, junior people often get promoted at least once in their first two years. As usual, you make the call for promotion with HR; if you don&apos;t stop these junior folks, it will be enough with some coaching.&lt;/p&gt;
&lt;p&gt;For more senior roles, it&apos;s tricky. Find the stretch projects where they need to go beyond their skills and stretch to learn. Give these projects to the people close to the promotion. Together with them, you need to build their case. If you can&apos;t find opportunities in your team, then look for other teams and even other companies to help your report grow, even if it means you will lose them.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Manager&apos;s Path by Camille Fournier&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/5/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/5/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Service Level Agreements/Indicators/Objectives - Percentiles</title><link>https://candost.blog/notes/50/</link><guid isPermaLink="true">https://candost.blog/notes/50/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In software reliability and &lt;a href=&quot;/notes/48c/&quot;&gt;availability&lt;/a&gt;, there are usually vague descriptions. When we say we offer good performance, what does it mean? This is why we use percentiles. Let&apos;s think about response times, often used in SLOs, along with percentiles. In SLAs, we define X ms response time in the 95th percentile. To calculate this, put all response times and sort them from fastest to slowest. Pick the 95th one if you have 100 response times. (950th in 1000, and so on) The response time at that exact point defines your performance in the 95th percentile. For example, you can guarantee to serve in 200ms in the 95th percentile. The same applies to 99th and 99.9th percentiles. Pick accordingly from the sorted list.
We also talk about the mean in response times. The mean response time is actually the 50th percentile. To find it, pick the middle one in the sorted list, and it shows the 50th percentile. For example, 200ms in the 95th percentile translates into 95% of all requests served faster than 200 milliseconds.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/49/&quot;&gt;49: Accidental Complexity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/47/&quot;&gt;47: Software Architecture Styles Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b1/&quot;&gt;24b1: Begin with The End in Mind&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4b/&quot;&gt;4b: Monitoring &amp;amp; Inspection to Learn&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/50/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/50/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Consistency Models in Distributed Systems Index</title><link>https://candost.blog/notes/51/</link><guid isPermaLink="true">https://candost.blog/notes/51/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The consistency model is defined as a contract between the software (process) and memory implementation (data store).&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/consistency-and-consensus-in-distributed-systems/&quot;&gt;DDIA: Consistency and Consensus in Distributed Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-models-and-query-languages/&quot;&gt;Data Models and Query Languages&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/51/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/51/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Strong Consistency</title><link>https://candost.blog/notes/51b/</link><guid isPermaLink="true">https://candost.blog/notes/51b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Usually, the leader of the multiple nodes serves the data; all read &amp;amp; write operations pass through the leader. This approach ensures that the served data acts like it is served from one node. There is a real-time guarantee for the data. The model is called strong consistency or linearizability.&lt;/p&gt;
&lt;p&gt;The leader might not be a leader anymore when a request comes in. That&apos;s why the leader always has to check if it is still a leader. Only then can it return data. That&apos;s why this checking system adds time.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Data Replication in Distributed Systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://understandingdistributed.systems/&quot;&gt;Understanding Distributed Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://candost.substack.com/p/24-understanding-distributed-systems&quot;&gt;Software World #24: Understanding Distributed Systems with Roberto Vitillo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/51b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/51b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Eventual Consistency</title><link>https://candost.blog/notes/51d/</link><guid isPermaLink="true">https://candost.blog/notes/51d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the leader-follower data systems, if we don&apos;t pin clients to the followers, the clients are able to read data through different followers. The followers might be out-of-date. One follower might be behind the other due to asynchronous data replication. So when a client requests data first from one and then another, the result is different. But as soon as the write operation stops, all followers will eventually be consistent. If the system doesn&apos;t require high consistency, this model is good. However, building systems on top of eventually consistent systems is difficult.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;DDIA: What is Replication in Distributed Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Understanding How Database Transactions Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://understandingdistributed.systems/&quot;&gt;Understanding Distributed Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://candost.substack.com/p/24-understanding-distributed-systems&quot;&gt;Software World #24: Understanding Distributed Systems with Roberto Vitillo&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/51d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/51d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Personal Values</title><link>https://candost.blog/notes/52/</link><guid isPermaLink="true">https://candost.blog/notes/52/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we have values that define our personality, we always act accordingly. So, our values are actually limiting us. For example, if we value friendship, we will never yell at our friends, even if we really want to. If we value kindness, we will never tell a person that we hate them and never want to see them again, because these are against our values. Besides the good sides of having values, having them limits us. Having no value enables us to be curious and discover new things in life. When we set a new value, we set a new identity that we will try to fit into any chance.&lt;/p&gt;
&lt;p&gt;Good values provide a solid direction in life, leading to a better structure and more productive time. However, knowing the side effects and being aware of the limiting behavior is eye-opening. It pushes us to be more careful and mindful of our identities and choices.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/52/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/52/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Accepting one thing requires saying no to other things</title><link>https://candost.blog/notes/52a/</link><guid isPermaLink="true">https://candost.blog/notes/52a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The focus is fundamental for achieving many things. Sticking to the values is one of them. Accepting a value requires saying no to the things that break the value. For example, if fidelity is one of our values, we will and need to, say no to any cheating in our relationships.&lt;/p&gt;
&lt;p&gt;Saying yes and sticking to a thing requires saying no to many other things. Society—especially Western—nudges us to say yes to many things by embracing being part of it. People who say no or don&apos;t accept the yes-ism culture are considered outlanders. However, the true value comes from saying no. Always accepting and being in sync with everyone is not achievable, and even trying it is extremely tiring.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;We need to learn to say no to good things to be able to say yes to the great things.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/decisions-that-remove-other-decisions/&quot;&gt;One Decision That Removes Hundreds of Decisions&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/52a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/52a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Accepting Death Destroys Entitlement</title><link>https://candost.blog/notes/52b/</link><guid isPermaLink="true">https://candost.blog/notes/52b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Death is an unavoidable yet the most shunned concept in life. We live as we can escape from it. We don&apos;t think about it and continue our lives as if it is not there. The immortal feeling gives us entitlement.&lt;/p&gt;
&lt;p&gt;Immortality, or fake immortality, prevents us from understanding whatever we do will stay in this world. At the same time, we work toward breaking this understanding. Many people want to leave something behind that will remind them long after they die.&lt;/p&gt;
&lt;p&gt;Once we accept and always remember that we will die, we can choose not to give a fuck about many things. We can get rid of the entitlement and select our values correctly. Death keeps our focus on the important and valuable stuff. It gives us freedom.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/52b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/52b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Guiding Direct Reports as Manager</title><link>https://candost.blog/notes/53/</link><guid isPermaLink="true">https://candost.blog/notes/53/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Guiding someone is not always giving directions. When something is wrong, we give directions or suggestions to correct the course. However, there is also positive reinforcement. With it, we guide the person by emphasizing what they have done well so that they do the right thing more and more.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23c1/&quot;&gt;23c1: What is Manipulative Insincerity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33a/&quot;&gt;33a: Invest in growing your employees&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c3/&quot;&gt;3c3: Giving ownership to people by delegation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23b1/&quot;&gt;23b1: Be careful with obnoxious aggression&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Manager&apos;s Path by Camille Fournier&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/53/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/53/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Create company values from stories in your life</title><link>https://candost.blog/notes/54a/</link><guid isPermaLink="true">https://candost.blog/notes/54a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve seen companies that have values written on walls. But I&apos;ve never known why their values are on the wall.&lt;/p&gt;
&lt;p&gt;If you&apos;re a leader looking to find your company values, look at your life. It&apos;s your company, and leaders rarely change in companies, unlike employees. That&apos;s why your values are the company&apos;s values if you are small enough (not corporate).&lt;/p&gt;
&lt;p&gt;When you come up with values, you must explain why they are your values. If stories pour out one after another, then you found it. Tell these stories to people, and they will stick. People remember how you made them feel. When you tell a story, you create feelings. That&apos;s why stories stick.&lt;/p&gt;
&lt;p&gt;If you&apos;re interviewing a company that puts core values everywhere in public, ask why these are their values. If they answer well, then the culture is strong. If not, there are some problems there.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/worth-doing-wrong-book-summary-review-and-notes/&quot;&gt;Worth Doing Wrong by Arnie S. Malham&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/54a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/54a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Culture Reflects Leadership</title><link>https://candost.blog/notes/54b/</link><guid isPermaLink="true">https://candost.blog/notes/54b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While trying to create a culture—a good one—a leader makes many mistakes, that&apos;s normal and unavoidable. Learning from these mistakes is what makes everything different. Learning comes from making things wrong to make them right.&lt;/p&gt;
&lt;p&gt;As a leader, you cannot avoid building a culture. If you don&apos;t care about the culture, it will build itself, and most probably, it won&apos;t be the one you wanted. That&apos;s why it requires constant effort and investment. The culture will reflect leadership, regardless of whether you want it or not.&lt;/p&gt;
&lt;p&gt;Invest in your culture. Make mistakes and learn from them. Make mistakes to learn the right way. Don&apos;t let things go as they are in the middle of the way. You can&apos;t take a step and stop in the middle. If you do, your culture will also reflect that.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/worth-doing-wrong-book-summary-review-and-notes/&quot;&gt;Worth Doing Wrong by Arnie S. Malham&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/54b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/54b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Different People have different growth trajectories</title><link>https://candost.blog/notes/5b/</link><guid isPermaLink="true">https://candost.blog/notes/5b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we look at high performers in our teams, there are usually two types of people: superstars and rock stars. Superstars seek steep growth and look for changes constantly. They are ambitious at work, and if we don&apos;t challenge them with growth opportunities, they will leave because of boredom.&lt;/p&gt;
&lt;p&gt;On the other hand, there are rock stars. Rock as a stone, not music. These people perform in the position they are in, and they are happy there. If we force them to promotion, they will run away. If we push them further because they have great potential, we make a mistake.&lt;/p&gt;
&lt;p&gt;Identifying each person and understanding their desire is vital. That&apos;s why instead of focusing on the potential of the people, we should focus on growth.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24/&quot;&gt;24: Strong teams are motivated by goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10a/&quot;&gt;10a: Growing in IC track in Engineering&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/44/&quot;&gt;44: Understanding Differences in Opinions and Perspectives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Radical Candor by Kim Scott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/5b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/5b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Growing in the Career</title><link>https://candost.blog/notes/8/</link><guid isPermaLink="true">https://candost.blog/notes/8/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you want to grow in your career, focus on the profession, not the title. Titles differ from company to company. Being a senior developer doesn&apos;t mean having the necessary knowledge or skills. In one company, you can be a senior. In another, you can be a junior. There is no universal definition of a senior developer. So, focus on growing yourself in the profession and experience.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b3/&quot;&gt;3b3: Be Honest and Open to Building Trust&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32/&quot;&gt;32: Communicating Decisions in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20b/&quot;&gt;20b: Sharing knowledge is not a noise&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c1/&quot;&gt;3c1: Autonomy and Ownership Requires Technical Capability&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b1/&quot;&gt;24b1: Begin with The End in Mind&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1g/&quot;&gt;1g: Winners and losers share the same goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24c/&quot;&gt;24c: People need clarity, not motivation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27b/&quot;&gt;27b: How to Learn New Things via Habit Stacking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17d/&quot;&gt;17d: Focus on only one improvement in every rehearsal for public speaking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/9/&quot;&gt;9: Growing does not always mean being an expert&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Making the decision between management or IC Leadership</title><link>https://candost.blog/notes/8a/</link><guid isPermaLink="true">https://candost.blog/notes/8a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How do we make a decision about going into management or staying on the IC track when we come to the point of senior engineer?&lt;/p&gt;
&lt;p&gt;You need leadership experience in both management and IC track. So, focus on your motivation. What motivates you? If you want to have a bigger impact, in which way do you want to have this impact, in engineering or people management? On both sides, you have to do one-on-ones, people. However, the content of one-on-ones is different. Management focuses on the other person&apos;s growth and problems, while the IC leader focuses on catching up with the technical side. In the IC track, you help people to learn to come up with better solutions. On the management side, you help people to achieve their goals and become better and more effective employees. In IC management, you don&apos;t write code most of the time. In IC leadership, you still do hands-on coding but not a lot. In pair programming, you are more on the navigator side.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/9a/&quot;&gt;9a: Why you are not a senior&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/10/&quot;&gt;10: Individual Contributor or Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/11/&quot;&gt;11: How to move to the next level&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;https://candost.substack.com/p/9-engineering-career-path&quot;&gt;Software World with Candost #9&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Advice to Juniors</title><link>https://candost.blog/notes/8b/</link><guid isPermaLink="true">https://candost.blog/notes/8b/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Being able to write is crucial. Both technical and non-technical writing is unavoidable. Communicating clearly with each other requires us to understand the job very well so that we can explain.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1/&quot;&gt;1: Why do we bother to write?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/11/&quot;&gt;11: How to move to the next level&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25/&quot;&gt;25: Consistent writing brings success&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53/&quot;&gt;53: Guiding Direct Reports as Manager&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Learn The Principles</title><link>https://candost.blog/notes/8c/</link><guid isPermaLink="true">https://candost.blog/notes/8c/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Learn what&apos;s going on behind the scene. Learn the principles of frameworks. Why did they take that specific approach? What is the approach? Understand how it works but don&apos;t get hyped about the framework itself.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12/&quot;&gt;12: Engineer Autonomy&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30/&quot;&gt;30: Scientific Thinking and Fact-Checking for A Better Life&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40/&quot;&gt;40: Understanding the Feedback You Receive&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/no-you-dont-need-to-learn-another-programming-language-every-three-months/&quot;&gt;No, You Don&apos;t Need to Learn Another Programming Language Every Three Months.&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Ask Questions</title><link>https://candost.blog/notes/8d/</link><guid isPermaLink="true">https://candost.blog/notes/8d/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Don&apos;t be afraid of asking questions. Ask all of your questions to understand clearly. You are not only learning by asking but also helping the other to learn the basic facts, key details, or most practical aspects better. Also, when people try to answer questions, they realize their knowledge gaps and spend the effort to fill them so they can answer the question better.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8i/&quot;&gt;8i: Don&apos;t stop asking questions&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Teach Others</title><link>https://candost.blog/notes/8e/</link><guid isPermaLink="true">https://candost.blog/notes/8e/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When someone tries to teach something to another person, they find out missing knowledge about the topic. They learn better. The framework you teach doesn&apos;t matter. You can record a screencast, write a blog, or give a talk, it doesn&apos;t matter. And even you don&apos;t have to publish these. Just prepare them like you&apos;re gonna publish them. By doing this, you&apos;ll learn a lot of details about the topic you are working on.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Seniority is not about being smarter</title><link>https://candost.blog/notes/8f/</link><guid isPermaLink="true">https://candost.blog/notes/8f/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Seniority is not about being smarter. Senior engineers are not smarter than you. They only have more experience and they faced and solved varying problems.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8f/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8f/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>It&apos;s not about the number of languages you know</title><link>https://candost.blog/notes/8g/</link><guid isPermaLink="true">https://candost.blog/notes/8g/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If a person knows many programming languages, it doesn&apos;t mean that they earned the senior title. Someone can be an expert in different programming languages but can still be mid-level. Learning the principles behind a few languages can move you one step further. However, seniority doesn&apos;t come with it.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8g/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8g/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Inheriting other people&apos;s code</title><link>https://candost.blog/notes/8h/</link><guid isPermaLink="true">https://candost.blog/notes/8h/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Senior people can quickly analyze the inherited code and understand the things that need to be done. According to the result of the analysis, they can estimate the work and show pitfalls, and requirements.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8h/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8h/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t stop asking questions</title><link>https://candost.blog/notes/8i/</link><guid isPermaLink="true">https://candost.blog/notes/8i/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The moment you stop asking questions, you stop growing. It doesn&apos;t matter if you are a junior or senior; if you don&apos;t ask questions, you don&apos;t learn and grow.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/these-annoying-tenure-engineers/&quot;&gt;These (damn) Annoying Tenure Engineers&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/8i/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/8i/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Growing does not always mean being an expert</title><link>https://candost.blog/notes/9/</link><guid isPermaLink="true">https://candost.blog/notes/9/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Growing up in a career doesn&apos;t always mean that you become an expert in the field. You can be an all-rounder, expert, or manager. It&apos;s up to you to pick one. My recommendation is that learn one profession well, learn the tooling, and master that tech stack. Then, switch the field.&lt;/p&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/9/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/9/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why you are not a senior</title><link>https://candost.blog/notes/9a/</link><guid isPermaLink="true">https://candost.blog/notes/9a/</guid><pubDate>Sun, 28 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you work alone all the time, you’ll never be a senior.&lt;/p&gt;
&lt;p&gt;If you think you know the best, you’ll never be a senior.&lt;/p&gt;
&lt;p&gt;If you always work with senior, staff, or principal engineers, you’ll never be a senior. You have to mentor, train, and coach other people.&lt;/p&gt;
&lt;p&gt;If you jump on the hype train without giving it a thought, you’ll never be a senior developer.&lt;/p&gt;
&lt;p&gt;If you don’t bother to explain your awesome technical solutions to non-technical folks, you’ll never be a senior&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/12a/&quot;&gt;12a: Making decisions based on three groups&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/9a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/9a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Choosing a topic for content and public speaking</title><link>https://candost.blog/notes/17h/</link><guid isPermaLink="true">https://candost.blog/notes/17h/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Don&apos;t throw away 101 talks. People are more engaged in them. More people don&apos;t know 101 contents. Think of it like a funnel. Whenever you go too deep, you will find fewer people.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17a/&quot;&gt;17a: Choosing a talk topic is art&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2a/&quot;&gt;2a: Take breaks to write better&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2/&quot;&gt;2: How to Improve Writing&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Demystifying Public Speaking by Lara Hogan&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/17h/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/17h/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>No happiness without suffering</title><link>https://candost.blog/notes/1j/</link><guid isPermaLink="true">https://candost.blog/notes/1j/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There is no happiness without suffering. Also, suffering is not suffering while trying to reach a goal and thinking that we will be happy when we get it. The whole idea of happiness (the imagination) we await in reaching our goals is problematic. When we reach a goal, we are happy only for a moment; our emotions are always temporary. After that moment, emotions are gone, and we&apos;re back to suffering again for the next goal, along with an expectation of happiness. All social media tricks us to that point, with everyone displaying their happy moments and convincing us that the full-happiness is possible. But to show off those happy moments, what did the other person suffer from? What pain did they have? We don&apos;t think they had any pain, and this point causes a lot of psychological problems.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/1j/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/1j/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to give positive feedback?</title><link>https://candost.blog/notes/23c/</link><guid isPermaLink="true">https://candost.blog/notes/23c/</guid><description>When giving praise, be as specific as constructive feedback. Be mindful when and how to give it.</description><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we want to appreciate someone&apos;s work or behavior, we often use generic forms such as &quot;good work&quot; or &quot;thanks for everything you&apos;ve done.&quot; But we give ninety-nine details and a big explanation when it comes to the negative feedback that focuses on improvements. The appreciation has to be as specific as the negative ones.&lt;/p&gt;
&lt;p&gt;Only being specific is not enough; the delivery method is important, and it depends on the person who receives the feedback. Some people need an email to the whole team or public praise in a meeting; some only need their paycheque paid on time. Clarify how and in which format the feedback receiver wants to hear before praising them.&lt;/p&gt;
&lt;p&gt;Last but not least, the feedback has to be authentic. Be mindful and selective. If you always give appreciation for every small thing, they begin to be worth less in time. You create appreciation inflation. Be authentic and specific on &lt;em&gt;when&lt;/em&gt; you are going to give appreciation in &lt;em&gt;which&lt;/em&gt; form. The format and timing combination can vary; use whatever suits the person and the situation best.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to have better performance review meetings as a leader</title><link>https://candost.blog/notes/23g/</link><guid isPermaLink="true">https://candost.blog/notes/23g/</guid><description>Separate Evaluation Feedback from Coaching &amp; Appreciation Feedback In Performance Reviews</description><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Regular performance reviews are evaluating meetings. We evaluate the previous year and give feedback to each other. These meetings often happen in one sitting. We discuss the previous year, agree on the compensation, and decide on the next year&apos;s expectations and action items. These meetings are hard to get right. Because we usually mix up an evaluation with coaching and appreciation. While the meeting&apos;s purpose and the employee&apos;s expectation is evaluation, they get all three at the same time. When the three of them are mixed up, it&apos;s difficult to extract any one of them from the mixture. So, we need to separate them to provide the best value to the employee. First, have the evaluation feedback and evaluate the previous year. Then, after a couple of days (usually 2-3 is enough), have a coaching and appreciation session as a follow-up. They will have time to consume the evaluation feedback and be able to ask questions. On the other hand, you make sure that the evaluation is received and handled well and that your appreciation and coaching can have the impact you wanted to have in the first place.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/35/&quot;&gt;35: Protective Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b1/&quot;&gt;3b1: Building Trust as a New Engineering Manager&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/three-types-of-feedback/&quot;&gt;Three Types of Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/23g/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/23g/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Take breaks to write better</title><link>https://candost.blog/notes/2a/</link><guid isPermaLink="true">https://candost.blog/notes/2a/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Take breaks while writing. When you write a text and return later, you recognize that one piece of the text stands out. Then, you start thinking and learn what you AREN&apos;T writing.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1i/&quot;&gt;1i: Embrace &amp;amp; Love Boredom&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/62/&quot;&gt;62: Energy Management at Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Bird by Bird by Anne Lamott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/2a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/2a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Write a letter to a friend</title><link>https://candost.blog/notes/2c/</link><guid isPermaLink="true">https://candost.blog/notes/2c/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Whenever you are stuck with writing a story or when you don&apos;t know where to start a topic, write a letter to either a friend or a loved one. Letters are very casual, and their nature helps to ease the stress around writing. Talking to a friend also helps you remember many details because there is no one watching you over your shoulder.&lt;/p&gt;
&lt;p&gt;When you write to a friend, it also includes authenticity—writing to an audience nudges you to have a certain voice and style in writing and to keep that. But when you write a casual letter to a friend, you write with your whole being, as whoever you are.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Bird by Bird by Anne Lamott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/2c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/2c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Leave the Reader with Only One Idea</title><link>https://candost.blog/notes/2d/</link><guid isPermaLink="true">https://candost.blog/notes/2d/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&quot;Every successful writing should leave the reader with one and only one thought, not two, not three, or five. One.&quot; — Zinsser&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In non-fiction, it&apos;s tempting always to fire ideas and arguments to the reader. Some of them support the original idea and can be used. However, it&apos;s difficult to follow up on the second or third thought. Readers are left bewildered, and ideas don&apos;t have a great impact once there are many of them.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; On Writing Well by William Zinsser&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/what-i-learned-about-getting-better-at-giving-talks-and-presentations/&quot;&gt;What I Learned About Getting Better at Giving Talks and Presentations&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/2d/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/2d/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Elements of a Story</title><link>https://candost.blog/notes/2e/</link><guid isPermaLink="true">https://candost.blog/notes/2e/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every story has elements inside. Some people list fundamental elements of a story with more than five items. However, in its essence, there are only three: A character, a challenge, and a goal. The character has to resolve the challenge to reach the goal. Whatever happens in between forms the story.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2a/&quot;&gt;2a: Take breaks to write better&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Unleash the Power of Storytelling by Rob Biesenbach&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/2e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/2e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why do we suffer in life?</title><link>https://candost.blog/notes/30b/</link><guid isPermaLink="true">https://candost.blog/notes/30b/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Suffering and pain are born from a biological need during evolution. Humans seek to suffer all the time. That&apos;s why, regardless of richness, poverty, aloneness, being entirely social, hungriness, and fullness, everyone suffers from different things. Because evolution is based on small changes and adaption to the environment. When humans (or all creatures) suffer, they seek to change. If we don&apos;t suffer and be happy all the time, we wouldn&apos;t be looking for any single change. &quot;Only mildly dissatisfied and painful creatures can put the work to innovate and survive.&quot; If there is no dissatisfaction, we never move a finger to change anything. Because we&apos;re happy with the current situation, we&apos;re driven by our biological needs.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/46d/&quot;&gt;46d: Doubts are rarely formed on experience&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41b/&quot;&gt;41b: How to discover creativity?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/29/&quot;&gt;29: Uncertainty is needed to stay open-minded&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30b/&quot;&gt;30b: Why do we suffer in life?&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30b3/&quot;&gt;30b3: The Case of Happiness&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30b/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30b/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Emotions are biological</title><link>https://candost.blog/notes/30b2/</link><guid isPermaLink="true">https://candost.blog/notes/30b2/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we experience a negative emotion, it is a way for our body to nudge us to change our conditions; it is a call to action. Our body tells us to avoid all triggers that cause the negative experience. Our hormones have evolved to tell us that unpleasant experiences shouldn&apos;t be repeated.&lt;/p&gt;
&lt;p&gt;On the other hand, the same is true for positive experiences. When we&apos;re happy or satisfied, our hormones are arranged in a way that tells us to keep the experience and not seek change.&lt;/p&gt;
&lt;p&gt;It&apos;s only logical that our hormones decide what we&apos;re annoyed by and what we enjoy.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/17b/&quot;&gt;17b: Increasing Public Speaking Skills&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/30b2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/30b2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Accountability and Learning Culture in Organizations</title><link>https://candost.blog/notes/31/</link><guid isPermaLink="true">https://candost.blog/notes/31/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.norulesrules.com/&quot;&gt;Netflix&apos;s ownership and accountability culture&lt;/a&gt; enables people to learn from their mistakes truly. However, it requires a lot of groundwork to create this culture.&lt;/p&gt;
&lt;p&gt;Learning from mistakes is different from admitting failures and sharing learning publicly. The difficult part of Netflix&apos;s culture is the transparency level.&lt;/p&gt;
&lt;p&gt;The required transparency and discomfort zone are high, but they are constructive. We are adults, and we take responsibility. If we are proudly taking these responsibilities and publicly stating them in front of people, we have to take learnings and accept and admit failure publicly. There is no shame in admitting failures. Postmortem Analysis Documents and meetings are good examples of taking responsibility in software engineering.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31d/&quot;&gt;31d: Effectively Learn from mistakes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54b/&quot;&gt;54b: Culture Reflects Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://www.norulesrules.com/&quot;&gt;No Rules Rules by Reed Hastings and Erin Meyer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/31/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/31/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Create Accountability Cadence</title><link>https://candost.blog/notes/31a/</link><guid isPermaLink="true">https://candost.blog/notes/31a/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Having an accountability cadence helps people develop a sense of ownership. When people don&apos;t hold themselves accountable, they focus on individual improvements and get stuck there.&lt;/p&gt;
&lt;p&gt;Forming a cadence for accountability helps extract learning, anticipate future blockers, and create ownership. Putting it into a cadence (like weekly) helps form the culture. If you&apos;re having accountability and responsibility problems, start regularly asking about people&apos;s commitment and how their commitment from the previous cadence is going.&lt;/p&gt;
&lt;p&gt;When people publicly commit, they try harder to make that commitment happen, regardless of the topic.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/15/&quot;&gt;15: What should you do when your manager delegates a task to you&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c/&quot;&gt;3c: Giving Ownership to People&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/31/&quot;&gt;31: Accountability and Learning Culture in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19c/&quot;&gt;19c: How to move faster in organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/54/&quot;&gt;54: Creating Open Culture at Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Four Disciplines of Execution by Chris McChesney, Sean Covey, and Jim Huling&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/31a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/31a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Elevating Others Around You</title><link>https://candost.blog/notes/33/</link><guid isPermaLink="true">https://candost.blog/notes/33/</guid><description>Improving Competency with Mechanisms</description><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Improve Competency with Mechanisms&lt;/h2&gt;
&lt;p&gt;Improving competency on technical topics should be supported with mechanisms. Mechanisms ensure that technical knowledge expands. These mechanisms include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/32a/&quot;&gt;32a: Continually and consistently repeat the message&lt;/a&gt; Saying the message once is not important&lt;/li&gt;
&lt;li&gt;Taking deliberate action&lt;/li&gt;
&lt;li&gt;Learning at every opportunity&lt;/li&gt;
&lt;li&gt;Certifying the learning (tests) and competency&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b/&quot;&gt;24b: Specify goals instead of methods or processes&lt;/a&gt; Specifying goals, not methods. (This is especially amazing. When we specify methods, we forget why we are doing what we are doing.)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24b/&quot;&gt;24b: Specify goals instead of methods or processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/35/&quot;&gt;35: Protective Leadership&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/25a/&quot;&gt;25a: You get what you repeat&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1h/&quot;&gt;1h: Continuous Improvement Means Changing The System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/24c/&quot;&gt;24c: People need clarity, not motivation&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27b/&quot;&gt;27b: How to Learn New Things via Habit Stacking&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27/&quot;&gt;27: Developing Habits&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27f/&quot;&gt;27f: Try to keep your learning in &apos;Just Manageable Difficulty&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23b1/&quot;&gt;23b1: Be careful with obnoxious aggression&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c3/&quot;&gt;3c3: Giving ownership to people by delegation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn The Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/33/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/33/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Asking Questions to Build Trust with A Direct Report</title><link>https://candost.blog/notes/3b5/</link><guid isPermaLink="true">https://candost.blog/notes/3b5/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Building trust has different forms. But the first action passes by learning how the other person prefers certain things. If you do things that are against the other person&apos;s preferences, then chances are that you won&apos;t be in a good relationship with them. All relationships have three entities in them. The first and the second are you and the other person. The third one is the relationship itself. These questions are related to knowing the other person but contribute to building the third entity greatly, your relationship. The third entity requires more work than you think. These questions are the first steps in building it.&lt;/p&gt;
&lt;p&gt;Starting as a new manager requires building trust within reports. Trust is tricky because it has multiple forms depending on the person. Each person&apos;s cultural background impacts how they form trust. But luckily, there are some questions that help every person. Ask these questions in your first one-on-ones in addition to the ones mentioned above:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How do I know when you&apos;re in a bad mood?&lt;/li&gt;
&lt;li&gt;How do you prefer praise, in public or private?&lt;/li&gt;
&lt;li&gt;What is your preferred method of communication for serious feedback? Do you prefer written form to have time and think about it or have a call instead?&lt;/li&gt;
&lt;li&gt;Are there any manager behaviors that you know you hate?&lt;/li&gt;
&lt;li&gt;Why did you decide to work here? (focus on their story)&lt;/li&gt;
&lt;li&gt;Do you have clear career goals? How can I help achieve them?&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; The Manager&apos;s Path by Camille Fournier&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/3b5/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/3b5/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Our minds are changeable; we can get rid of our inner critic</title><link>https://candost.blog/notes/41b1/</link><guid isPermaLink="true">https://candost.blog/notes/41b1/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We believe that our minds and, therefore, behaviors are not changeable. On the contrary, they change a lot in our lifetime. We have this firm belief, especially when we are stuck with critical thoughts about ourselves. These critical thoughts come from authoritative figures in our lives. They have an impact when they criticize us—even with good intentions. These people can be our parents or teachers. Once the mind has these critics, it doesn&apos;t mean they are irreplaceable. If we constantly repeat them, they will always be there. But if we can make our minds think new thoughts, we already start preventing these critical thoughts and improve our creativity. Our minds are biologically changeable; it&apos;s called neuroplasticity. We&apos;re not born with critical thoughts. Our minds changed on the way, and they can change again.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://innercriticbook.com/&quot;&gt;Banish Your Inner Critic by Denise Jacobs&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/41b1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/41b1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Do something principle</title><link>https://candost.blog/notes/41c/</link><guid isPermaLink="true">https://candost.blog/notes/41c/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Action → Inspiration → Motivation → Action → Inspiration → Motivation → Action ...&lt;/p&gt;
&lt;p&gt;The &quot;Do something principle&quot; and &lt;a href=&quot;/bias-towards-action/&quot;&gt;Bias for Action&lt;/a&gt; have different perspectives on motivation and inspiration. If you wait for motivation to arrive or look for inspiration, then you most probably won&apos;t find it. Even when you do, you probably won&apos;t take any action about it. You will procrastinate if you approach in this way.&lt;/p&gt;
&lt;p&gt;If you take action and do something before waiting for anything (no inspiration, no motivation), the rest will follow. This is a painful process, and to be able to proceed further, accept this pain, and do something, it doesn&apos;t matter what. You will see the results. For example, if you want to write, don&apos;t wait for inspiration. Just start putting word after another. The inspiration will find you.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving A Fuck by Mark Manson&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/41c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/41c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What to Consider While Designing a Software System</title><link>https://candost.blog/notes/42/</link><guid isPermaLink="true">https://candost.blog/notes/42/</guid><description>Conceptual Integrity</description><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When there is no constraint in software design and development discussions, most discussions go to architecture and system design. Especially when the architects and implementers are the same people, the architecture is often debated way more. People forget that the architecture is flexible (maybe not much) and adaptable to changes.&lt;/p&gt;
&lt;p&gt;Conceptual integrity is the most important thing in system design. Therefore, people should focus on that. The implementation part and how the design will be implemented are as critical and creative as the design. If we separate the two and approach them accordingly, we can go a little faster and produce higher-quality software. We can create constraints by limiting the people who will do the design. The fewer people, the better and more integrated the design will be. When the decision comes from many minds, it loosens and becomes weak. Satisfying many voices means more sacrifice.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33/&quot;&gt;33: Elevating Others Around You&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/51a/&quot;&gt;51a: Database Race Conditions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/47/&quot;&gt;47: Software Architecture Styles Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/37/&quot;&gt;37: Setting Organizational Goals and Processes&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/26/&quot;&gt;26: The Cost of Software Deployment and Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;While designing, look for &lt;a href=&quot;/notes/46e2/&quot;&gt;what you’re &lt;strong&gt;not&lt;/strong&gt; doing&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://web.eecs.umich.edu/~weimerw/2018-481/readings/mythical-man-month.pdf&quot;&gt;Mythical Man-Month by Frederik P. Brooks Jr.&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/newsletter/mektup-8/&quot;&gt;Mektup-8&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/42/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/42/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Top Level Partitioning</title><link>https://candost.blog/notes/42a/</link><guid isPermaLink="true">https://candost.blog/notes/42a/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The software architect decides the boundaries of components. The components are a high-level group of codes and modules, while the modules are codes that are related to each other. We can think of them as libraries and small, lightweight frameworks. Components are one level above and formed by modules. Depending on the application and system, module partitioning is possible in two ways: domain and technical. Domain partitioning is embraced by Domain-Driven Design and focuses on architecting the system using business domains. On the other hand, technical partitioning splits the system using technical capabilities such as persistence, service, and presentation.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a/&quot;&gt;19a: Knowns and Unknowns&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/26/&quot;&gt;26: The Cost of Software Deployment and Continuous Delivery&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/42/&quot;&gt;42: What to Consider While Designing a Software System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/43/&quot;&gt;43: The Role and Responsibility of Software Architect&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/56/&quot;&gt;56: Structuring Teams in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/59/&quot;&gt;59: Functional Decomposition in Software Systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;http://fundamentalsofsoftwarearchitecture.com/&quot;&gt;Fundamentals of Software Architecture by Mark Richards &amp;amp; Neal Ford&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/42a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/42a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Use Second-Order Thinking</title><link>https://candost.blog/notes/42e/</link><guid isPermaLink="true">https://candost.blog/notes/42e/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While rebuilding a service or migrating from one technology to another, people often think about the consequences of that process. First-order thinking prevents them from having a look at why the decisions have been made before to build a service in that way. In each change, organizations should think more with second-order thinking. Yet, it&apos;s not easy. When organizations don&apos;t have decision records and some documentation, it&apos;s a big challenge to figure out. When we think about &lt;a href=&quot;/chestertons-fence/&quot;&gt;Chesterton&apos;s fence&lt;/a&gt;, organizations build fences somewhere but don&apos;t put a sign on it or inform the city council about why they do it. When someone arrives at the fence (or an old service in an organization) sometime later, they have no idea why it&apos;s been built like that. They think it doesn&apos;t make sense and decide to remove it. That&apos;s first-order thinking. Organizations need second-order thinking and build mechanisms to provide a foundation for second-order thinking.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19a/&quot;&gt;19a: Knowns and Unknowns&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3/&quot;&gt;3: Being a Team Manager and Manager&apos;s Job&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23/&quot;&gt;23: The First Question of Feedback Discussions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1h/&quot;&gt;1h: Continuous Improvement Means Changing The System&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/30/&quot;&gt;30: Scientific Thinking and Fact-Checking for A Better Life&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34/&quot;&gt;34: Clarity in Organizations&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/53d/&quot;&gt;53d: Listen with attention and ask questions with curiosity to encourage others to be open&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/59/&quot;&gt;59: Functional Decomposition in Software Systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;https://fs.blog/chestertons-fence/&quot;&gt;Chesterton&apos;s Fence&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/42e/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/42e/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Understanding Differences in Opinions and Perspectives</title><link>https://candost.blog/notes/44/</link><guid isPermaLink="true">https://candost.blog/notes/44/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Everyone has their own rules in their heads. We interpret and evaluate situations and other people&apos;s behavior with our rules. The events, situations, and, therefore, the available data are the same for everyone. When there is an announcement at work about the team or organizational changes. People interpret the news differently and react to these changes differently. Many misunderstandings and conflicts occur because we see the rules as not &lt;em&gt;our&lt;/em&gt; rules but &lt;em&gt;the&lt;/em&gt; rules. Calling it a lack of empathy would be a simple and wrong inference. That&apos;s why we first need to understand the available data, and later, we can learn our own rules and the rules of other people. Only then can we interpret in our way while knowing and understanding the data and common ground truly. This approach gives us different opportunities to give feedback and understand the feedback we receive.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/40c/&quot;&gt;40c: Learning How to Receive Feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/38/&quot;&gt;38: Changing Habits Happen in Three Different Ways&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/4a/&quot;&gt;4a: On Being Curious&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/22/&quot;&gt;22: Cross-Cultural Communication&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/21/&quot;&gt;21: Efficient Code Review Process (The changes I wanted to do in one of my teams)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23d/&quot;&gt;23d: Don&apos;t give feedback for the sake of giving feedback&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/5/&quot;&gt;5: Managing Promotions&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/6/&quot;&gt;6: Being a boss who cares personally&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/19/&quot;&gt;19: Decision-Making Strategies&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/20/&quot;&gt;20: Influencing Others&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/44/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/44/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Coaching Yourself</title><link>https://candost.blog/notes/46/</link><guid isPermaLink="true">https://candost.blog/notes/46/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;If you can&apos;t make a decision, coach yourself as if you&apos;re doing it for a friend.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The only face we don&apos;t see and cannot read is ours. We always think about our thoughts, feelings, and intentions. But we don&apos;t focus on how they impact our behavior and how others perceive it. On the other side of the equation, we always watch other people&apos;s behavior and guess their intentions. Whenever we see that their behavior is off from their intention, we can quickly point to it and even coach them. Applying a similar strategy to ourselves is trickier. That&apos;s why we need to coach ourselves more and more.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The strategy:&lt;/em&gt; Whenever we struggle with any life decision, we think of ourselves as someone else. Think of ourselves as one of our best friends who needs honest feedback. What would we recommend to them in that situation? Then we write down our answers and give a short timeframe before rereading them and deciding what to do.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/41/&quot;&gt;41: Characteristics of Creative Work&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2a/&quot;&gt;2a: Take breaks to write better&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/27a/&quot;&gt;27a: Increasing awareness of the actions and behaviors&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/1g/&quot;&gt;1g: Winners and losers share the same goals&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2c/&quot;&gt;2c: Write a letter to a friend&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/52b/&quot;&gt;52b: Accepting Death Destroys Entitlement&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/46/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/46/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>System Design Index</title><link>https://candost.blog/notes/48/</link><guid isPermaLink="true">https://candost.blog/notes/48/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Entries:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48a/&quot;&gt;Fault Tolerance &amp;amp; Resiliency&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48b/&quot;&gt;on putting servers close to clients&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48c/&quot;&gt;on CAP Theorem&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48d/&quot;&gt;on Elasticity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/51/&quot;&gt;on consistency models in distributed systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/48/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/48/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>On Being Curious</title><link>https://candost.blog/notes/4a/</link><guid isPermaLink="true">https://candost.blog/notes/4a/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Asking questions has two sides: questioning and curiosity. Which one are you doing? When we ask questions to people, we either question them or ask them to learn. Once we go with curiosity, the truth rises in answers. People don&apos;t think that we are judgmental, and they give the best answer they can. However, when we approach to question them in any way, they start being defensive and try only to fulfill the need. If we&apos;re a manager and we ask questions to learn something (out of curiosity), our reports will give the best answer they can.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn the Ship Around&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resourced:&lt;/strong&gt; &lt;a href=&quot;/questioning-vs-asking/&quot;&gt;Questioning vs. Asking&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/4a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/4a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Database Race Conditions</title><link>https://candost.blog/notes/51a/</link><guid isPermaLink="true">https://candost.blog/notes/51a/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Dirty writes:&lt;/em&gt; It happens when a transaction overwrites the value that is written by another transaction that hasn&apos;t been committed yet.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Dirty reads:&lt;/em&gt; A transaction reads a value from a write transaction that is not committed yet.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Fuzzy Read:&lt;/em&gt; It happens when a transaction sees two different results when reading a value twice. When the difference is caused by committing another transaction, the value comes from pre-commit and after-commit.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Phantom Read:&lt;/em&gt; It happens when a transaction reads a set of objects whiles another transaction changes some of the data; thus, it affects the result of the read.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/55/&quot;&gt;55: Database Partitioning (Sharding)&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/understanding-how-database-transactions-work/&quot;&gt;Understanding How Database Transactions Work&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://understandingdistributed.systems/&quot;&gt;Understanding Distributed Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://candost.substack.com/p/24-understanding-distributed-systems&quot;&gt;Software World #24: Understanding Distributed Systems with Roberto Vitillo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/51a/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/51a/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Sequential Consistency</title><link>https://candost.blog/notes/51c/</link><guid isPermaLink="true">https://candost.blog/notes/51c/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In a &lt;a href=&quot;/notes/51b/&quot;&gt;strong consistency model&lt;/a&gt;, the read operations have the extra time cost of the leader asking all followers to decide if it&apos;s still a leader. We can solve this by allowing followers to read the data as well. However, their data might not be up-to-date. Since the leader sends/ensures that followers receive data sequentially, it cannot guarantee real-time data. But the order will be the same. This situation differs from the strong consistency.&lt;/p&gt;
&lt;p&gt;Also, with this approach, we pin a client to a follower.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/books/data-replication-in-distributed-systems/&quot;&gt;Data Replication in Distributed Systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://understandingdistributed.systems/&quot;&gt;Understanding Distributed Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://candost.substack.com/p/24-understanding-distributed-systems&quot;&gt;Software World #24: Understanding Distributed Systems with Roberto Vitillo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/51c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/51c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Creating Open Culture at Work</title><link>https://candost.blog/notes/54/</link><guid isPermaLink="true">https://candost.blog/notes/54/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Creating an open culture starts with listening to people and addressing their problems. Many companies do neither. Some companies try addressing problems, but as they are not listening, they usually bring solutions that don&apos;t solve the problem at all.&lt;/p&gt;
&lt;p&gt;To understand what people need and which problems they have, do regular morale check-ins and surveys. Keep it simple and ask one question. Do it monthly.&lt;/p&gt;
&lt;p&gt;Read every question and really answer all of them, address the problems. Publish all results, comments, and answers to everyone. Don&apos;t read the survey results alone; as a leader, it will be an emotional roller coaster; you will need some other people (probably leaders) around you while reading.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3b2/&quot;&gt;3b2: Building Trust as a Leader&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/36/&quot;&gt;36: Open Feedback Culture&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/34a/&quot;&gt;34a: Transparency and respect build trust&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/33a/&quot;&gt;33a: Invest in growing your employees&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/3c3/&quot;&gt;3c3: Giving ownership to people by delegation&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; &lt;a href=&quot;/books/worth-doing-wrong-book-summary-review-and-notes/&quot;&gt;Worth Doing Wrong by Arnie S. Malham&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/54/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/54/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Being a boss who cares personally</title><link>https://candost.blog/notes/6/</link><guid isPermaLink="true">https://candost.blog/notes/6/</guid><pubDate>Sat, 27 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&quot;Being a boss is a job, not a value judgment.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Many leaders mix these two and think of the word boss as something negative because it gives a superior feeling. The bosses who get carried away with this feeling begin to think they are smarter than everyone. It results in them not caring about the team members personally. Feeling superior also brings the &quot;professional&quot; tag. When leaders think that they stay within professional lines, it prevents them from caring about their reports personally. Being professional is different than acting professionally. When leaders act professionally and don&apos;t care about people personally, they also cannot expect their reports to be professional and care about them. When the boss doesn&apos;t fully show themselves, the reports won&apos;t show themselves either.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/23b1/&quot;&gt;23b1: Be careful with obnoxious aggression&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source(s):&lt;/strong&gt; Radical Candor by Kim Scott&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/6/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/6/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#26: Machine Learning &amp; Data Science with Jesper Dramsch</title><link>https://candost.blog/podcast/26-machine-learning-and-data-science/</link><guid isPermaLink="true">https://candost.blog/podcast/26-machine-learning-and-data-science/</guid><pubDate>Tue, 23 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;26: Machine Learning &amp;amp; Data Science with Jesper Dramsch&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/26-machine-learning-and-data-science&quot;&gt;https://candost.substack.com/p/26-machine-learning-and-data-science&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/26-machine-learning-and-data-science/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/26-machine-learning-and-data-science/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Worth Doing Wrong Book Review, Summary, and Notes</title><link>https://candost.blog/books/worth-doing-wrong-book-summary-review-and-notes/</link><guid isPermaLink="true">https://candost.blog/books/worth-doing-wrong-book-summary-review-and-notes/</guid><description>Arnie Malham talks about what they did specifically to change the culture in cj Advertising. They changed the culture with many small steps, not with one big jump. Making it wrong with small steps to make it right is the message of the book.</description><pubDate>Thu, 18 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How Strongly I Recommend It:&lt;/strong&gt; 7/10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How Likely I Will Gift It:&lt;/strong&gt; 2/10&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;📖 The Book in 3 Sentences&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;A leader&apos;s story and learnings about creating a culture in a company as a CEO.&lt;/li&gt;
&lt;li&gt;Creating culture is difficult and consists of many failures and learnings.&lt;/li&gt;
&lt;li&gt;Culture reflects leadership: if you want to change the culture, start changing yourself; the rest will be easier.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;🌟 My Review&lt;/h2&gt;
&lt;p&gt;The language of &quot;we are awesome&quot; is so strong, and it&apos;s not the way I enjoy the content. I understand that you have to stay strong and advertise what you have done. However, it&apos;s too much &lt;em&gt;for me&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I didn&apos;t learn something big and new from the book, but it gave me the words to express what I already knew. There are some books, like Worth Doing Wrong, that you need to read to learn how to express your knowledge and experience.&lt;/p&gt;
&lt;p&gt;One thing that was new for me was thinking about how we define the values of a company. Many companies put their values on their walls, but nobody knows how they became the company values, and there are no stories around them. (Find more information about values under notes.)&lt;/p&gt;
&lt;p&gt;If you are looking for ideas to change your culture or have no idea where to start, this book is worth looking at. I wouldn&apos;t read cover to cover but start with reading the first two chapters as a whole to understand how you can skim through the rest. Also, the book is a short one; the limited hardcover version that I&apos;ve has 113 pages.&lt;/p&gt;
&lt;h2&gt;🙋 Who Should Read It?&lt;/h2&gt;
&lt;p&gt;Leaders who are willing to change their culture at work and who don&apos;t know where to start.&lt;/p&gt;
&lt;p&gt;Leaders who are looking for new ideas to implement while creating a culture in their organizations.&lt;/p&gt;
&lt;h2&gt;☘️ How The Book Changed Me&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;💡&lt;/strong&gt; How my life/behavior/thoughts/ideas have changed as a result of reading the book.&lt;/p&gt;
&lt;p&gt;The book didn&apos;t change me, but it planted a few ideas in my head, which is what I usually expect from any book. I learned a few ways to express my already-in-place thoughts and started thinking about my values.&lt;/p&gt;
&lt;h2&gt;🎩 My Top 3 Quotes&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Sharing is caring.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;To find your core values as a leader, think about them and ask yourself why they are your core values. The stories should pour out one after another, and if so, you found them.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Culture Reflects Leadership.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;📣What is Worth Doing Wrong Book by Arnie Malham About?&lt;/h2&gt;
&lt;p&gt;Arnie Malham is the founder of cj Advertising, which focuses on advertising for Personal Injury Lawyers (such a tiny niche). During the book, Malham acknowledges business is hard many times. While this is true, the challenges that make the business hard is tied to culture. Many companies don&apos;t care about their culture, and in the end, they create an environment where nobody is happy, and the business has multiple problems.&lt;/p&gt;
&lt;p&gt;In the book, Malham talks about what they did specifically to change the culture in cj Advertising. They changed the culture with many small steps, not with one big jump. What we know about small steps is that they usually work. Because when you take the wrong step, it&apos;s easier to take it back. That&apos;s exactly what they did.&lt;/p&gt;
&lt;p&gt;Making it wrong to make it right is the message of the book. Take steps to create a culture. You will make many mistakes but never stop. cj Advertising looks like a great company to work for, and it&apos;s clear from this book that caring about the people and the culture eventually leads to success, even if the company&apos;s target user base is so tiny and addresses only one niche.&lt;/p&gt;
&lt;h2&gt;📝 Summary, Notes, and Personal Thoughts&lt;/h2&gt;
&lt;p&gt;Seven Commandments to Build a Culture to smash business goals:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Respect your employees.&lt;/li&gt;
&lt;li&gt;Invest in your employees.&lt;/li&gt;
&lt;li&gt;Embrace top-down core values.&lt;/li&gt;
&lt;li&gt;Hire for culture.&lt;/li&gt;
&lt;li&gt;Generate unavoidable culture.&lt;/li&gt;
&lt;li&gt;Do it wrong, make it better, and get it right.&lt;/li&gt;
&lt;li&gt;Never give up.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Respect Your Employees&lt;/h3&gt;
&lt;p&gt;Monthly morale surveys with one straightforward question are a good way to understand how everyone is doing. Creating a culture of openness starts with listening to people and addressing their problems.
If you do a morale survey, read every comment and answer all the questions and comments without skipping a thing. While reading answers to the survey, have your leadership team with you; never read alone. You will feel frustration, maybe even anger. People around you will keep you on track.
Keep the survey simple and publish the results, comments, and answers publicly.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sharing is caring.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Respect your employees by giving them what they need; equipment, the best chair, devices, and &lt;strong&gt;information&lt;/strong&gt;. Be transparent and don&apos;t hide information. Otherwise, people will hear things (wrong things) and will impact many decisions and morale without you noticing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Respect + transparency = Trust&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Invest In Your Employees&lt;/h3&gt;
&lt;p&gt;Grow your employees. If they are not growing, your company is not growing as well.
Don&apos;t just send them to conferences, seminars, and webinars. Don&apos;t tell them to read books. If you&apos;re not leading by example, no one will follow.
You need to invest in it. Really put money and give awards to the people who grow.
BetterBookClub.com was born with paying people when they have read a book. It&apos;s very successful and not a lot of money for a small-to-mid-size company.&lt;/p&gt;
&lt;p&gt;Whenever you have an initiative, don&apos;t take everything on your own shoulders. Assign one person to let them own the work and work it through. As a leader, only involve yourself when they need you. Assigning a person to a work/initiative is a great way to grow your employees. They have to manage tasks and people and align different people and work. Empower them to take their jobs to the next level. They should make decisions, not you.&lt;/p&gt;
&lt;h3&gt;Embrace Top-Down Core Values&lt;/h3&gt;
&lt;p&gt;Have your core values applied top-down, not bottom-up. Having core values is not something that changes every year; they are there and will stay there. You can&apos;t change them every five years.
To find your core values as a leader of the company, think about them and ask yourself why they are your core values. The stories should pour out one after another. If so, you found them. Tell your values with these stories. Don&apos;t just put your values on a wall. Explain why they are your values, and tell the stories behind them. In this way, your values will stick.&lt;/p&gt;
&lt;h3&gt;Hire for Culture&lt;/h3&gt;
&lt;p&gt;When hiring new people, first look at the cultural fit, then the competencies. When doing cultural fit interviews, group candidates together with 6-8 people. Put them in a room and ask questions, starting from simple icebreaker questions to more detailed questions related to the role.&lt;/p&gt;
&lt;p&gt;Candost&apos;s Comment: Now, this made me think about why we hire in one-one-one interviews where team communication skills are one of the most significant points for hiring a person or not. In tech, we do all interviews in a one-one-one fashion or 1:many fashion. How about many:many? As people will work in teams, they should be interviewed in teams.&lt;/p&gt;
&lt;h3&gt;Do It Wrong, Make It Better, Get It Right, Never Give Up&lt;/h3&gt;
&lt;p&gt;The idea of learning from mistakes comes from many directions. Making it wrong to make it right is another way of saying the same thing.&lt;/p&gt;
&lt;p&gt;As a leader, you cannot make it without culture. &quot;Culture Reflects Leadership.&quot;&lt;/p&gt;
&lt;p&gt;And as a leader, you&apos;ll make many mistakes. You will rarely get something on the first try. You&apos;ll fail, but it&apos;s essential to fail and take the learning out. Keep going. You cannot take a step and stop.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/worth-doing-wrong-book-summary-review-and-notes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/worth-doing-wrong-book-summary-review-and-notes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #18: What did you learn during the last month?</title><link>https://candost.blog/newsletter/mektup-18/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-18/</guid><pubDate>Tue, 16 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Happy Tuesday!&lt;/p&gt;
&lt;p&gt;I sent the first Mektup on Jan 28, 2021. In ten months, Mektup changed and became what it is today: &lt;em&gt;letters to share my learnings and experiences about software engineering leadership&lt;/em&gt;. When I send a letter, it&apos;s important that I also get a letter back. Therefore, &lt;strong&gt;thanks for all your previous replies&lt;/strong&gt; to my letters and the meaningful conversations we had.&lt;/p&gt;
&lt;p&gt;This week, I want to twist the Mektup and hear more from you. I would like &lt;em&gt;you&lt;/em&gt; to take a maximum of 5 minutes and answer one simple question:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What did you learn during the last month?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Think like you&apos;re writing an informal letter to your friend and send an email to newsletter[at]candostdagdeviren[dot]com&lt;/p&gt;
&lt;p&gt;All emails arrive in my primary inbox, and I return each of them.&lt;/p&gt;
&lt;p&gt;Thank you for your response!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-18/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-18/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Simple Ideas Prevent Complicated Problems</title><link>https://candost.blog/notes/9c/</link><guid isPermaLink="true">https://candost.blog/notes/9c/</guid><pubDate>Tue, 16 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Simple ideas can prevent complicated problems. We often seek complex solutions because we want to stand out from the crowd. Simple ideas are available to everyone. They are often the first thing people learn. When we want to take an extra step, we search for complex answers. Yet, simple ideas not only solve but also prevent these problems from arising in the first place. They eliminate the complications right at the start. That&apos;s why we must seek simple ideas and embrace simplicity.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Related Note(s):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/notes/8/&quot;&gt;8: Growing in the Career&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/2c/&quot;&gt;2c: Write a letter to a friend&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/11/&quot;&gt;11: How to move to the next level&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/39/&quot;&gt;39: Increasing Quality of Systems&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/48/&quot;&gt;48: System Design Index&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/notes/59/&quot;&gt;59: Functional Decomposition in Software Systems&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/notes/9c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/notes/9c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Csikszentmihalyi, Newport, and Pressfield on Creativity, Time and Deep Walks in Remote Work</title><link>https://candost.blog/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/</link><guid isPermaLink="true">https://candost.blog/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/</guid><description>Choose one topic and grab a pen and paper (not a phone), and take a walk, preferably in nature, a park, or a calm area where you won&apos;t have distractions.</description><pubDate>Thu, 11 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When Mihaly Csikszentmihalyi recognized the idea of flow, we finally had a name to define the pleasure we get from what we do. Many of us experience &quot;the flow&quot; each day; we lose all the distractions, dive into something, and do not notice how the time flew by.
Csikszentmihalyi doesn&apos;t mention losing track of time with being busy in multiple things all the time; he means getting involved in only one thing. And whatever that is, it has to be part of, as Cal Newport says, deep work.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Deep work is the ability to focus without distraction on a cognitively demanding task.
— Cal Newport&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Newport&apos;s and Csikszentmihalyi&apos;s ideas are very close to each other; we can&apos;t have the flow without deep work.&lt;/p&gt;
&lt;p&gt;Although both ideas ignite satisfaction, achieving them is difficult, especially in the rise of remote work. Thanks to the Coronavirus pandemic, we have more remote work opportunities, and along with that, more video calls than we had ever before.&lt;/p&gt;
&lt;p&gt;The problem is not the remote work, as it&apos;s been there for years; it is how we miserably fail in our adaption to it.&lt;/p&gt;
&lt;h2&gt;Where are you, my focus time?&lt;/h2&gt;
&lt;p&gt;For many people, the nature of the work translated from &lt;em&gt;some&lt;/em&gt; meetings, working alone, and social connections to video calls for everything: meetings and social relationships. Once everything was converted to video calls, the work became shallow.&lt;/p&gt;
&lt;p&gt;Having back-to-back meetings was always a problem. While working at home, we anticipated having, maybe unconsciously, more focus time because there are no people around us. Instead, what we got is shallow work, which is unsatisfying.&lt;/p&gt;
&lt;p&gt;Without a peaceful and highly focused mental state, a.k.a. flow, we cannot be satisfied with our work. We want to get into deep work, lose track of time, become entirely focused on a subject, and feel quenched.&lt;/p&gt;
&lt;p&gt;What is even worse is that each day without deep work, we lose our focus skills more and more. Not practicing deep work makes our focusing ability suffer, and each day we don&apos;t focus, we build a long-lasting detrimental impact.&lt;/p&gt;
&lt;p&gt;Removing all distractions to give ourselves entirely to the work we do is not easy. If our mind is already in a shallow work mode, it requires deliberate training. It&apos;s tempting to constantly check messages, emails and jump from one task or meeting to another. We can suddenly stop all these activities, but we also have to fight with the Fear of Missing Out (FOMO).&lt;/p&gt;
&lt;p&gt;Once we confront FOMO and train our minds, we start to get more things &lt;em&gt;done&lt;/em&gt;. Both Czsiksenmihaly and Newport are correct with their idea of entirely focusing on a single thing; they both also accept that it&apos;s difficult to achieve if the mind is constantly distracted. They have strategies to improve focus time and get into a deep workflow, but I found them challenging. However, I found one routine remarkable: having deep walks.&lt;/p&gt;
&lt;h2&gt;Let&apos;s Go to Deep Walks&lt;/h2&gt;
&lt;p&gt;The deep walk concept is similar to the deep work. But instead of hands-on working on coding, writing, or anything else, we take a walk and &lt;em&gt;think&lt;/em&gt; about a specific topic.&lt;/p&gt;
&lt;p&gt;The deep walk is different than walking from the bus to home during the commute. An essential condition of a deep walk is that you have no electronics allowed. No phone, no music, no headphones, no smartwatch; just pen and paper (and your keys and ID if you need to). It&apos;s not a workout or commute; it&apos;s a thought exercise.&lt;/p&gt;
&lt;p&gt;During the walk, there should be one problem or topic to think about. The topics can be anything that requires holistic thinking. It might be the feedback for a team member, the project strategy to plan, the roadmap that the team needs, or even an idea we have read in a book or online article. Anything.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Choose one topic and grab a pen and paper (not a phone), and take a walk, preferably in nature, a park, or a calm area where you won&apos;t have distractions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Deep walk empowers you to think deeply about many things and solve your problems. When you think about and focus on one topic, magic doors open, and you see many patterns, hidden issues, and small nuances. The trick is staying in one subject at a time to keep the mind under restriction.&lt;/p&gt;
&lt;p&gt;Thinking is a lonely activity. As much as we can invite others to deep walks, we must accept loneliness while embracing cooperation.&lt;/p&gt;
&lt;h2&gt;Accepting the Loneliness, Embracing Collaboration&lt;/h2&gt;
&lt;p&gt;Creativity comes from merging loneliness and collaboration. Having a balance between working alone and with others is a crucial step toward a satisfying life. Loneliness isn&apos;t enough solely. Humans are social animals and need collaboration.
If you are not a person to go for a walk alone, you can also invite a friend and walk together like Daniel Kahneman and Amos Tversky did. They developed their ideas, challenged each other in their long walks. Kahneman won a Nobel Prize from the results of these walks. Although Nobel Prize makes him an outlier, everything started from their walks, as he wrote in Thinking, Fast and Slow.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We developed a routine in which we spent much of our working days together, often on long walks. For the next fourteen years, our collaboration was the focus of our lives, and the work we did together during those years was the best either of us ever did.
— Daniel Kahneman, on Thinking, Fast and Slow&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On the other hand, boredom and loneliness are unavoidable, and accepting the inevitable enables us to achieve great results. Without having time to ourselves, we can&apos;t unleash creativity.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Only the person who doesn&apos;t constantly need a pleasant environment to enjoy the moment and rarely gets bored passed the test to become creative.
— Mihaly Csikszentmihalyi, on The Flow&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While turning off notifications, phones, and other distracting gadgets is &lt;em&gt;somehow&lt;/em&gt; easy, we forget one of the most significant distractions: our mind.&lt;/p&gt;
&lt;h2&gt;Duel with The Mind&lt;/h2&gt;
&lt;p&gt;Getting into a creative activity demands a constant nudge of the mind. When we get into the creative activity, what we get is resistance. Our minds tell us to do the laundry first, clean the room, tidy up the apartment, plan the week, or procrastinate and play a game while we try to focus on a thing.&lt;/p&gt;
&lt;p&gt;Life&apos;s most crucial duel for creative activity is between focus and resistance. Be it writing, coding, or doing anything, the resistance tries to steal our focus time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Resistance will tell you anything to keep you from doing your work. It will perjure, fabricate, falsify; seduce, bully, cajole. Resistance is protean. It will assume any form, if that&apos;s what it takes to deceive you. It will reason with you like a lawyer or jam a nine-millimeter in your face like a stickup man. Resistance has no conscience. It will pledge anything to get a deal, then double-cross you as soon as your back is turned.
— Steven Pressfield on Resistance in The War of Art&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We can remove all the electronic devices to focus more. However, restraining the mind is not so easy, and it requires awareness and mindfulness.&lt;/p&gt;
&lt;p&gt;Csikszentmihalyi, Newport, Pressfield, Kahneman have done many things in their lives, including becoming the bestselling authors. We all have many things to learn from their lives.&lt;/p&gt;
&lt;p&gt;When you need to think about and work on an issue, either alone or in collaboration, turn off all notifications, step away from all electronics, grab a pen and paper, and go for a deep walk. Invite a friend if you want to but focus on a single topic at once. You will be surprised by the results.&lt;/p&gt;
&lt;p&gt;Complement this with &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;Growth with Systematic Bliss&lt;/a&gt;, &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-book-note-you-are-not-special/&quot;&gt;You are not special&lt;/a&gt; and &lt;a href=&quot;/bias-towards-action/&quot;&gt;Bias for Action&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/csikszentmihalyi-newport-and-pressfield-on-creativity-time-and-deep-walks-in-remote-work/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#25: Live Pair Programming, Open Source, and Building Communities with Nick Taylor</title><link>https://candost.blog/podcast/25-live-pair-programming-open-source/</link><guid isPermaLink="true">https://candost.blog/podcast/25-live-pair-programming-open-source/</guid><pubDate>Tue, 09 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;25: Live Pair Programming, Open Source, and Building Communities with Nick Taylor&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/25-live-pair-programming-open-source&quot;&gt;https://candost.substack.com/p/25-live-pair-programming-open-source&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/25-live-pair-programming-open-source/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/25-live-pair-programming-open-source/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #17: Pair programming is not only for you.</title><link>https://candost.blog/newsletter/mektup-17/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-17/</guid><pubDate>Tue, 02 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;I usually learn from my mistakes, but I additionally want to look at my successful attempts because we can also improve our lives when we repeat things that work. In the past, I made small advancements in the team to help me learn different disciplines and improve my communication. Today, I want to talk about one of them.&lt;/p&gt;
&lt;p&gt;In a leader&apos;s life, you need to constantly look for ways to improve team collaboration, competency, and project workflow while expanding your knowledge to understand different aspects of the job: product management, design, quality assurance, infrastructure, user interface development, and more. The best way to gain &lt;em&gt;enough&lt;/em&gt; knowledge in these topics is by using the advantage of working in a team: collaborating with experts. Although the best way to learn anything well is by doing it by yourself, there are people around you who can give you a hand when you ask.&lt;/p&gt;
&lt;h2&gt;Increasing Collaboration&lt;/h2&gt;
&lt;p&gt;I learned how other disciplines work by asking people a few, sometimes more than a few, questions about their fields. For me, &lt;strong&gt;the main goal was to learn how people in different disciplines approach the problem&lt;/strong&gt;. Eventually, we are solving the same problem in different ways.&lt;/p&gt;
&lt;p&gt;One day with that goal in mind, I approached our designer with a proposal. I struggled with understanding the design of the feature I was developing in an iOS application. How the user interface design was solving the problem wasn&apos;t clear to me. In these cases, I try to question the solution with curiosity. I&apos;m not good at design, but I know how the implementation will be, and I knew many other apps, which solved a similar problem, and approached the solution. After a while, I realized I was missing a perspective. I approached our designer and proposed to pair on designs.&lt;/p&gt;
&lt;p&gt;The designer walked me through the design and explained their approach. I asked many questions, and surprisingly, so did they! &lt;strong&gt;It turned out that two brains together were better than one.&lt;/strong&gt; We both knew mobile apps, but we only knew them from our perspective. In the end, we gained new ways of thinking, improved user experience, and made the implementation simpler. Not only that, we immensely reduced the time we were about to spend on the whole feature. So, win-win-win.&lt;/p&gt;
&lt;p&gt;We liked the pairing approach so much in the team. Later on, we paired on user interface bugs and polished the app together without going back and forth between designer and developer. It was a fantastic experience.&lt;/p&gt;
&lt;h2&gt;Extract what you already have&lt;/h2&gt;
&lt;p&gt;These kinds of pairing sessions are not new to the software engineering world. There are common pair programming formats, such as driver-navigator, ping-pong coding, and more. Extracting these collaboration strategies and applying them to a different context bring immense benefits.&lt;/p&gt;
&lt;p&gt;Additionally, using the tools in your tool belt in different areas has multiple benefits. First, you learn other disciplines, which will help you a lot when you&apos;re a leader; second, the other people learn from you; and last, these techniques increase team collaboration, which will be your job as a leader. &lt;strong&gt;Taking an extra step and initiating new strategies in your team will make you stand out.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here is my practical advice for this week: &lt;strong&gt;Look at your existing operation in your engineering shell and search for the systems or processes that help you do your job better. Next, imagine having a similar approach to other disciplines.&lt;/strong&gt; How would it look? Try to tweak some parts to adapt them to your situation. Offer it to your colleagues and ask for their opinions. If people oppose, take the feedback and improve your plan until you offer an acceptable strategy. Don&apos;t make it perfect; take action and improve your plan on the way.&lt;/p&gt;
&lt;p&gt;These initiatives will help you improve communication with non-technical people, challenge your technical knowledge, and nudge you to research more. &lt;strong&gt;You&apos;re not alone in your career, so ask people around you for help.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;strong&gt;&lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;Sometimes, objections to proposals are not valid.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-17/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-17/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Supplying Books to My Father</title><link>https://candost.blog/supplying-books-to-my-father/</link><guid isPermaLink="true">https://candost.blog/supplying-books-to-my-father/</guid><description>Recently, I became the book supplier for my father. Choosing books for someone else is a powerful position, and I take it seriously and feel responsible.</description><pubDate>Thu, 28 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I became the book supplier for my father. Choosing books for someone else is a powerful position, and I take it seriously and feel responsible.&lt;/p&gt;
&lt;p&gt;Everything all started a couple of years ago. Before my parents got retired, they didn&apos;t have time to read. I remember them coming home, preparing and having dinner, and after a short time of watching the news, my father was going to sleep in front of the TV. Being woken up at 5:30 and working as a mechanic all day, he was, rightfully, getting tired.&lt;/p&gt;
&lt;p&gt;On the other hand, my mother had more energy as she was partially sitting during the day. She was a tailor in the army.&lt;/p&gt;
&lt;p&gt;After many years in the same positions, right before their retirement, they bought a summer house. I feel that moment all made a difference regarding books.&lt;/p&gt;
&lt;p&gt;The house is nothing fancy; it is adjacent to two other houses and has three small bedrooms and one living room combined with a kitchen. When you go out to the verandah, you hear the neighbors&apos; breath, and they also listen to yours. My parents don&apos;t like this, but that&apos;s the house they can afford.&lt;/p&gt;
&lt;p&gt;With the house and retirement, my father started looking for hobbies, most probably for the first time in his life. He had been working since he was eight. Therefore, he didn&apos;t have a chance or time for hobbies.&lt;/p&gt;
&lt;p&gt;He was always a fan of books and education, and he admired people who read. Being a high-school graduate, he always told me the importance of university, higher education, and reading. The last one made him always feel regret. He wanted and even tried to start reading before. Whenever he took a book at hand during the only time he had -after dinner- he fell asleep. Physically working all day, he stayed in shape and young, but his mind was feeling old.&lt;/p&gt;
&lt;p&gt;He still regrets a few things in his dearer mind: not getting higher education, not having a reading habit, and not learning a second language. Possibly with him supporting and nudging me, I got all three checked. I sometimes wonder whether we are living to fulfill our parents&apos; dreams.&lt;/p&gt;
&lt;p&gt;After his retirement, he picked up a book from my bookshelf at home to scratch one regret. I don&apos;t remember how he chose the first book; maybe my mother recommended it. But in two years, he read every novel at home. At that time, I guess we had more than eighty novels. In addition to that, he also borrowed many books from my uncle, the bookworm of the extended family.&lt;/p&gt;
&lt;p&gt;After finishing all the fiction books we had, he asked me to buy Turkish classics such as &lt;a href=&quot;https://en.wikipedia.org/wiki/%C4%B0nce_Memed&quot;&gt;the Ince Memed series&lt;/a&gt;, which has thousands of pages. Once he finished the classics, he asked me again what to read. And my journey to find books for him started.&lt;/p&gt;
&lt;p&gt;Choosing books for him is something I want to do. Books shape people&apos;s minds, and affecting someone&apos;s imagination is a transcendent power that I take it seriously.&lt;/p&gt;
&lt;p&gt;While not a great fiction reader, I struggle to find stories that he&apos;ll like. What imagination can I plant in his head? As he has his own life experience and views, how can I choose the best? Is there a best?&lt;/p&gt;
&lt;p&gt;There are many questions every time I ask myself when I go to the store. I know what kind of books he has liked until now, but that alone isn&apos;t enough.&lt;/p&gt;
&lt;p&gt;Buying books for him is entirely different than buying them for me. When I&apos;m buying for myself, I &lt;em&gt;feel&lt;/em&gt; how I like the book, and I don&apos;t have that sense when I&apos;m looking for books for my father.&lt;/p&gt;
&lt;p&gt;The problem is that I recommend books that I haven&apos;t read, and that&apos;s why it&apos;s like an experiment. Every time he reads the book I bought, I ask him how it was and keep a record in my mind to have a reference for the next one. But still, I haven&apos;t detected the perfect style for him, nor has he.&lt;/p&gt;
&lt;p&gt;We&apos;re still discovering together what he likes and doesn&apos;t, and I like having this routine with him. As we live in different countries, I don&apos;t see him in person a lot, and I feel this is the least I can do for everything he has done for me.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/supplying-books-to-my-father/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/supplying-books-to-my-father/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#24: Understanding Distributed Systems with Roberto Vitillo</title><link>https://candost.blog/podcast/24-understanding-distributed-systems/</link><guid isPermaLink="true">https://candost.blog/podcast/24-understanding-distributed-systems/</guid><pubDate>Tue, 26 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;24: Understanding Distributed Systems with Roberto Vitillo&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/24-understanding-distributed-systems&quot;&gt;https://candost.substack.com/p/24-understanding-distributed-systems&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/24-understanding-distributed-systems/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/24-understanding-distributed-systems/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #16: Why do you hide your goals and ambitions?</title><link>https://candost.blog/newsletter/mektup-16/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-16/</guid><pubDate>Tue, 19 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, friend, Happy Tuesday!&lt;/p&gt;
&lt;p&gt;Today, I&apos;m going to tell a little story about myself and share some learnings.&lt;/p&gt;
&lt;p&gt;After thinking about and receiving a lot of good feedback, I decided to become an Engineering Manager and seek a people leadership position. It was a while ago. After my decision, I did what I had known for my whole life: &lt;a href=&quot;/studying-and-learning-leadership/&quot;&gt;studying&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It took two years for me to become a manager. In the first couple of months, I hid my decision and ambition from everyone else. I thought that if I shared, they would consider me hungry for power. My approach created a few problems for me.&lt;/p&gt;
&lt;p&gt;While studying, I began to take extra responsibilities in the team, such as shadowing manager interviews, leading projects, &lt;a href=&quot;/effective-1-1-meetings-one-on-one-meeting-template/&quot;&gt;doing one-on-ones&lt;/a&gt; with the team, and more. With these responsibilities and my secret ambition, conflicts started to emerge.&lt;/p&gt;
&lt;p&gt;When I joined the hiring process for an Android developer while I was an iOS engineer, people questioned me about being in an interview without any Android knowledge and experience. We had experienced Android engineers to conduct the interview. What was I doing there?&lt;/p&gt;
&lt;p&gt;During my one-on-ones with the people, I never mentioned that I wanted to become an Engineering Manager, not once. Soon enough, I learned that that was a mistake.&lt;/p&gt;
&lt;h2&gt;Compete with Yourself, Not Others&lt;/h2&gt;
&lt;p&gt;When I had extra responsibilities, people questioned why I had these tasks, not them. Because in their eyes, I was an engineer like they were. What was my privilege to have more responsibilities? They were not jealous; they were confused. Although they may have sought the same position, the reason was &lt;em&gt;not&lt;/em&gt; the competition.&lt;/p&gt;
&lt;p&gt;However, I saw that as a competition, and I hid my goals more intensely.&lt;/p&gt;
&lt;p&gt;Then it came to a point where we all criticized each other and took defense in each opinion. Before it became a disaster, we sat down and &lt;a href=&quot;/explicit-disagreement-is-better-than-implicit-misunderstanding/&quot;&gt;talked openly and transparently&lt;/a&gt;, and I explained my desire to become a leader. After that talk, everything significantly changed. &lt;strong&gt;Surprisingly, they started to help me.&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;When you compete against everyone else, no one wants to help you. But when you compete against yourself, everyone wants to help you.&quot; — Start With Why by Simon Sinek&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I was competing against myself the whole time, but &lt;strong&gt;they didn&apos;t know it because I didn&apos;t tell them&lt;/strong&gt;. What the team saw was that I was competing against them. Who can blame? My role and goals were unclear, and I was walking in their territories. They were right.&lt;/p&gt;
&lt;p&gt;Imagine getting a puzzle without a reference picture. When there are a lot of missing pieces, it&apos;s easy to put a piece in the wrong place. Once I explained and brought clarity to the situation, they saw the picture in the puzzle, and &lt;strong&gt;they started to support me&lt;/strong&gt;—such a remarkable shift.&lt;/p&gt;
&lt;h2&gt;Be Transparent&lt;/h2&gt;
&lt;p&gt;Now, I see similar mistakes. Many people compete in the shadows, and no one is transparent about it. You might take extra responsibilities and stretch projects to advance your career. On this journey, if your intention is unclear, you will also face significant resistance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Not only your team needs clarity, but also some others in the company.&lt;/strong&gt; You don&apos;t need to tell and explain it to everyone; no need for broadcasting.&lt;/p&gt;
&lt;p&gt;However, &lt;strong&gt;your promotion discussions happen when you are not in the room.&lt;/strong&gt; If someone in that room is surprised to hear you seek a particular position, your chances of getting the position are low.&lt;/p&gt;
&lt;p&gt;When you clarify your intentions, you also get a side effect. When you&apos;re an engineer, people match you with engineering responsibilities in their minds. Once you communicate your plans and show that you are willing to take extra steps to learn and grow, they begin looking for cues and seeing your progress. It&apos;s a psychological thing, so &lt;strong&gt;you have to change the perception in people&apos;s minds&lt;/strong&gt;. If you don&apos;t, what you&apos;ll have is interpretations and complaints.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;People can&apos;t see your thoughts, feelings, and intentions; they only see your behavior. And they build a story with what they observe and how you impact them.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/perspective-diagram.png&quot; alt=&quot;I took the diagram from Thanks for The Feedback by Douglas Stone &amp;amp; Sheila Heen.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When you openly share what you want to be and clarify your intentions, and your story becomes clear.&lt;/p&gt;
&lt;p&gt;It might look scary at first because openly talking about ambitions and desires might indicate you are seeking status, authority, or more power. Once you phrase your goal correctly, all these misunderstandings disappear.&lt;/p&gt;
&lt;p&gt;For example, I framed my intentions with &quot;learning.&quot; When I told people that I was willing to learn more about leadership because I think I can do a good job, and if not, I can come back to software engineering, they understood that I was not competing with others; my competition is only with myself.&lt;/p&gt;
&lt;p&gt;:::note
Clarity = Transparency = Trust
:::&lt;/p&gt;
&lt;p&gt;I&apos;ve never seen hiding a thing leads to good. &lt;strong&gt;Secrecy leads to office politics, competition, and water cooler gossip; clarity leads to trust and authenticity.&lt;/strong&gt; When what you say matches what you do, people trust you more, and authenticity makes people feel warm and helps them build trust.&lt;/p&gt;
&lt;p&gt;Until we meet again in the next Mektup in two weeks, here is what you can do. &lt;strong&gt;When you take action toward your goal, think about how much clarity you provide, talk to people about your purpose, and explain why you are doing what you are doing.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Until next time, stay transparent! :)&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; If you face any objections to your decision, &lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;you know&lt;/a&gt; how to handle them.​&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-16/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-16/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#23: Accessibility and Inclusive Design with Eric Bailey</title><link>https://candost.blog/podcast/23-accessibility-and-inclusive-design/</link><guid isPermaLink="true">https://candost.blog/podcast/23-accessibility-and-inclusive-design/</guid><pubDate>Tue, 12 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;23: Accessibility and Inclusive Design with Eric Bailey&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/23-accessibility-and-inclusive-design&quot;&gt;https://candost.substack.com/p/23-accessibility-and-inclusive-design&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/23-accessibility-and-inclusive-design/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/23-accessibility-and-inclusive-design/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Subtle Art of Not Giving A Fuck by Mark Manson Book Notes</title><link>https://candost.blog/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/</link><guid isPermaLink="true">https://candost.blog/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/</guid><description>&apos;Our desire is no longer material; it&apos;s existential.&apos; The book is about understanding life a little bit better by accepting the pain and giving up trying.</description><pubDate>Thu, 07 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How Strongly I Recommend It:&lt;/strong&gt; 9/10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How Likely I Will Gift It:&lt;/strong&gt; 7/10&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;📖 The Book in 3 Sentences&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Acknowledge the pain in your life, accept to live with it, choose the right painful experiences, and don&apos;t leave it to chance.&lt;/li&gt;
&lt;li&gt;Understanding your values is difficult and requires a lot of self-awareness, mindfulness, and work.&lt;/li&gt;
&lt;li&gt;After you find your self-values, align your actions to them to live a less painful life.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;☘️ How the Book Changed Me&lt;/h2&gt;
&lt;p&gt;After reading the book, I re-evaluated my values, actions, and what I chose to do. Realizing the pain in life and understanding that there is no escape from it helped me find the pain that I can and would love to tolerate. Now, I&apos;m looking at my values and things I do a bit differently. The book helped me see them more clearly and made me say no to things not aligned with my values.&lt;/p&gt;
&lt;h2&gt;🎩 My Top 3 Quotes&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Our desire is no longer material; it&apos;s existential.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Don&apos;t hope for a life without problems. There is no such thing. Instead, hope for a life full of good problems.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;The mark of an unhealthy relationship is two people who try to solve each other&apos;s problems in order to feel good about themselves. Rather, a healthy relationship is when two people solve their own problems in order to feel good about each other.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;📣What is The Subtle Art Of Not Giving a F*ck Book by Mark Manson About?&lt;/h2&gt;
&lt;p&gt;This New York Times Bestseller book is about understanding life a little bit better. There is a positivist movement that pushes us to have positive experiences all the time. However, the reality is not like that. We&apos;re not exceptional but average. The book explains why this movement is harmful and why it is unreal.&lt;/p&gt;
&lt;p&gt;The book helps the reader to find out the limitation of their lives by showing the shitty things. The first limitation is that we have a limited amount of fucks to give. When we know this limit, we can correctly choose what we should and shouldn&apos;t care about.&lt;/p&gt;
&lt;p&gt;Happiness is a delicate topic, but approaching it from a different perspective is always helpful. The author gives a different perspective than all the media pumps us. In this new perspective, we learn not to even try and even to give up.&lt;/p&gt;
&lt;h2&gt;⭐️ My Review&lt;/h2&gt;
&lt;p&gt;The book&apos;s counterintuitive approach is a slap in the face, and you need to stop reading and think about what you read just a moment ago. I really like these kinds of books that make you think. The book entered as one of my all-time favorites by receiving nine stars out of 10.&lt;/p&gt;
&lt;p&gt;I will recommend and gift this book to people who are having an existential crisis.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why not 10?&lt;/strong&gt; Because I cannot give 10 to any book while knowing there might be books that deserve a better rating than this. So, &lt;em&gt;it&apos;s not 10, but it should be&lt;/em&gt;. The only reason is that I cannot reserve ten stars for the books that I just read. I might come back and change my rate after a couple of years when I see the impact on my life.&lt;/p&gt;
&lt;h2&gt;📝 Summary, Notes, and Personal Thoughts&lt;/h2&gt;
&lt;h3&gt;Happiness Is a Problem&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;There is no happiness without suffering. The whole imagination of happiness that we await in achieving goals is problematic. When we reach a goal, we are satisfied only for a moment; these emotions are always temporary. After getting the moment, feelings are gone, and we&apos;re back to suffering again for the next goal, along with an expectation of happiness. Social media tricks us by displaying everyone&apos;s happy moments and convincing us that the full-happiness is possible. But we never know what did the other person suffer to reach that joy. What pain did they have? We don&apos;t think they had any pain at all, which produces a lot of psychological trouble.&lt;/li&gt;
&lt;li&gt;Suffering and pain are born from a physical need during evolution. Humans seek to suffer all the time. That&apos;s why regardless of richness, poverty, aloneness, being entirely social, hungriness, and fullness, everyone suffers from different things. When humans (or all creatures) suffer, they seek to change because evolution is based on small changes and adaption to the environment. If we don&apos;t suffer and be happy all the time, we wouldn&apos;t be looking for any single change. &quot;Only mildly dissatisfied and painful creatures can put the work to innovate and survive.&quot; If there is no dissatisfaction, we never move a finger to change anything. In the end, our biological needs drive us.&lt;/li&gt;
&lt;li&gt;In our everyday life, social media bombards us with happy moments. We create protection and safe zones to prevent suffering. While avoiding the pain, we&apos;re losing the benefits of learning how to deal with it. Like babies, when they are not exposed to germs early on, their adult lives become less immune. When we avoid pain, we grow to suffer more and more from less important things. Social media, especially Instagram and TikTok, cause delusions of the actual world; however, the reality is full of pain. For us, the important part is learning how to deal with this pain. If we avoid healthy doses of pain early on, we become extremely sensitive to any trivial pain, and our suffering bar lowers every day. We need to benefit from learning and experiencing healthy doses of pain early on to choose what to suffer from later on.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Happiness Comes from Solving Problems&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Happiness without any problems is improbable. Instead of focusing on removing all the issues, we should focus on which problems to tackle. Because if we try to solve every single case, we won&apos;t have any energy left. Also, big goals often have many struggles that lead to them. By only choosing to deal with these struggles, we can have access to our goals.&lt;/li&gt;
&lt;li&gt;Good goals change from person to person. Upon choosing them, we can experience happiness consistently.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;You Are Not Special&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;When we evaluate ourselves, we put some measurements. Depending on the measure, we feel satisfied, happy, and fulfilled. The measurements of self-worth (how much we feel valued by ourselves) usually come from negative experiences. It doesn&apos;t arise from how we feel happy or entitled to be happy, but rather what we hide beneath. How we feel about our negative experiences shows us our true self-worth. People with high self-worth can look at themselves and say; yes, this is where I&apos;m weak or vulnerable.&lt;/li&gt;
&lt;li&gt;The media likes to show extraordinary people who achieved great things because they create attention. Humans are interested in different things, and the press uses the exceptional to keep the interest high. The misperception created by the media causes many mental problems. The extraordinary people we see in the media do unusual things because they usually accept themselves as average or worse at what they do. They live the reality: most things in life are either average or suck. The media blurs this reality. It creates a fake one by saying that everyone can achieve everything. The mental burden of seeing these people and being pumped with &apos;you are special&apos; speeches leads us to think that we must be extraordinary when we are not. Once we accept that we are average, we can leverage the appreciation of the essential things in life. This mindset lets us accomplish what we want to achieve without having self-criticism or judgment. It helps to focus on the moment more instead of blaming our past or creating dreams that will never happen.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The Value of Suffering&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Everyone has values and metrics that define their perspective and perception of life. They also describe the problems they face. In each situation, people interpret the events and either accept them as a problem or not. When people don&apos;t take the &quot;bad&quot; event as a problem, they just don&apos;t give a fuck about it. It&apos;s also possible that they see these things as good things. It&apos;s a half-glass full or half-glass empty situation. Their values and which measures they use to evaluate these values define how they see the glass. Some good metrics yield good results; some bad ones yield poor results. The crucial part is that when they want happiness in life, they need to be cautious about which metrics to use to measure happiness and which values they are looking for. For example, if their value is honesty and they count the number of lies, telling the truth satisfies them. However, if they value success by measuring how they are doing compared to others (mainly extraordinary people), they will always feel unsatisfied and unhappy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;You Are Always Choosing&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Our lives are full of choices. We always have to choose if we will care about something or not. We decide to have a particular perspective on different things. Even when we don&apos;t choose anything, it&apos;s still a choice by its nature. The reality is that the choice is unavoidable, so we should focus on how and what we choose. If the reason we choose something is apparent and aligned with good values, we can grow happier. If we decide on something with our shitty values, then there is a high chance that we won&apos;t feel that much satisfied. That&apos;s why figuring out the values and making mindful decisions is crucial for happiness.&lt;/li&gt;
&lt;li&gt;As we were born, the cards were already dealt with in our life. We may be lucky and get a good hand, or we&apos;re out of luck and have a terrible hand. The reality is that these cards are not our choices. However, having a bad hand doesn&apos;t mean that we will lose the game. Think poker; your strategy is your choice. Ultimately you&apos;re responsible for choosing how you will approach playing with that hand.
The same applies to life as well. If we are not in a good position from the beginning, we will have a good or bad life depending on how we want to live. If we choose shitty values, it&apos;s our responsibility. We can have a better life when we decide to move on after a bad thing that&apos;s not in our control. If we choose to blame ourselves for something that happened, although we didn&apos;t choose it and didn&apos;t impact it, we are responsible for having a miserable life. The choice is ours, and we&apos;re responsible for it. We need to choose good values and measurements over bad ones to stop ourselves from complaining all the time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;You&apos;re Wrong About Everything&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Similar to acquiring knowledge, being certain and pursuing certainty makes you more uncertain. The more you read and learn, the less you know. The more uncertain you are, the more you are open to learning and changing.&lt;/li&gt;
&lt;li&gt;The more you are open to uncertainty, the more you feel comfortable finding something you don&apos;t know.&lt;/li&gt;
&lt;li&gt;When you are certain, you limit yourself and put borders around your thoughts. Certainty is the enemy of open thinking.&lt;/li&gt;
&lt;li&gt;When we put everything in a certain way, there is no joy in it. The pleasure, learning, and growth come from enough uncertainty and being open to new things.&lt;/li&gt;
&lt;li&gt;When we have values that define our personality, we always act accordingly. So, our values are limiting us. For example, if we value friendship, we will never yell at our friends, even if we really want it. If we value kindness, we will never tell a person that we hate them and never want to see them again because these are against our values. Besides the good sides of having values, just having them limits us. Having no value at all is what enables us to be curious and discover new things in life. When we set a new value, we set a new identity that we will try to fit in any chance.&lt;/li&gt;
&lt;li&gt;Having good values is a good direction in life to have a better structure and time. However, knowing the side effects and being aware of the limiting behavior is eye-opening, and it pushes us to be more careful and mindful of personal identity and choices.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Failure is The Way Forward&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Action → Inspiration → Motivation → Action → Inspiration → Motivation → Action ...&lt;/li&gt;
&lt;li&gt;The &quot;Do something principle&quot; and bias for action have different perspectives on motivation and inspiration. If you wait for motivation or inspiration to arrive, you most probably won&apos;t find it. Even when you do, you probably won&apos;t take any action about it. You will procrastinate if you approach it in this way.&lt;/li&gt;
&lt;li&gt;The loop will follow if you take action and do something before waiting for inspiration or motivation. This process is painful, and to proceed further, accept this pain, and do something; it doesn&apos;t matter what. You will see the results. For example, if you want to write, don&apos;t wait for inspiration. Just start putting word after another, and both motivation and inspiration will find you.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The Importance of Saying No&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Only you can be honest with yourself if you are honest with others. That&apos;s what many cultures lack. When people try to be in harmony with the group and avoid conflicts, they think they drive to success. It&apos;s sometimes true, as we also see in Japan. However, understanding ourselves require being honest with ourselves. Being honest with ourselves demands being honest with others, even if we have to confront them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Rejection Makes Your Life Better&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The focus is fundamental for achieving many things, and sticking to the values is one of them. Accepting a value requires saying no to the things that break the value. For example, if fidelity is one of our values, we need to say no to cheating.
Saying yes and sticking to a thing requires saying no to many other things. Society nudges us to say yes to many things by embracing being part of the community. People who say no or don&apos;t accept this culture are considered outlanders. However, the actual value comes from saying no. Accepting and being in sync with everyone is impossible, and even trying it is incredibly tiring.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;How to Build Trust&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Conflicts are healthy parts of relationships. If we always agree with each other, there will always be one side sacrificing something. When we always agree, it feels fake. The relationship doesn&apos;t look and sound natural.&lt;/li&gt;
&lt;li&gt;Each individual is different, but society forces us to be the same. Always confirming each other and avoiding conflict doesn&apos;t help us to find the truth. When there is no truth in the relationship, we cannot be honest and cannot form trust.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Freedom Through Commitment&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Committing to something is perceived as limiting your options, limiting your freedom of choice. But committing brings liberty and freedom from things that don&apos;t matter.&lt;/li&gt;
&lt;li&gt;When there are many options for the same thing, we get stressed and cannot decide. Especially in the digital age, different things bombard us to capture our attention.&lt;/li&gt;
&lt;li&gt;Committing to one thing means freedom from distracting things. It enables us to work on one thing to excel at it, and it keeps our attention on that and discards others.&lt;/li&gt;
&lt;li&gt;Committing is saying no to many other things, and it frees us, reduces our stress, and enables us to get better at the thing we commit.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;...And Then You Die&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Death is an unavoidable yet the most neglected concept in life. We live as if we can escape from it, and we don&apos;t think about it and continue our lives as if it is not there. The immortal feeling gives us entitlement.&lt;/li&gt;
&lt;li&gt;Immortality, actually fake immortality, prevents us from understanding that whatever we do will stay in this world. At the same time, we work toward breaking this understanding. Many people want to leave something behind that will remind them long after they die.&lt;/li&gt;
&lt;li&gt;Once we accept and always remember that we will die, we can choose not to give a fuck about many things. We can get rid of the entitlement and select our values correctly. Death keeps our focus on important and valuable stuff, and it gives us freedom.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #15: You don&apos;t need a title to be a leader!</title><link>https://candost.blog/newsletter/mektup-15/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-15/</guid><pubDate>Tue, 05 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Before I became a team lead, one of my biggest struggles was understanding how to become a leader. I always thought that I needed to have the title to be a leader, and I even didn&apos;t understand how to be one without it. Because I wasn&apos;t in the &quot;important meetings.&quot; I thought if you&apos;re not there, you&apos;re not part of the leadership.&lt;/p&gt;
&lt;p&gt;That feeling of &quot;not being part of the team&quot; blocked my perspective. I confused being a leader with being part of the leadership team.&lt;/p&gt;
&lt;p&gt;Later, I learned that being part o the leadership group doesn&apos;t make you a good leader, but being a good leader makes you a leadership team member. Learning how to be a good leader is complex. Even if you have &quot;natural leadership skills,&quot; you need to repeatedly demonstrate them, sell them, and market your achievements and learnings to join the gang.&lt;/p&gt;
&lt;p&gt;Many experienced software engineers fail to market their achievements. Some of them are simply humble, and some are only shy. It doesn&apos;t matter how you identify yourself; one truth stays: you need to demonstrate your skills and sell yourself.&lt;/p&gt;
&lt;h2&gt;What is the first step into leadership?&lt;/h2&gt;
&lt;p&gt;Being a leader without having the title starts within the projects. &lt;strong&gt;If your focus is on developing features, solving bugs, and going deep into technical topics, you need to get out of this shell and step back to gain a holistic view.&lt;/strong&gt; This perspective change is where many engineers struggle. They think it&apos;s not their job to think about the product&apos;s plans and team structure, and they focus on having the best code and architecture and continue focusing on improving technical skills.&lt;/p&gt;
&lt;p&gt;While it&apos;s true that technical skills are what you&apos;ve been hired for, and they pay the bills, these skills will only get you until some point.&lt;/p&gt;
&lt;p&gt;A holistic view is essential to prioritize and deliver the project. And that part is the first step into leadership, which is also closest to the technical side.&lt;/p&gt;
&lt;p&gt;When you approach holistically, you will have to work with the product and engineering managers closely. They are not experts on the technical side and usually need help.&lt;/p&gt;
&lt;p&gt;Taking the holistic view also includes talking with other engineers and nudging them in a direction when they are out of the course. The holistic view will help you build different relationships, give and receive feedback, mentor others, and learn how to work in a changing environment.&lt;/p&gt;
&lt;h2&gt;Find The Correct Project or Initiative&lt;/h2&gt;
&lt;p&gt;The next step is getting involved in cross-team projects or initiatives. Being involved in a more extensive project where multiple teams work together will allow you to comprehend the necessary skills and how those projects are run.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Please don&apos;t jump into leading the first cross-team project if you have a chance.&lt;/strong&gt; First, be part of one of them and work on it. Without knowing and learning how to navigate multiple teams and manage limitations and dependencies, you cannot lead and hit a wall.&lt;/p&gt;
&lt;p&gt;After you learn, try finding projects that involve multiple teams. If you think you have no project idea, look around, and you will see various pain points in the organization or the product that causes frustration. These difficulties are usually the ones that nobody wants to tackle because of their complexity. If you find one of these, jackpot! (&lt;em&gt;Hint: look for the onboarding or interviewing processes; I&apos;m sure you will find something there.&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ask your manager to find a project where you can stretch your skills.&lt;/strong&gt; Your manager&apos;s responsibility is to make sure you grow in your career.&lt;/p&gt;
&lt;h2&gt;Strengthening Leadership Skills&lt;/h2&gt;
&lt;p&gt;Surround yourself with people who can help you. &lt;strong&gt;Don&apos;t lead the project alone; you&apos;re not an alone wolf.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Find a mentor who can correct the course when you go out of the direction and teach you the craft. Take a look at people who are 1-2 years ahead of you. Their learnings will be fresh, and they can have better empathy towards your position.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When you ask someone to mentor you, it doesn&apos;t mean that you are selfishly asking for their time.&lt;/strong&gt; Those people also need to improve their mentorship and coaching skills to grow themselves.&lt;/p&gt;
&lt;p&gt;While working on stretch projects, focus on improving your human skills, such as effective communication, giving and receiving feedback, facilitation, and mentorship. Once you complete the project, collect feedback from people who worked with you and add all of them to your brag document. &lt;em&gt;If you don&apos;t have a brag document, please start one immediately.&lt;/em&gt; The brag document will be your go-to document in your annual reviews and promotion discussions.&lt;/p&gt;
&lt;p&gt;There are many things on the road that will fail you and help you learn. Continue reading and talking with people in similar situations as you. Having like-minded people around you is one of the most beneficial things to grow. If you have nobody around, send me an email, and I may help find these people. If you are already a leader who can help others, reply to this email, and I will find people you can help.&lt;/p&gt;
&lt;p&gt;Until next time, stay curious.&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-15/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-15/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Studying and Learning Leadership</title><link>https://candost.blog/studying-and-learning-leadership/</link><guid isPermaLink="true">https://candost.blog/studying-and-learning-leadership/</guid><description>Leadership is not something you&apos;re born with it; it is something you learn. When you study leadership, you learn the fundamentals.</description><pubDate>Thu, 30 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As you may know that I&apos;m talking about leadership and management for a while. It is the career path I wanted to pursue, and I&apos;ve been both lucky and unfortunate for studying leadership before becoming a team lead.&lt;/p&gt;
&lt;p&gt;After becoming a team lead, I talked with a couple of managers, and some of them said the same. I&apos;m lucky because I chose the path and studied, wrote about it, &lt;a href=&quot;/podcast/&quot;&gt;talked&lt;/a&gt;, learned it, and am now testing it. My view is shaped, and I learned some of the mistakes before making them. Many managers didn&apos;t have a chance; they were suddenly thrown into the deep ocean of leadership positions.&lt;/p&gt;
&lt;p&gt;Learning is somewhat a complicated business. I learned the mistakes other people experienced. However, &lt;strong&gt;knowing the error is not equal to learning &lt;em&gt;from&lt;/em&gt; it&lt;/strong&gt;. Learning from a mistake means figuring out how to prevent it from happening again.&lt;/p&gt;
&lt;p&gt;While mistakes are some things you can, or at least try to, avoid by knowing it, other people&apos;s experiences will never be the same as your own experience. Similar mistakes are more relevant to different situations, but real learnings are usually unique. For example, when I &lt;a href=&quot;https://candost.substack.com/sw-21-intent-based-leadership-with-david-marquet/&quot;&gt;interviewed&lt;/a&gt; David Marquet about &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn the Ship Around!&lt;/a&gt;, I asked how a person can build an intent-based leadership without being in a giant metal tube under meters of the deep sea. I tried to fit my learning from intent-based leadership into my life, and I failed. As David&apos;s situation was unique to him, my current leadership setup is also unique to mine. I am not a leader in combat and definitely not in a nuclear submarine. While I cannot lead similar to David, I learned a lot of crucial details from him.&lt;/p&gt;
&lt;p&gt;Studying leadership opens your eyes, and you figure out opportunities you can seek before becoming a leader. When you learn leadership, you look for options that are aligned with where you want to go. You start looking at your role from a broader perspective. When you are a software engineer, you only look for a particular part of the system (except for some senior positions), while your job impacts others as a leader. Therefore, you cannot stay in your view.&lt;/p&gt;
&lt;h2&gt;The Accountability&lt;/h2&gt;
&lt;p&gt;Another mindset shift happens on feeling and being accountable. Studying and getting tasks delegated to you enables you to learn what leadership and management are before being accountable for the mistakes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When you&apos;re not accountable, you have a backup person to make difficult decisions when you cannot make them.&lt;/strong&gt; It becomes someone else&apos;s call, not yours. This teeny-tiny bit of responsibility difference turns things around. Many business owners tell a similar story: ownership completely changes their perspective and approach to the job. When you own the work, it means whatever happens at the end of the day, you will face the charges if something goes wrong. Therefore you have to take risks seriously.&lt;/p&gt;
&lt;p&gt;When you&apos;re not accountable, you don&apos;t (or cannot) consider all aspects. You take a shot and follow up on the work. Although you do your best, the work has its dynamics, and some parts will be out of your control. When you are &quot;safe&quot; from mistakes, you are safe. It&apos;s as simple as that. When something goes wrong, or you take a wrong step, it&apos;s someone else&apos;s problem. You know that the accountable person will jump in and help you to solve any struggle. If not, they will deal with the results.&lt;/p&gt;
&lt;h2&gt;The Important Piece: Getting The Title&lt;/h2&gt;
&lt;p&gt;These extra responsibilities increase when you grow to a leadership position. &lt;strong&gt;Getting the title is often the vital piece in the puzzle that reveals the picture you&apos;re building.&lt;/strong&gt; Without it, you cannot understand the puzzle&apos;s picture. But if you solely have that piece, the image won&apos;t mean anything as well.&lt;/p&gt;
&lt;p&gt;Many managers I&apos;ve talked to said that you need to be in the role before getting the title. Giving the title should be natural, and it&apos;s the &quot;reward&quot; that you get after taking these responsibilities. However, it&apos;s also one of the significant struggles of changing roles. Discussions about your work will happen when you&apos;re not in the room until you get the title. For example, if you are a software engineer and leading an initiative, you need to be in the leadership room to convince them for some decisions. As you are not in the room, it will be a challenge to influence them. Therefore, every stretch project you take will demand spending more time talking to many people individually.&lt;/p&gt;
&lt;p&gt;When I think back and consider all my studies, I believe studying leadership and gradually growing into it has more advantages than being thrown into it. If you are already a senior software engineer and want to grow in your career as a manager or an individual contributor, I recommend you start studying as early as possible. In the end, &lt;strong&gt;leadership is not something you&apos;re born with it; it is something you learn&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/studying-and-learning-leadership/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/studying-and-learning-leadership/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#22: Effective 1:1 Meetings for Software Engineers</title><link>https://candost.blog/podcast/22-effective-11-meetings-for-software/</link><guid isPermaLink="true">https://candost.blog/podcast/22-effective-11-meetings-for-software/</guid><pubDate>Tue, 28 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;22: Effective 1:1 Meetings for Software Engineers&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/22-effective-11-meetings-for-software&quot;&gt;https://candost.substack.com/p/22-effective-11-meetings-for-software&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/22-effective-11-meetings-for-software/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/22-effective-11-meetings-for-software/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Don&apos;t Assume Consensus In The Absence of Objection</title><link>https://candost.blog/dont-assume-consensus-in-the-absence-of-objection/</link><guid isPermaLink="true">https://candost.blog/dont-assume-consensus-in-the-absence-of-objection/</guid><description>Consensus decision-making means everyone explicitly agreeing to the proposed idea. The leader needs explicit agreement from everyone and shouldn&apos;t assume consensus in the absence of objection.</description><pubDate>Fri, 24 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We all have been in a meeting with a team discussing a challenge in the project. One of the engineers has strong opinions and loudly shares ideas. Around the end, it looks like people start to accept the engineer&apos;s ideas. To confirm everyone agrees, the leader repeats the suggestion and asks if there are any objections. Silence appears—that awkward silence. The leader waits for five seconds while thinking that there is a consensus. The words fell from the leader&apos;s lips while thinking everyone agreed: &quot;Well, it looks like that&apos;s how we are gonna solve this problem.&quot;&lt;/p&gt;
&lt;p&gt;The leader assumed that everyone was aligned with the decision and reached a consensus, but that was a mistake. Consensus decision-making means everyone explicitly agreeing to the proposed idea. If this is the &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;decision-making style&lt;/a&gt; a leader is looking for, then they need explicit agreement from everyone.&lt;/p&gt;
&lt;p&gt;Whenever I see a leader assuming anything, it often turns out wrong. Guessing is one of the biggest leadership mistakes, and it shows that the leader is not carefully listening. Many leaders fail to read the air and to listen proactively with attention to the details. Effective listening consists of listening, asking clarifying questions, reading between the lines, and understanding facial expressions. The last two, reading between the lines and understanding facial expressions, are very difficult. Many leaders struggle with them and start assuming things.&lt;/p&gt;
&lt;h2&gt;Why do we have these silences?&lt;/h2&gt;
&lt;p&gt;When a leader effectively listens, they discover common patterns that form these silences.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;People avoid confrontation.&lt;/strong&gt; Depending on their cultural background, education, the companies they worked for, and personality, people dodge when there is a possibility of &lt;a href=&quot;/how-to-solve-and-prevent-conflicts/&quot;&gt;conflict&lt;/a&gt;. For example, when working in Turkey, I couldn&apos;t imagine myself confronting my boss in a meeting, and it was customary to &lt;a href=&quot;/explicit-disagreement-is-better-than-implicit-misunderstanding/&quot;&gt;have disagreements&lt;/a&gt; with peers, not the boss. So, while I disagreed with my boss in a meeting, I stayed silent.&lt;/p&gt;
&lt;p&gt;After moving to Germany and &lt;em&gt;assuming&lt;/em&gt; many Germans as more contentious than Turks, I thought I wouldn&apos;t face a similar situation. However, I was wrong, and I learned that it&apos;s all about the environment.&lt;/p&gt;
&lt;p&gt;When the environment is set and created correctly, any person can confront ideas and proposals. When there is a poor environment, nobody will experience safety and be confrontational.&lt;/p&gt;
&lt;p&gt;In a safe culture where everyone feels open and comfortable, people become more friendly and accept criticism and objection in a good manner. However, confronting ideas in public—in front of others—demands good moderation.&lt;/p&gt;
&lt;p&gt;Great moderation also breaks people&apos;s inner critics. &lt;strong&gt;Some people have objections and fresh ideas, but they think everyone will find them stupid if they share.&lt;/strong&gt; When there is a crowded meeting, it becomes more frightening for introverts and these folks to offer a new perspective to change direction from the previous idea. They prefer staying silent. While their inner thoughts build up, they get distracted from the meeting and lose their focus.&lt;/p&gt;
&lt;p&gt;Recently, it has become easier to lose focus. When we think about distractions, especially in virtual meetings, we see that people answer Slack notifications, read other documents, surf on the Internet, and take care of other side tasks. Therefore, they sometimes wait for another person to speak up. &lt;strong&gt;When a loud person dominates the discussions while others are distracted, it becomes easier to mistake that everyone agrees.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sometimes, people don&apos;t give up but wait for an invitation. In some cultures, people won&apos;t speak up unless someone passes them the ball and mentions their names explicitly. When the leader is not aware of this difference, they fall into the assumption trap.&lt;/p&gt;
&lt;h2&gt;No Objection ≠ Agreement&lt;/h2&gt;
&lt;p&gt;Assuming consensus in the absence of objection leaves out the good, bad, and diverse ideas—all of them. &lt;strong&gt;Many companies work hard to create a diverse culture yet fail to take advantage.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Understanding people&apos;s backgrounds, especially underrepresented minority folks&apos;, helps to bring out fresh perspectives. People might have a different history that prevents them from speaking out as loud as possible. &lt;strong&gt;Leaders and moderators have to create an environment that will break historical causes.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Assuming consensus makes people feel frustrated and unheard. It also prevents extracting the best results because high-risk problems and mistakes can stay unnoticed. People might have hidden knowledge that can point out errors. When these people don&apos;t share their objections or ideas, we increase the risk in our decision.&lt;/p&gt;
&lt;p&gt;The awkward silences increased their appearances and became a norm with virtual meetings. These moments create a misconception that everyone agrees with the proposal. Even if consensus is not something the leader is after, it&apos;s worth hearing the objections because, in consent or &lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;&quot;safe to try&quot; decisions&lt;/a&gt;, all objections must surface to reduce the risk.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/dont-assume-consensus-in-the-absence-of-objection/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/dont-assume-consensus-in-the-absence-of-objection/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #14: How often do you go out of your comfort zone?</title><link>https://candost.blog/newsletter/mektup-14/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-14/</guid><pubDate>Tue, 21 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;I hope you are doing great. My last two weeks were hectic in my new role. There are many learnings and new and updated relationships, and I&apos;m creating a different perspective in my life. After a long time, I finally don&apos;t feel tired, although my calendar is full.&lt;/p&gt;
&lt;p&gt;Becoming a team lead was officially a promotion, but I didn&apos;t think that way; I saw it as a career change. Although I&apos;m leading software engineers, it&apos;s a new field with different responsibilities than software engineering and requires another skill set.&lt;/p&gt;
&lt;p&gt;Throughout my career, I changed roles a lot. After graduation, I started as an iOS engineer, although I was studying Android. Later on, I moved to Germany and became a backend engineer. That didn&apos;t work out, and I went back to iOS engineering and changed the company. In my current company, Jimdo, I worked on iOS and then developed a backend application for the team. At the same time, I was contributing to Android in a more high-level way. Then, I took responsibility for leading the mobile engineering for Android and iOS while I moved to another team as a backend engineer. I worked for a year as a backend engineer before I became a team lead.&lt;/p&gt;
&lt;p&gt;As you see, I switched roles back and forth, worked on many different projects, and collaborated with various people. I learned a lot, and I wanted to share some of them with you.&lt;/p&gt;
&lt;p&gt;Being in various roles helped me to wear different lenses. Each position has a different perspective. While a backend engineer cares more about the API design, an iOS application developer cares more about the user interface design. Both are design topics but from very different angles. While a backend engineer usually communicates with other engineers, iOS engineers talk more with designers and (sometimes) app users. While data migration is an essential topic for backend engineers, it rarely forms a discussion in the mobile team.&lt;/p&gt;
&lt;p&gt;Different disciplines&apos; concerns vary from each other. When a person works only in an iOS role, they cannot perceive the sacrifice when a backend engineer changes the API. On the other hand, a backend engineer cannot comprehend how mobile engineers keep the app working without issues in older devices and operating systems.&lt;/p&gt;
&lt;p&gt;Learning these differences and how to talk in each side&apos;s language gave me a lot of strength. Thanks to these different lenses, I better understand various systems and can lead two different teams. But all of this comes with a drawback.&lt;/p&gt;
&lt;p&gt;Changes in roles and projects prevented me from becoming an expert in one discipline. iOS is still my strongest suit, as I worked on it for years, but my skills are already rusty. I haven&apos;t worked hands-on on an iOS project for more than a year, and everything changes so fast (thank you, Apple!). At the same time, I cannot call myself a good backend engineer because I didn&apos;t have the entire experience.&lt;/p&gt;
&lt;p&gt;Although not being an expert in one discipline might not be your choice, it is okay for me. We talked about being a specialist vs. a generalist with Ricardo in one of my live streams. &lt;a href=&quot;https://candost.substack.com/p/12-the-life-of-a-generalist-software-engineer&quot;&gt;You can watch or listen to it if you are curious about my complete perspective&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Many people get afraid when they are out of their comfort zone, which is fair. They either want to stay in their comfort zone or hone their expertise. While the latter is perfectly natural (and required for society), I couldn&apos;t accept the former. Over the years, I always pushed myself from my comfort zone. I switched roles to learn, and I took on stretch projects to enhance my skills.&lt;/p&gt;
&lt;p&gt;It might not be the perfect time for you. However, &lt;strong&gt;even if you are moving towards expertise, I recommend having some experience in another area&lt;/strong&gt;. If you don&apos;t know which field to explore, take a look around you. Who are you working closely with? Is it a backend engineer, an iOS engineer, a designer, or maybe a product manager? Talk with your manager and ask for recommendations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Determine which role has a less steep learning curve&lt;/strong&gt; and &lt;em&gt;has a person who can be and willing to help you&lt;/em&gt;. Invite them for an informal coffee session and discuss your intention: exploring another discipline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plan a pairing session and let them explain the basics and show you how they work every day and where to start.&lt;/strong&gt; Watch them during the day and follow how they work and what they talk about in meetings. You don&apos;t have to become an expert in a new field, but grasping their perspective improves empathy and enables stronger collaborations with better communication.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don&apos;t think that you&apos;re asking for a big favor.&lt;/strong&gt; Your pairing sessions will help the other person too. They need to learn and become better at mentoring to grow in their careers. Also, over the years, I realized that many people love to reveal how they work, and they feel flattered when you approach them with a genuine interest.&lt;/p&gt;
&lt;p&gt;Having different roles helped me grow and become better at my job and prepared me to become a team lead. I hope you will give it a try. If you do, please write me about how your first experience was. I would love to hear it.&lt;/p&gt;
&lt;p&gt;Until next time,&lt;/p&gt;
&lt;p&gt;Have a happy stretch in your role.&lt;/p&gt;
&lt;p&gt;— Candost​&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;You need to get better at prioritization before jumping into another field.&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-14/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-14/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Navigating The Writing Challenge Every Day</title><link>https://candost.blog/navigating-the-writing-challenge-every-day/</link><guid isPermaLink="true">https://candost.blog/navigating-the-writing-challenge-every-day/</guid><description>Every day, I either write one to three pages or rewrite what I wrote the day before. It&apos;s a challenge. I fail sometimes.</description><pubDate>Fri, 17 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every day, I either write one to three pages or rewrite what I wrote the day before. Currently, I am writing the 69. page of my notebook now, and I feel empty. Although I have many topics to write about, my mind is blank in all of them. Whatever subject I picked, no words came out.&lt;/p&gt;
&lt;p&gt;I&apos;m not tired. I woke up around 6.30 a.m., the same as each day; no difference in my 6-7 hours of sleep. I had my cup of coffee just like yesterday. Yet, something is different.&lt;/p&gt;
&lt;p&gt;Today, I don&apos;t see myself entitled to write about anything. I think that if I put word after word, everything will be contrived, not trustworthy. This feeling nudges me to read and research more. Feeling inadequate always &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;pushed me to learn more&lt;/a&gt; about the topic I&apos;m interested in.&lt;/p&gt;
&lt;p&gt;Not being able to write about things that I care about is nothing new, not to me and &lt;a href=&quot;https://www.brainpickings.org/2013/05/03/advice-on-writing/&quot;&gt;not to others&lt;/a&gt;. Many great (and not-so-great) writers face this challenge.&lt;/p&gt;
&lt;p&gt;Many people think of practice as something they do when they feel motivated. The deliberate practice is something you do even though you feel absolutely shit, unmotivated, uninspired, sick, or like me, entirely empty. This situation is not unique to writers.&lt;/p&gt;
&lt;p&gt;It is also visible in basketball players. Every shot a basketball player makes has hundreds, if not thousands, of failed attempts behind, and the precision comes from practice and commitment. That&apos;s why &lt;a href=&quot;https://www.netflix.com/at-en/title/80203144&quot;&gt;Michael Jordan&lt;/a&gt; or &lt;a href=&quot;https://jamesclear.com/deliberate-practice&quot;&gt;Kobe&lt;/a&gt; (R.I.P.) were great players. The dedication led them to wake up at 3 a.m. and go practicing &lt;em&gt;every, single, day&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Extraordinary things don&apos;t require exceptional techniques but doing the same ordinary things over and over and over again until you perfect it. The misperception of &lt;a href=&quot;https://en.wikipedia.org/wiki/Exceptionalism&quot;&gt;exceptionalism&lt;/a&gt; causes a lot of stress, even still on my empty brain. Although I know showing up every single day makes the most significant difference, my brain and soul have an embedded systematic issue that I can&apos;t get rid of.&lt;/p&gt;
&lt;p&gt;My embedded issue is that I want to be great, perfect at many things. I was good at what I did for a long time: software engineering. Of course, I wasn&apos;t &lt;a href=&quot;https://knowyourmeme.com/memes/10x-engineer&quot;&gt;a 10x engineer&lt;/a&gt;; I was barely a 2x engineer. But I felt sufficient enough, adequate, and at the same time, average. I pushed myself to learn to be good at it. Now, that has fallen off.&lt;/p&gt;
&lt;p&gt;I&apos;m still an average software engineer who doesn&apos;t write code anymore but &lt;a href=&quot;https://candost.blog/&quot;&gt;writes about code and software engineering&lt;/a&gt;. The challenge of writing about tech and leadership is that, like everyone else, I feel that I need to be good at them to write about them.&lt;/p&gt;
&lt;p&gt;Let me pause and coach myself: no, you can also write to learn, as Zinsser said in the book &lt;a href=&quot;https://www.worldcat.org/title/on-writing-well-the-classic-guide-to-writing-nonfiction/oclc/62421288&quot;&gt;Writing to Learn&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Yes, yes, I know I can write to learn. But which topic do I want to learn more about than others? The central question of a &lt;a href=&quot;https://www.ted.com/talks/emilie_wapnick_why_some_of_us_don_t_have_one_true_calling?language=en&quot;&gt;multipotentialite&lt;/a&gt;. Welcome to my brain, folks!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Here I stopped writing, and I came back here after a while when I had the same thoughts again. I wrote the following paragraphs at that time to coach myself.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Stop! You&apos;re doing it again. When you start writing about a topic, it doesn&apos;t always come from your brain. You will, of course, research and learn. Then you can write. Now I returned to this page from page 92 in my notebook, so you had 23 more pages to write, and you did it. Again, &lt;strong&gt;the challenge is writing every day, even if you don&apos;t feel like it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;To navigate the routine, you need to create other habits around it. The writing has to be part of other stuff you do. Getting up early, meditating, having a coffee, having a walk, or many other things has to build up the writing part. Whatever you do, stick one habit to another. Then you will be able to write—word by word, or &lt;a href=&quot;https://www.brainpickings.org/2013/11/22/bird-by-bird-anne-lamott/&quot;&gt;as Anne Lamott put it, bird by bird.&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/navigating-the-writing-challenge-every-day/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/navigating-the-writing-challenge-every-day/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Decision-Making Pendulum</title><link>https://candost.blog/the-decision-making-pendulum/</link><guid isPermaLink="true">https://candost.blog/the-decision-making-pendulum/</guid><description>The inflexibility in decision-making is at the root of various problems. Many leaders either use a lot of authority or seek consensus. What they need is a pendulum.</description><pubDate>Thu, 16 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the struggles organizations face is getting lost in the decision-making process. Many leaders either use a lot of authority or seek consensus. More often than not, they stick to one decision-making style for everything. &lt;a href=&quot;/how-to-solve-and-prevent-conflicts/&quot;&gt;Conflicts happen&lt;/a&gt;, hearts get broken, and frustrations come from every direction, resulting in resignations. The inflexibility in decision-making is at the root of various problems.&lt;/p&gt;
&lt;p&gt;When I wrote about &lt;a href=&quot;/bias-towards-action/&quot;&gt;having a bias for action&lt;/a&gt;, I talked about different sizes of decisions. I specifically didn&apos;t say anything about the effective decision-making process. Creating a bias towards action requires having a flexible but solid decision-making process. Especially leader&apos;s pendulum between going with action vs. contemplation demands different decision-making styles.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://candost.substack.com/sw-21-intent-based-leadership-with-david-marquet&quot;&gt;In our conversation with David Marquet&lt;/a&gt;, he mentioned that authority is detrimental to everyone; leader, employees, and the organization. When leaders give commands in every decision, &lt;a href=&quot;https://candost.substack.com/14-protective-leadership-and-leadership-style&quot;&gt;they include themselves everywhere while preventing others from growing&lt;/a&gt;. When they are involved in everything, they become blockers. The amount of authority and hierarchy affect the timeline of the projects. Therefore, it&apos;s not sustainable for anyone.&lt;/p&gt;
&lt;p&gt;On the other hand, there is consensus decision-making: convincing everyone and agreeing together. When leaders use consensus in decisions, the processes take a long time. Getting an &quot;I agree&quot; message from everyone is not easy to do and, again, affects the timeline of the projects.&lt;/p&gt;
&lt;p&gt;Now, you might say, &quot;Well, we are left with just giving advice and consensual decision-making.&quot; Consent decision-making means not having any objections. Instead of getting an &quot;I agree&quot; message from everyone, you propose and &lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;look for qualifying objections&lt;/a&gt;. &quot;&lt;a href=&quot;/explicit-disagreement-is-better-than-implicit-misunderstanding/&quot;&gt;Disagree&lt;/a&gt; and commit&quot; is part of this style. The goal is reaching &quot;good enough&quot; or &quot;safe to try&quot; decisions. This style looks more promising and suitable for many situations. However, the more robust strategy has the flexibility to use all of the above together.&lt;/p&gt;
&lt;h2&gt;The Decision-Making Pendulum&lt;/h2&gt;
&lt;p&gt;There is no one way to make decisions; it&apos;s a pendulum. On one side, we have the authority, and on the other side, we have the consensus. This pendulum requires leaders to go back and forth. Having flexibility in decision-making is crucial and more persuasive than sticking to only one.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/decision-making-pendulum.jpg&quot; alt=&quot;The Decision-Making Pendulum&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Organizations get stuck in convincing everyone or using authority in the wrong place. The problem is trying to use the same decision-making style in all situations. Why people stick to one style depends on the personality and background of the people.&lt;/p&gt;
&lt;p&gt;Each person&apos;s style is different. How they want to approach decisions is impacted by their cultural background and their previous work environments. If they have a consensual history, they want to have more consensus than authority. If they have a top-down background, they want to use the power in many decisions. Multicultural teams need to focus on these fundamental differences.&lt;/p&gt;
&lt;p&gt;When the team uses a decision style that a person is not accustomed to, the individual feels uncomfortable and usually gets annoyed by how the group approaches the work. If we ask why they respond that way, the answer probably will be, &quot;We&apos;re going too fast.&quot; The response might be valid and indicate a correct observation. However, it&apos;s not them who cannot understand the approach. &lt;em&gt;It&apos;s the leader&lt;/em&gt; who makes a mistake. It&apos;s &lt;em&gt;the leader&lt;/em&gt; who fails in communication. It&apos;s &lt;em&gt;the leader&lt;/em&gt; who mixes up speed and correct action.&lt;/p&gt;
&lt;h2&gt;Speed vs. Action&lt;/h2&gt;
&lt;p&gt;Especially after the millennium, the business landscape changes by the day. Many things focus on being first on the market, acting fast, and learning quickly. This race is both practical and detrimental. The leaders usually let themselves get carried away by this flow. And these leaders make a mistake.&lt;/p&gt;
&lt;p&gt;Always &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;focusing on the outcome&lt;/a&gt; and speed might be necessary for the business KPIs; however, the best result comes from balance, clarity, and action.&lt;/p&gt;
&lt;p&gt;The balance comes from choosing the right decision-making style in the correct place. Defaulting to any style creates unhappiness and bad results. Leaders should change their decision-making method from authority to advice, advice to consent, consensus to authority, and consent to consensus, and vice versa in different situations.&lt;/p&gt;
&lt;p&gt;The key is identifying when to use which and communicating upfront. Using authority and giving commands won&apos;t be sustainable when people expect to make a decision together. Using consensus will make everything slower when people want to stop discussing and move to action.&lt;/p&gt;
&lt;p&gt;Choosing the most suitable method comes with &lt;em&gt;experience, empathy, reading the air,&lt;/em&gt; and &lt;em&gt;understanding the circumstances&lt;/em&gt;. Once the leader identifies the style for that situation, the next step is having clarity.&lt;/p&gt;
&lt;h2&gt;The Clarity for The Win&lt;/h2&gt;
&lt;p&gt;When the group gets bigger, everyone needs more clarity in each step. Having transparency and certainty at all stages will ease the frustration and help &lt;a href=&quot;/why-cant-this-be-done-sooner/&quot;&gt;act faster&lt;/a&gt; instead of talking aimlessly. &lt;strong&gt;The leaders should explain which decision-making style the group will use in advance and &lt;a href=&quot;/communicating-decisions-in-the-organizations/&quot;&gt;communicate decisions&lt;/a&gt; afterward.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When the team knows the decision style in advance, they act accordingly. However, &lt;strong&gt;the crucial thing is to explain why a specific decision-making style is preferred&lt;/strong&gt;. Without explaining the reasons, the &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;discussions will never end&lt;/a&gt;. Once everyone understands the reasoning behind it, many of them will onboard.&lt;/p&gt;
&lt;p&gt;Bringing clarity after making the final decision and communicating it is essential. Not all decisions will include everyone who will be affected by it. However, &lt;strong&gt;the communication style has to be separated from the decision style&lt;/strong&gt;. It&apos;s not necessary to announce the decision using authority when you decide with authority. Most often, the communication is not a broadcast but a conversation.&lt;/p&gt;
&lt;p&gt;Of course, there will be objections to the decisions regardless of the style. &lt;strong&gt;&lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;Validating objections and acting on them (or not) is the last step&lt;/a&gt;.&lt;/strong&gt; The leaders need to have a bias toward action while keeping authority at the minimum; instead of always discussing, they have to create an environment that inclines toward action while retaining contemplation, handling objections, and discussions at a healthy level.&lt;/p&gt;
&lt;p&gt;The flexibility in the decision-making style brings success and creates a healthy environment that moves while everyone has a voice that can elevate objections. The leaders have to learn the skills to move in the pendulum from side to side.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/the-decision-making-pendulum/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/the-decision-making-pendulum/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Bias For Action</title><link>https://candost.blog/bias-towards-action/</link><guid isPermaLink="true">https://candost.blog/bias-towards-action/</guid><description>Having a bias to action is more helpful than discussing and researching everything prior. Quantity beats quality in learning. Action beats perfection.</description><pubDate>Wed, 08 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I always thought that we needed to learn all of the fundamentals of a topic before taking any action. It was the approach I took as a software engineer. I spent my whole life going down rabbit holes, researching, learning, and coming up with solutions that substantially solved the problem. I was wrong. All I needed was action.&lt;/p&gt;
&lt;p&gt;Everything started with how the education system shaped my whole life. It is unimaginable. Each day I come across surprises. How the system teaches you to do homework defines your go-to strategy for implementing projects at work. The communication and decision style of the teacher becomes your default style when you collaborate with your colleagues.&lt;/p&gt;
&lt;p&gt;Now, when I think about it, as there are hundreds of different education systems around the world, each one of us has another way of doing things at work.&lt;/p&gt;
&lt;p&gt;One of the fundamental differences in education systems is persuasion: application-first or principles-first reasoning. In the application-first approach, people usually learn things while doing it. They quickly make &lt;em&gt;soft&lt;/em&gt; &lt;em&gt;decisions&lt;/em&gt; about how to do it and start implementing the idea. They learn and iterate on the decision on the way. Action is more important than understanding all principles and fundamentals.&lt;/p&gt;
&lt;p&gt;In the principles-first approach, people first try to learn the fundamentals before taking any action. They look from different perspectives and then usually make a concrete decision that is difficult to change.&lt;/p&gt;
&lt;p&gt;When people need an extensive study to understand more details about the problem, they usually do it to gain certainty. Being aware of possible flaws, errors, and problems gives them the confidence to make better decisions. This risk-averse approach can be either beneficial or detrimental, depending on where it&apos;s used.&lt;/p&gt;
&lt;p&gt;Some software projects need everything to be figured out before taking any action. Military systems, railway signaling, control systems, and nuclear reactor software follow a principles-first approach. Usually, these systems have safety-critical properties, or they are difficult to roll back in failures. Understanding the fundamentals and different perspectives are required attributes for these systems.&lt;/p&gt;
&lt;p&gt;When I was an intern at a military defense corporation, they were in the middle of a project. The project was planned to be released after 5-6 years. It cannot reach the user before it&apos;s correctly and fully working. They had to figure out every detail as the errors could cost human lives.&lt;/p&gt;
&lt;p&gt;Besides these kinds of applications, speed has become more critical in the digital and technology age. For example, when we look at &lt;a href=&quot;https://www.amazon.jobs/en/principles&quot;&gt;Amazon&apos;s Leadership Principles&lt;/a&gt;, under the Bias for Action, it says, &quot;Many decisions and actions are reversible and do not need extensive study.&quot; The nature of being customer-centric and fast brings success to Amazon.&lt;/p&gt;
&lt;p&gt;I tend to think of businesses like Amazon as predators such as tigers or jaguars. When a tiger goes hunting, what we see is all planning—looking for the weakest victim in a herd, sneaking slowly, and waiting for a perfect moment. However, what we see is only the result—the result of all previous learning.&lt;/p&gt;
&lt;p&gt;When we see a grown tiger hunting, it&apos;s only the result of many actions. The tiger learns how to ambush a gazelle by trying countless times in its youth. After trying and taking action and failing and learning, the tiger grows and becomes a great predator. How well a tiger learns decides the success of the tiger. It&apos;s a matter of life and death.&lt;/p&gt;
&lt;p&gt;The speed of learning from actions is driving both the tiger and Amazon. I thought of learning as researching, digging books and blogs, looking up encyclopedias (joking), and research papers. Although that&apos;s one type of learning and an essential one, I needed to take action and learn from the results and users. What pushed Amazon to success should have driven me and should guide you as well.&lt;/p&gt;
&lt;p&gt;If you&apos;re not working with safety-critical systems, you need to learn to switch between principles-first and applications-first (action) approaches but eventually have to bias towards action because there is no faster way than learning from the users and results.&lt;/p&gt;
&lt;h2&gt;Perfection vs. Action&lt;/h2&gt;
&lt;p&gt;Learning something new while doing it is one of the best strategies in modern software development. While coaching software engineers, I&apos;ve seen that everyone agrees to learn coding with practice regardless of the person&apos;s background. People who just read posts and watch videos never learn how to code.&lt;/p&gt;
&lt;p&gt;You can also see this strategy in companies: the best onboarding processes focus on getting a person to deliver the first piece of work. People begin to learn about the project by fixing bugs or adding small features, not purely by reading the code.&lt;/p&gt;
&lt;p&gt;For a while, I was confusing &quot;bias to action&quot; with &quot;think twice, code once&quot; understanding. The confusion was between having the highest quality of architecture and the code and delivering the software. After &lt;a href=&quot;/how-to-approach-software-architecture-design/&quot;&gt;learning&lt;/a&gt; that the &lt;a href=&quot;https://candost.substack.com/p/20-software-architecture-design-systems-903&quot;&gt;perfect architecture&lt;/a&gt; &lt;a href=&quot;https://candost.substack.com/p/19-software-architect-role-and-archicture#details&quot;&gt;cannot be reached&lt;/a&gt;, I started separating these.&lt;/p&gt;
&lt;p&gt;You can think twice and create good architecture and still have a bias towards action. Just change &lt;a href=&quot;/why-cant-this-be-done-sooner/&quot;&gt;how you approach delivering software&lt;/a&gt;. Deliver fast over and over and over again.&lt;/p&gt;
&lt;p&gt;That&apos;s why software engineers have to have both mindsets switching constantly. Use a principles-first approach to think about the architecture and the logic of the code; however, use an applications-first approach while planning the deliveries. Having a bias toward action is a design thinking approach that you can apply &lt;a href=&quot;/how-to-approach-software-architecture-design/&quot;&gt;during the architecture and system design&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Learning new things by taking action and &lt;a href=&quot;/what-hades-the-game-had-taught-me/&quot;&gt;repeatedly iterating on them&lt;/a&gt; helps to understand the flaws instead of guessing them. It&apos;s almost unimaginable to be prepared for every potential failure. However, it&apos;s possible to overcome many of them as faced. And you know what? &lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;Everyone faces many failures&lt;/a&gt;. The earlier you face, the fastest you learn.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://excellentjourney.net/2015/03/04/art-fear-the-ceramics-class-and-quantity-before-quality/&quot;&gt;famous ceramic story&lt;/a&gt; supports quantity over perfection. One professor split the class in half and told half of their students to create as many pots as they could in a term, and the quantity will grade them. The other half of the students would create only one pot but make it perfect. At the end of the term, the students who created many pots had significantly better results. The action supersedes perfection.&lt;/p&gt;
&lt;p&gt;In every pot, they had small failures that brought significant learnings. They were able to keep going because with each pot; they also achieved a thing. Tiny wins bring a sense of achievement. The feeling of winning motivates the person and prepares for the next.&lt;/p&gt;
&lt;h2&gt;How to Bias Toward Action?&lt;/h2&gt;
&lt;p&gt;Many software teams I had talked to, seen, or heard use Kanban, Scrum, or another iterative process. But often, they fail to align their releases with their iterations. Projects take months before the very first release. Big-bang releases are universal when people are afraid or don&apos;t have systems that can quickly roll back in case of failure.&lt;/p&gt;
&lt;p&gt;One of the keys is &lt;strong&gt;&lt;a href=&quot;/why-cant-this-be-done-sooner/&quot;&gt;rethinking the chosen path for software delivery during planning&lt;/a&gt;&lt;/strong&gt;. Is the plan you choose the best and fastest way possible to deliver the smallest piece of software? What can you eliminate? Can you create another plan with a more diminutive scope without losing any value? Can you deliver in each iteration?&lt;/p&gt;
&lt;p&gt;When you keep the iterations and actions smaller, you also make the errors smaller, and smaller iterations make the errors made in previous iterations visible. That&apos;s why the Kanban and Scrum Sprints are focused on delivering the smallest piece and have retrospective meetings. The idea is to celebrate the win and learn from the mistakes. &lt;strong&gt;&lt;a href=&quot;/newsletter/mektup-6/&quot;&gt;Find the quickest way you will learn your mistakes from users&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://candost.substack.com/p/8-cross-cultural-communication&quot;&gt;Create a pendulum between applications-first and principles-first approaches.&lt;/a&gt;&lt;/strong&gt; Go down the rabbit hole when necessary but take a step back and focus on producing a result over perfection. Don&apos;t sacrifice quality for taking action. The balance is the key. If you are designing an architecture, design the architecture to deliver software in multiple iterations, not in a big bang.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Define whose responsibility is what.&lt;/strong&gt; Who is accountable? When there is a sense of ownership, people take everything seriously. But when there is a loosely defined responsibility, it creates confusion and conflicts. Every action should have &lt;a href=&quot;https://about.gitlab.com/handbook/people-group/directly-responsible-individuals/#what-is-a-directly-responsible-individual&quot;&gt;a directly responsible individual&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Take care of people.&lt;/strong&gt; Some people might not be comfortable with the approach you&apos;re taking. Listen to them, hear them, and then talk. Acknowledge their concerns and address them as much as possible. However, don&apos;t let yourself be carried away by solving all of them. Sometimes take no action by accepting the risk. However, be clear about why you are willing to take the calculated risk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bring just enough clarity to the future.&lt;/strong&gt; Don&apos;t plan everything for the next six months—plan the next one to two iterations. Plan the later steps in a high-level overview. Within uncertain situations, people are usually risk-averse and hesitant. Create just enough certainty to lower the stress and keep it at a level where people will be excited to learn and discover together.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Accept, and acknowledge mistakes; own them.&lt;/strong&gt; When you have action bias over inaction and deep research, you will make many mistakes. Acknowledge them. Don&apos;t take a punishing approach. If you are the leader of the team, you&apos;re responsible for errors and success. However, don&apos;t punish yourself as well. Look to the learning opportunities. Learn from mistakes, and &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;form trust&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Lastly, &lt;strong&gt;celebrate.&lt;/strong&gt; Every small or big win deserves celebration. Getting together with the team and having an informal chat is even enough. You don&apos;t always need to plan a big event. But make sure to celebrate success.&lt;/p&gt;
&lt;p&gt;These are the strategies I follow. I&apos;m still learning how to create a balance between action and perfection. Having a pendulum between application-first and principle-first is complex and requires constant effort. However, every action requires a step, and I&apos;m willing to put in the effort.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt; If you are having struggles with creating a bias towards action, your leaders may need to learn different decision-making styles and influence others using &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;the decision-making pendulum.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/bias-towards-action/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/bias-towards-action/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #13: How do you contribute to the problem?</title><link>https://candost.blog/newsletter/mektup-13/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-13/</guid><pubDate>Tue, 07 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;I hope you and everyone you care about are well.&lt;/p&gt;
&lt;p&gt;I was thinking for a while about writing about the time I conflicted with someone in my team, how we solved it, and the lessons I took from it. But I couldn&apos;t find a chance to write it down until now.&lt;/p&gt;
&lt;p&gt;A few years ago, when I wanted to become a leader, I got pushback. I asked how can I improve myself and where do I lack the knowledge and skills. One of the first topics was conflict management because I had conflicts that I needed to solve first.&lt;/p&gt;
&lt;p&gt;I was not seeing why I had a conflict with another person. Although conflicts are natural and happen all the time, comprehending why it happens is complicated. I asked my managers to coach me. That coaching changed my perspective dramatically. Here, I will share what I learned during that time.&lt;/p&gt;
&lt;p&gt;Most often, in conflicts, we focus on the other person. We think that they are the ones who have problems. They can&apos;t understand what we&apos;re trying to achieve. We wish they could have changed their perspective. But you know what, the other person thinks &lt;em&gt;exactly&lt;/em&gt; the same for us.&lt;/p&gt;
&lt;p&gt;Statements starting with the word &quot;you&quot; all the time: &quot;you don&apos;t understand,&quot; &quot;you did this when I told you to do this,&quot; etc. We usually forget that conflicts in relationships require a minimum of two people.&lt;/p&gt;
&lt;p&gt;To change our perspective and &lt;a href=&quot;/newsletter/mektup-9/&quot;&gt;move from &quot;I&quot; to &quot;we,&quot;&lt;/a&gt; we first need to &lt;em&gt;identify and name&lt;/em&gt; the situation. Naming the conflict is the first step toward acceptance.&lt;/p&gt;
&lt;p&gt;When we acknowledge a conflict, we lower our guard and take a step back. Confessing empowers seeing the three entities every relationship has: us, the other person, and our relationship. Naming moves our focus from the person to the relationship. Starting our sentences with &quot;we&quot; broaden our view.&lt;/p&gt;
&lt;p&gt;After saying, &quot;We have a conflict,&quot; out loud, one of my managers asked me a question that shook me. I still remember the feeling. My indirect manager and I were in a small meeting cabin in the office, and we were talking about the conflict; she asked me, &quot;How do you contribute to the problem you have?&quot;&lt;/p&gt;
&lt;p&gt;I couldn&apos;t answer immediately because your contribution to the conflict is unclear until someone points it out. For example, when I asked myself that question again many times, I realized that my role in the team was not clear.&lt;/p&gt;
&lt;p&gt;My direct manager and I were working together to grow me to a team leader position, and I was taking extra responsibilities as a training. But this was not well-communicated to the team. Additionally, we had a project we had to finish, and it was delayed because of a lack of resources. I wanted to have fewer discussions and just work. I was rushing the project while our team members were relatively new and needed conversations for onboarding. So, my contribution to the problem had two aspects. First, not being clear about my growth path, and second, I rushed the project to release.&lt;/p&gt;
&lt;p&gt;Together with my manager, we put everything together and had one big session with the whole team where we discussed the project, the remaining work, and our approach to finishing it. I also explained my intention to become a leader. I realized my contribution to the conflict and changed my perspective by answering that question. I still cannot believe that it only took two hours to solve weeks of battle. Lessons learned.&lt;/p&gt;
&lt;p&gt;So, here is my recommendation to you.&lt;/p&gt;
&lt;p&gt;If you have difficult conversations with a person, &lt;em&gt;&lt;strong&gt;first name the situation&lt;/strong&gt;&lt;/em&gt;. What is that you&apos;re dealing with? It will help you to evaluate the conditions. When you name it, you extract yourself from the problem and observe the whole picture.&lt;/p&gt;
&lt;p&gt;Next, &lt;em&gt;&lt;strong&gt;ask yourself how you contribute to the problem&lt;/strong&gt;&lt;/em&gt;. Remember that any relationship has three attributes (you, another person, and the relationship). Which one are you focusing on? Move your focus to the relationship and analyze how you contribute to it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Making relationships great demands two people, and making them dreadful and desperate needs only one person.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you explicitly realize your contribution, you tend to change your approach and be more forgiving.&lt;/p&gt;
&lt;p&gt;What do you think? Have you been conflicted before that you even didn&apos;t realize that you were conflicted? How do you think this applies to you?&lt;/p&gt;
&lt;p&gt;I am looking forward to seeing your response! Hit reply to the mail; all messages arrive in my primary inbox.&lt;/p&gt;
&lt;p&gt;Until next time, take care.&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-13/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-13/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#21: Intent-Based Leadership with L. David Marquet</title><link>https://candost.blog/podcast/21-intent-based-leadership-with-david-marquet/</link><guid isPermaLink="true">https://candost.blog/podcast/21-intent-based-leadership-with-david-marquet/</guid><pubDate>Tue, 31 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;21: Intent-Based Leadership with L. David Marquet&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/sw-21-intent-based-leadership-with-david-marquet&quot;&gt;https://candost.substack.com/p/sw-21-intent-based-leadership-with-david-marquet&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/21-intent-based-leadership-with-david-marquet/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/21-intent-based-leadership-with-david-marquet/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #12: Stairway to the Promotion</title><link>https://candost.blog/newsletter/mektup-12/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-12/</guid><pubDate>Tue, 24 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Every second week, I write Mektup to share what I learned from reading many articles and books about &lt;em&gt;software engineering leadership&lt;/em&gt;. Mektup is ideal for busy people such as engineering managers, team leads, and senior &amp;amp; staff software engineers.&lt;/p&gt;
&lt;p&gt;Now, on to this week&apos;s Mektup.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I talked about career frameworks, uncertainty, and ego in the previous Mektups. When all these come together, it would be awkward if we didn&apos;t mention promotions.&lt;/p&gt;
&lt;p&gt;In its heart, promotions require hard work, pride, humility, correct timing, and the right opportunity.&lt;/p&gt;
&lt;p&gt;I&apos;m sure you are hardworking and putting a lot of energy into solving problems while growing yourself and others around you. These are the first steps to promotion. Without these, the other efforts have no validity. But the next step is asking for a promotion.&lt;/p&gt;
&lt;h2&gt;Have you ever asked for it?&lt;/h2&gt;
&lt;p&gt;I come across many people who are afraid to ask for it, especially people from under-represented groups. I once had a discussion with a friend, and she said that she never asked for a raise or promotion and never negotiated what was offered to her. It still blows my mind!&lt;/p&gt;
&lt;p&gt;It&apos;s good to be humble, but there is no need to be a pushover. Learning to take pride and humbly saying, &quot;I did this, that, and I want this promotion.&quot; when necessary, is one of the must-have skills for promotion.&lt;/p&gt;
&lt;p&gt;When pride is used correctly, it helps tremendously. If used wrongly, it becomes detrimental. There are helpful tools that can be used to keep pride in balance. &lt;a href=&quot;https://jvns.ca/blog/brag-documents/&quot;&gt;The brag document&lt;/a&gt; is my go-to tool to pour out my holier-than-thou pride. I constantly write to it and use it in performance reviews. In the end, it gives a voice.&lt;/p&gt;
&lt;p&gt;As loud as you say, &quot;here are the things I&apos;ve done; I deserve this promotion,&quot; the correct timing is &lt;em&gt;the&lt;/em&gt; decisive factor. There might not be an available position, or internal promotions can be put on pause. If you ask for a promotion, you might get a &quot;No,&quot; simply because there is no available seat. Talk with your manager and other people at upper levels to understand the environment.&lt;/p&gt;
&lt;p&gt;Sometimes you get a &quot;No&quot; when there are positions available, and you think you are ready for the next step in your career. But many people are usually blind to the next level&apos;s requirements. Without fulfilling the requirements, it&apos;s probable to get rejected, especially if you ask for the first time. You need to build yourself and everyone around you.&lt;/p&gt;
&lt;p&gt;When you are offered a role, you need to think and decide if it&apos;s for you or not. When all your friends, family, and parts of your inner self say take the offer, you need to stop and say no, if your heart is not aligned. Many people are in the wrong positions because they don&apos;t want to pass a chance and think they wouldn&apos;t get another shot. However, there is an ocean of opportunities. Catching a fish in the sea doesn&apos;t guarantee that eating that fish will benefit your health. Be careful not to take a bite from a poisonous one.&lt;/p&gt;
&lt;h2&gt;You asked for it but didn&apos;t get anything. What now?&lt;/h2&gt;
&lt;p&gt;When you don&apos;t get a promotion because people think that you are not ready yet, &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-book-note-you-are-not-special/&quot;&gt;be humble&lt;/a&gt;. Promotions are rarely given to the people who only want to go to the next level; they are usually given to those already operating there. Look for opportunities to learn and gain experience first. Find opportunities that you can learn from and ask your manager to help you get a chance.&lt;/p&gt;
&lt;p&gt;Meanwhile, of course, you will have competitors. When someone else gets the promotion instead of you, you&apos;ll be angry and frustrated. However, there has to be a reason why the other person is promoted, not you. Businesses don&apos;t give promotions as a favor; look for what you lack. Don&apos;t compare yourself with the other person; compare yourself with yourself.&lt;/p&gt;
&lt;p&gt;As Simon Sinek &lt;a href=&quot;https://simonsinek.com/product/start-with-why/&quot;&gt;says&lt;/a&gt;,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“When you compete against everyone else, no one wants to help you. But when you compete against yourself, everyone wants to help you.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Compete with yourself.&lt;/p&gt;
&lt;p&gt;There are situations where everyone thinks you&apos;re ready, you show what you have done, and they promise a promotion, but nothing happens. If no one keeps promises, and they hold you in wait, put a timeframe and tell this your boss. Be explicit. Create pressure. Sometimes this confrontation and transparency are necessary.&lt;/p&gt;
&lt;p&gt;Although many people say getting a promotion via changing jobs is difficult, various companies are ready to onboard you. Though getting a title via internal promotion will be easier, it&apos;s still possible if you already have experience from the next level.&lt;/p&gt;
&lt;p&gt;Promotions are tricky, sensitive, and complicated situations. If you are looking to get one, you now know a few elements involved. These should give an idea about what you can focus on while navigating this complex situation.&lt;/p&gt;
&lt;p&gt;Social dynamics are the bones of every promotion—the people who will give you the promotion need to trust you. The absence of trust beats all of the above. Create trust to be able to look for a promotion. I hope you&apos;ll get what you want in the end.&lt;/p&gt;
&lt;p&gt;Until next time, take care.&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-12/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-12/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Approach Software Architecture Design</title><link>https://candost.blog/how-to-approach-software-architecture-design/</link><guid isPermaLink="true">https://candost.blog/how-to-approach-software-architecture-design/</guid><description>How an architect thinks and approaches designing and architecting software systems? The architect&apos;s job is eventually a combination of tech lead, software engineer, R&amp;D engineer, and strategist. But how do these responsibilities come together?</description><pubDate>Tue, 17 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://candost.substack.com/p/20-software-architecture-design-systems-903&quot;&gt;If you prefer listening, I have a podcast episode where I talk all about this article.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I &lt;a href=&quot;https://candost.substack.com/p/19-software-architect-role-and-archicture&quot;&gt;talked and wrote&lt;/a&gt; about the software architect role before. The architect&apos;s job is eventually a combination of tech lead, software engineer, R&amp;amp;D engineer, and strategist. But how do these responsibilities come together? Working on architecture is a combination of a comprehensive set of skills. This article will discuss what an architect thinks and how an architect approaches the problem before starting with the design.&lt;/p&gt;
&lt;p&gt;We need to understand what type of architecture we are talking about before we dive.&lt;/p&gt;
&lt;h2&gt;Architecture Types (Size)&lt;/h2&gt;
&lt;p&gt;There are (roughly) two types of systems we can come across while talking about software architecture: application and enterprise.&lt;/p&gt;
&lt;p&gt;Application architecture focuses on the modularization of an application: grouping related code together into modules. Wait. What is an application in this context? Martin Fowler &lt;a href=&quot;https://martinfowler.com/bliki/ApplicationBoundary.html&quot;&gt;defines&lt;/a&gt; it as social construction:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;A single unit that&apos;s been seen as a single unit from developer&apos;s, customer&apos;s and manager&apos;s perspective.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;All of these are social elements of the software, thus a social construction.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://martinfowler.com/bliki/EnterpriseArchitecture.html&quot;&gt;enterprise architecture&lt;/a&gt; focuses on finding an architecture that many applications will fit. I won&apos;t go into details of enterprise architecture. But I can&apos;t leave without saying that it involves a lot of politics because those many applications teams won&apos;t want to fit in that specific architecture. So, a wise thing for an enterprise architect is to design the system with a minimum impact on application teams. If an architect comes up with a generic approach that requires a drastic change in the application architecture, the team, of course, will be hesitant to change.&lt;/p&gt;
&lt;p&gt;In this article, when I say architecture, I mean application architecture.&lt;/p&gt;
&lt;h2&gt;Architecture Characteristics (System Quality Attributes)&lt;/h2&gt;
&lt;p&gt;Another type of political discussion happens inside an architect&apos;s brain: defining the most important characteristics of the system.&lt;/p&gt;
&lt;p&gt;It is one of the most challenging parts of designing the system. Having &lt;a href=&quot;https://www.wikiwand.com/en/List_of_system_quality_attributes&quot;&gt;84 characteristics&lt;/a&gt; doesn&apos;t make it easier as well. If we name a couple of them, these characteristics include, but are not limited to, reliability, availability, scalability, testability, and recoverability—in short, &apos;-ilities&apos;’&lt;/p&gt;
&lt;p&gt;Deciding on the essential characteristics involves understanding business requirements, company strategy, and team structure (wink wink, Conway&apos;s Law). Even more difficult is some of these -ilities come as a group. For example, when an architect chooses agility as the most crucial characteristic, the decision is seven: debuggability, extensibility, portability, scalability, securability, testability, and understandability.&lt;/p&gt;
&lt;p&gt;There are also subsets of characteristics that are important for different parts of the systems. For example, reliability, availability, scalability, and recoverability (RASR) are essential for databases, while reliability, availability, maintainability, and safety (RAMS) are crucial for safety-critical systems.&lt;/p&gt;
&lt;p&gt;I hear some of you saying, &quot;Why don&apos;t we support all of these characteristics? Why do we have to fight over them?&quot;. Well, just designing to support one extra characteristic adds a lot of complexity to the design. Furthermore, choosing one attribute usually requires a sacrifice from a couple of other attributes--the game of trade-offs.&lt;/p&gt;
&lt;p&gt;If performance is the most critical thing for you, and when you add safety as an extra characteristic, you will hit some problems with performance, as the safety will require you to take additional controls in every step. So increasing safety does not only mean a sacrifice from performance but also means more complicated architecture.&lt;/p&gt;
&lt;p&gt;There is one thing that Agile methodology pushes for and also makes sense for software architecture design: iteration. Strive to design architecture as iterative and changeable as possible. You can&apos;t create the best architecture (well, trade-offs 🤷), and you definitely won&apos;t be able to prepare for every potential problem.&lt;/p&gt;
&lt;p&gt;Additionally, business requirements constantly change. Because of this, if you can change your architecture without significant issues, you will be able to fix those issues when you face them.&lt;/p&gt;
&lt;p&gt;Designing the best architecture is impossible since we make mistakes, and everything is apt to change at any time. That&apos;s why&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Never shoot for the best architecture, but rather the least worst architecture.&quot; - &lt;a href=&quot;https://www.oreilly.com/library/view/fundamentals-of-software/9781492043447/&quot;&gt;Richards &amp;amp; Ford&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Okay, but how do you come up with the least bad architecture?&lt;/p&gt;
&lt;h2&gt;Design Thinking&lt;/h2&gt;
&lt;p&gt;When &lt;a href=&quot;https://www.fastcompany.com/1139331/ideos-david-kelley-design-thinking&quot;&gt;David Kelley changed the perspective of design thinking&lt;/a&gt; in products, the design became &lt;a href=&quot;https://www.slideshare.net/Extentia_IT/software-architecture-and-design-thinking&quot;&gt;a complete process&lt;/a&gt;. Before, the design was separated into multiple steps, and various people worked in different stages. Kelley popularized the phrase &quot;design thinking&quot; and defined it as an iterative process and human-centric activity. Kelley put the human in the center of the design and process and became &quot;designing behaviors and personalities in the product.&quot;&lt;/p&gt;
&lt;p&gt;&quot;How does it relate to software architecture?&quot; you may ask right now.&lt;/p&gt;
&lt;p&gt;Although Kelley was not directly talking about software architecture, Kelley&apos;s contribution is incredible when we approach the design as a process with the same principles.&lt;/p&gt;
&lt;p&gt;In Kelley&apos;s process, there are five steps: empathize (understand), define (observation), ideate (brainstorming), prototype, and test.&lt;/p&gt;
&lt;p&gt;A software architect starts with empathizing: understanding the full context. It&apos;s time to gather all stakeholders and requirements together to ponder and comprehend the problem that&apos;s on focus. Starting the designing phase with empathy through the problem and not the solution keeps the thinking open.&lt;/p&gt;
&lt;p&gt;After understanding the requirements and the need, the next step, which many people skip, is defining the exact problem. Not specifying the problem statement paves the way for issues, rework, and failure. Additionally, the stakeholders often don&apos;t know what problem they are facing. Therefore, this step usually brings clarity to the whole design.&lt;/p&gt;
&lt;p&gt;At first look, brainstorming may make more sense when generating new ideas; however, it&apos;s also an excellent strategy for software architecture. Having all requirements and a prescribed problem enables exceptional brainstorming. Getting together with the right people allows the architect to find a conclusion to the problem. Ideating the possible solutions (yes, more than one) empowers the following steps; prototyping and testing.&lt;/p&gt;
&lt;p&gt;Creating prototypes and forming an iterative process to test them is crucial for success. Again, the key is iteration. Having the prototypes is only a starting point for an architect. The iteration and testing will improve everything, and the architecture will become more ready to use in the project.&lt;/p&gt;
&lt;p&gt;Although design thinking is a creative process and usually aims to find the best solution, the reality for software architecture is still finding the least worst one. It&apos;s also why during these five stages, keep in mind &lt;a href=&quot;https://www.slideshare.net/Extentia_IT/software-architecture-and-design-thinking&quot;&gt;two principles&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Feasibility and Viability in Software Architecture&lt;/h2&gt;
&lt;p&gt;The first principle is feasibility: is the solution practical? The ideas and prototypes have to be feasible. The software architect helps the software engineering teams to fail fast with ideas and solutions. If the teams cannot implement the ideas or prototypes with software systems, it&apos;s better not to spend time on them.&lt;/p&gt;
&lt;p&gt;The practicality also requires assessing the testability of generated concepts. If an idea is not easily testable, the result will be unattainable and, therefore, unpractical.&lt;/p&gt;
&lt;p&gt;The other principle is the viability of the solution. If an idea or prototype cannot become a part of a sustainable business model, there is no point in pursuing it. A good software architect knows and understands the company&apos;s strategy, goals, teams, and technical limitations. This knowledge will help to test the viability of solutions.&lt;/p&gt;
&lt;p&gt;These two principles have to be at the back of an architect during the system design phase.&lt;/p&gt;
&lt;p&gt;Now, we know design thinking and how to approach problems. Thus, it&apos;s time to talk about system design.&lt;/p&gt;
&lt;h2&gt;System Design&lt;/h2&gt;
&lt;p&gt;I won&apos;t get into the technical details of system design because the design varies depending on the system you are working on. However, some elements are part of every system design process.&lt;/p&gt;
&lt;p&gt;The first one is holistic thinking. An architect uses holistic thinking to understand the problem and the context. Holistic thinking requires looking for the connections between different parts of the problem. While looking at the whole picture, the architect tries to modularize the system in different ways. Holistic thinking is the must-have strategy, especially in the first stage of design thinking, empathize. Holistic thinking enables an architect to modularize the system efficiently.&lt;/p&gt;
&lt;p&gt;Modularity (grouping related code or pieces into modules) is another critical element in architectural design. The architect modularizes the system to solve smaller pieces first and then moves to the bigger parts (inductive approach). In this move, the architect looks for parts that need to connect.&lt;/p&gt;
&lt;p&gt;Understanding the problem requires holistic thinking, and coming up with a solution requires an inductive approach.&lt;/p&gt;
&lt;p&gt;The last important element is Conceptual Integrity: using one design style in the whole architecture instead of using different ones in different system sections. In the famous book The Mythical Man-Month, Frederick Brooks Jr. says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;I will contend that Conceptual Integrity is the most important consideration in system design. It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas.&quot; - Brooks Jr., Frederick P.. &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Mythical_Man-Month&quot;&gt;Mythical Man-Month&lt;/a&gt;, Anniversary Edition, The (p. 56). Pearson Education. Kindle Edition.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Brooks takes one more step and claims that the system design must be created by a single mind or a tiny group. Because Conceptual Integrity cannot be achieved in a big group in which people have group dynamics. Conway&apos;s Law supports this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization&apos;s communication structure.&quot; — &lt;a href=&quot;https://en.wikipedia.org/wiki/Conway%27s_law&quot;&gt;Melvin E. Conway&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If the architect group is big, the design they produce will also include their communication structure. Achieving Conceptual Integrity between modules formed by holistic thinking and an inductive approach requires either a single mind or a tiny group.&lt;/p&gt;
&lt;h2&gt;Last Words&lt;/h2&gt;
&lt;p&gt;Choosing the most suitable architectural characteristics in the application architecture is one of the architects&apos; most difficult decisions. Architects shouldn&apos;t aim to create the best architecture; instead, they should aim to have the least bad and most changeable architecture. The design thinking process is the life source for architects to achieve Conceptual Integrity. Using holistic thinking and an inductive approach in various stages of design thinking will also enable architects to &lt;a href=&quot;/bias-towards-action/&quot;&gt;quickly test their ideas&lt;/a&gt; and filter solutions that are not feasible or viable.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-to-approach-software-architecture-design/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-to-approach-software-architecture-design/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#20: Software Architecture Design | Systems and Architectural Thinking Part 2</title><link>https://candost.blog/podcast/20-software-architecture-design-systems/</link><guid isPermaLink="true">https://candost.blog/podcast/20-software-architecture-design-systems/</guid><pubDate>Tue, 17 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;20: Software Architecture Design | Systems and Architectural Thinking Part 2&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/20-software-architecture-design-systems-903&quot;&gt;https://candost.substack.com/p/20-software-architecture-design-systems-903&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/20-software-architecture-design-systems/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/20-software-architecture-design-systems/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Turn The Ship Around Book Review, Summary and Notes</title><link>https://candost.blog/books/turn-the-ship-around-summary-book-chapter-notes/</link><guid isPermaLink="true">https://candost.blog/books/turn-the-ship-around-summary-book-chapter-notes/</guid><description>A business novel from Navy Captain David Marquet explains intent-based leadership and identifies how the leader-follower approach is ineffective.</description><pubDate>Mon, 16 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;I also interviewed L. David Marquet, the author of the book; you can &lt;a href=&quot;https://candost.substack.com/p/sw-21-intent-based-leadership-with-david-marquet&quot;&gt;listen to the interview here.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How Strongly I Recommend It:&lt;/strong&gt; 8/10.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How Likely I Will Gift It:&lt;/strong&gt; 5/10.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;📖 The Book in Three Sentences&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Leadership-leadership structures are more effective and humanitarian than leader-follower structures.&lt;/li&gt;
&lt;li&gt;Working with intent-based leadership requires a lot of mindfulness and effort.&lt;/li&gt;
&lt;li&gt;When people are empowered (emancipated) with clarity, competence, and necessary mechanisms, they can do their job better and even improve it further.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;🙋Who Should Read It?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;People who are in a leading position: leaders, managers.&lt;/li&gt;
&lt;li&gt;People would like to become a leader.&lt;/li&gt;
&lt;li&gt;Traditional leaders who are struggling with poor performance in a stressful environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🍀 How the Book Changed Me&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;💡How my life/behavior/thoughts/ideas have changed as a result of reading the book?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;I&apos;m looking in a little bit different way at work now. I can understand some intents behind some actions and clearly see some mistakes related to the leader-follower structure.&lt;/li&gt;
&lt;li&gt;My view on competency is strengthened. Competency is required to make the leader-leader system work, and it&apos;s easier to ensure competency and enhance intellectual capacity through ambitious learning and certification mechanisms.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🎩 My Top 3 Turn The Ship Around Quotes&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;How has failure shaped you?&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Don&apos;t move information to authority; move authority to the information.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Begin with the end in mind.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;📣 What is Turn The Ship Around About?&lt;/h2&gt;
&lt;p&gt;David Marquet, former navy captain of the nuclear-powered submarine USS Santa Fe, explains his success in one of the most top-down structures in the world, the navy. The results from the leader-leader structure are impressive during crucial combat decisions. Emancipating competent people with clear goals is powerful. Once people take ownership of what they do, they do it better. They not only stop the lousy competition between themselves but also focus on improving the existing mechanisms set in stone beforehand.&lt;/p&gt;
&lt;p&gt;A leader-follower structure is a passive structure. Since everything is on the leader&apos;s side, followers start making many mistakes when waiting for an order. Turning everyone into a leader (having a leader-leader approach) prevents many errors.&lt;/p&gt;
&lt;p&gt;The success of Navy Captain David Marquet is one lesson for all leaders. However, I can&apos;t stop asking myself, &quot;How can someone help to set up elements of the leader-leader structure in an organization when they are not a leader?&quot;&lt;/p&gt;
&lt;h2&gt;⭐️ My Review&lt;/h2&gt;
&lt;p&gt;The story is excellent, and I was hooked right at the beginning.&lt;/p&gt;
&lt;p&gt;Additionally, there are many questions at the end of each section that we can ask ourselves all the time. However, there are 100+ questions overall in the book. I felt overwhelmed. Although I loved the questions and would love to answer them, there are many. Once you have that many questions, I don&apos;t think people (including me) will take the time to answer them.&lt;/p&gt;
&lt;p&gt;There are significant practical and applicable suggestions and recommendations throughout the whole book.&lt;/p&gt;
&lt;h2&gt;📝 Turn The Ship Around Summary and Chapter Notes&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;How has failure shaped you?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This a great question that everyone needs to think about before saying a word.&lt;/p&gt;
&lt;p&gt;Reflection on oneself is a great deal. Learning what kind of &lt;a href=&quot;/newsletter/mektup-29/&quot;&gt;leadership relationship&lt;/a&gt; you would like to create is a process. It takes time and experience. Once you see an excellent leader-leader structure, you cannot stop thinking about how much it empowers.&lt;/p&gt;
&lt;p&gt;On the other side, the leader-follower approach is in the bones of the army. Also, a lot of leaders are using the same strategy in their current businesses.&lt;/p&gt;
&lt;p&gt;The leader-follower structure is problematic because every responsibility lies in the leaders. Followers-only &quot;follow orders&quot; that leadership gives with no feeling of empowerment. After being in the system for a while, they stop thinking. They do what they have been told. In a leader-leader structure, everyone takes responsibility.&lt;/p&gt;
&lt;p&gt;Correctness and punctuality are highly important in the army. Their lives depend on these two terms. The leader-follower structure creates bottlenecks and blockers. People wait for orders instead of acting by themselves. &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;When the leaders make every decision, they block things that are trivial for the business.&lt;/a&gt; These trivial tasks might be important for followers. Since the leader doesn&apos;t mind them, the followers lose motivation because of the unheard feeling.&lt;/p&gt;
&lt;p&gt;When a mid-level leader wants to implement a leader-leader structure in the leader-follower organization, it ends with a disaster. Immature changes are problematic and end up with worse scenarios than before. While people still feel like followers, they cannot act like leaders, and mistakes happen.&lt;/p&gt;
&lt;h3&gt;What Should Leaders Do?&lt;/h3&gt;
&lt;h4&gt;Ask with Curiosity&lt;/h4&gt;
&lt;p&gt;Asking questions has two sides: questioning and curiosity. Which one are you doing? When you ask questions to people, you either question them or ask them to learn. Once you go with curiosity, the truth rises in answers. People don&apos;t think you are judgmental and give the best answer they can. However, when you approach to question them, they start being defensive and try only to fulfill their need. If you are a manager and ask questions to learn something, your reports will give the best answer.&lt;/p&gt;
&lt;h4&gt;Monitoring Work of Subordinates&lt;/h4&gt;
&lt;p&gt;Top-down monitoring systems like tracking everything people do at work are not efficient. They don&apos;t work. However, you still need to collect data to monitor systems. But they should be used to make the invisible visible and identify problems to solve them. They should not be used to determine what junior personnel do or track people&apos;s work.&lt;/p&gt;
&lt;h4&gt;Give Ownership to People&lt;/h4&gt;
&lt;p&gt;If you want to give ownership, don&apos;t just preach and hope for the best. Implement mechanisms that will support ownership. People should use these mechanisms to own their domain instead of waiting for you to give ownership.&lt;/p&gt;
&lt;h4&gt;Communicate Decisions Informally&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;/why-should-leaders-have-good-storytelling-skills-in-reorganizations-or-restructurings/&quot;&gt;Personalization in the language is essential&lt;/a&gt;. If you constantly talk formally, you remove the sophistication and the touch of personality from the conversation. It also applies to the decisions. Decisions can be formal. But communication of decisions might be better in an informal way.&lt;/p&gt;
&lt;h4&gt;Think Out Loud&lt;/h4&gt;
&lt;p&gt;In discussions at work, encourage people to &quot;think out loud.&quot; Do the same. Then people will stop thinking about authority and explain their opinions as well.&lt;/p&gt;
&lt;p&gt;You might also encourage people with different techniques. For example, playing devil&apos;s advocate to bring different perspectives enables everyone to see the possible or invisible mistakes. Whenever you do this, say, &quot;let me play devil&apos;s advocate&quot; in the beginning. Encourage others to do the same.&lt;/p&gt;
&lt;h4&gt;Knowledge as a Noise&lt;/h4&gt;
&lt;p&gt;Especially in the information age, knowledge sharing might seem like a lot of noise. However, when the knowledge might affect someone else, then it definitely worth it.&lt;/p&gt;
&lt;h4&gt;Monitoring &amp;amp; Inspection to Learn&lt;/h4&gt;
&lt;p&gt;Embrace inspections and monitoring from third parties to check how you are doing. Don&apos;t consider them as a control mechanism. They are opportunities to learn. While investigators inspect, you can ask for a better solution they already know (and learned) from others.&lt;/p&gt;
&lt;h4&gt;Improve Competency with Mechanisms&lt;/h4&gt;
&lt;p&gt;Support improving competency on technical topics with mechanisms. Mechanisms ensure that technical knowledge expands. These mechanisms include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Saying the message multiple times&lt;/li&gt;
&lt;li&gt;Taking &lt;a href=&quot;/bias-towards-action/&quot;&gt;deliberate action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Learning at every opportunity&lt;/li&gt;
&lt;li&gt;Certifying the learning (tests) and competency&lt;/li&gt;
&lt;li&gt;Specifying goals, not methods. (This is especially amazing. When you specify methods, you forget why you are doing what you are doing.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Effectively Learn From Mistakes&lt;/h4&gt;
&lt;p&gt;How effectively do you learn from mistakes? Having different mechanisms, such as retrospectives, helps increase learning. But how effectively do you use these mechanisms? Clear intention for improvement and having follow-ups are crucial. You shouldn&apos;t have these mechanisms just for the sake of saying, &quot;yes, we are doing.&quot; You need to use them effectively.&lt;/p&gt;
&lt;h4&gt;Autonomy and Ownership Requires Technical Capability&lt;/h4&gt;
&lt;p&gt;Giving control, autonomy, and ownership requires the person to have the necessary technical capability. If they lack the skills, they will make wrong calls and judgments.&lt;/p&gt;
&lt;p&gt;Approach training as a way to increase decision-making authority. It makes people better at their job, and they start owning the decisions with &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;more trust&lt;/a&gt; in themselves. Their fear dissolves in time. Increased competency means increased decision-making authority.&lt;/p&gt;
&lt;h4&gt;Continually and Consistently Repeat The Message&lt;/h4&gt;
&lt;p&gt;People forget. If you want people to &lt;a href=&quot;https://candost.substack.com/p/18-managing-organizational-changes&quot;&gt;change their minds&lt;/a&gt; or apply a new method, there is no other way than continually and consistently repeating the message. They will eventually learn. The problem is not their competence. When you want to give a message that they should follow, what alternative do you have? Changing the message halfway will only create confusion and a lack of direction.&lt;/p&gt;
&lt;h4&gt;Specify Goals, Not Methods&lt;/h4&gt;
&lt;p&gt;Specifying goals instead of methods creates confidence. When people focus on implementing methods to achieve a goal, they get stuck and forget the purpose. They only focus on &lt;a href=&quot;/newsletter/mektup-34/&quot;&gt;implementing the process&lt;/a&gt;. &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;When they focus on goals&lt;/a&gt;, they use the methods better and even figure out a superior approach.&lt;/p&gt;
&lt;h4&gt;Clarity Is Needed In The Organisation&lt;/h4&gt;
&lt;p&gt;Everyone needs to understand what you&apos;re trying to achieve fully. Since everyone is the decision-maker in leader-leader organizations, they have to make decisions inlined with what the organization is trying to accomplish. If not, you will end up with suboptimal decisions.&lt;/p&gt;
&lt;h4&gt;Protecting Direct Reports at Work&lt;/h4&gt;
&lt;p&gt;Taking care of people in the organization doesn&apos;t mean keeping them safe from the results of their behavior and work. It means giving them tools, education, and an advantage to achieve their personal and professional goals in the best way.&lt;/p&gt;
&lt;h4&gt;Reward in The Moment&lt;/h4&gt;
&lt;p&gt;When you want to reinforce the desired behavior at work, you must recognize their achievements immediately. You need to reward them at the exact moment, not after a long time. Delayed rewards lose meaning, and you can have difficulty justifying achievements later on.&lt;/p&gt;
&lt;h4&gt;Set Clear and Measurable Goals&lt;/h4&gt;
&lt;p&gt;Begin with the end in mind. &lt;a href=&quot;/why-is-writing-important/&quot;&gt;Writing up evaluations of 1, 3, and 5 years later and thinking ahead clears the mind and creates achievable goals.&lt;/a&gt; At the same time, these goals need to be measurable. You can&apos;t say &quot;improve test results&quot; as a goal. You need to define how much you want to improve. Do you want 30% or 50%? And these goals have to be aligned with the bigger goals of the organization.&lt;/p&gt;
&lt;h4&gt;Resilient Organisations Don&apos;t Allow Mistakes&lt;/h4&gt;
&lt;p&gt;Resilient organizations don&apos;t allow mistakes or errors. Even when the captain or CEO makes mistakes, competent people in the area can inform the leader and say, &quot;No, you&apos;re wrong.&quot; This &lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;confronting attitude&lt;/a&gt; creates resilient organizations.&lt;/p&gt;
&lt;h4&gt;Teams Need Emancipation, Not Empowerment&lt;/h4&gt;
&lt;p&gt;Empowerment doesn&apos;t work without clarity and competence—it also results from the top-down structure. The leader &lt;em&gt;empowers&lt;/em&gt; the team. That&apos;s why you need emancipation instead of empowerment. An emancipated team doesn&apos;t need empowerment. Because they don&apos;t need the power from the leader, when they have emancipation, they can act freely. Since they are competent and have a clear goal, they have the power to make better decisions.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Complement with &lt;a href=&quot;/newsletter/mektup-30/&quot;&gt;the Exceptional Books, Articles, Videos, and Communities that Made Me A Better Engineering Leader.&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/turn-the-ship-around-summary-book-chapter-notes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>The Good, The Bad, and The Ugly of Career Ladders</title><link>https://candost.blog/the-good-the-bad-and-the-ugly-of-career-ladders-and-frameworks/</link><guid isPermaLink="true">https://candost.blog/the-good-the-bad-and-the-ugly-of-career-ladders-and-frameworks/</guid><description>Software engineering career ladders and frameworks are helpful tools for software engineers to grow. Here are the advantages and disadvantages of career frameworks and ladders.</description><pubDate>Thu, 12 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, we implemented a career ladder for software engineers to define the growth path by using a competency framework similar to what &lt;a href=&quot;https://docs.google.com/spreadsheets/d/131XZCEb8LoXqy79WWrhCX4sBnGhCM1nAIz4feFZJsEo/edit#gid=0&quot;&gt;CircleCI uses&lt;/a&gt;. Before, we only had abstract titles that gave no information about responsibilities and didn&apos;t define clear expectations. Every engineer was handling their growth and expectations with their manager. We now have a career path for software engineers.&lt;/p&gt;
&lt;p&gt;During the implementation, I directly worked on implementing the career framework in our team and moderated sessions between the engineers and the manager. Here are my observations and thoughts on the career frameworks.&lt;/p&gt;
&lt;h2&gt;Engineers Get a Chair on The Table&lt;/h2&gt;
&lt;p&gt;The career frameworks are growth tools for engineers, not producers of hierarchy. Without it, engineers never get a chair on the table, and the power accumulates on the managers. It helps to disperse authority and aligns expectations from titles with generating new opportunities. Once the power is spread between different roles, organizations and individuals both see a huge uplift. Achieving this uplift is only possible by approaching the ladder as a growth tool and fairly evaluating everyone.&lt;/p&gt;
&lt;p&gt;The career ladders help engineers comprehend where they are and what they lack precisely for the next level.&lt;/p&gt;
&lt;p&gt;Dropbox recently published &lt;a href=&quot;https://dropbox.github.io/dbx-career-framework/overview.html&quot;&gt;its career framework&lt;/a&gt;, and they have a variety of roles covered. If the career framework is comprehensive enough, like Dropbox&apos;s, it covers various roles and applies to many different disciplines, such as engineering management, software architecture, and security. Although many companies won&apos;t have many positions covered, like Dropbox, having the minimal framework still benefits everyone, especially people in their early careers.&lt;/p&gt;
&lt;h2&gt;Personal Growth in All Levels&lt;/h2&gt;
&lt;p&gt;Junior and mid-level engineers usually cannot perceive &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;how they can grow&lt;/a&gt; and &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;what they should learn&lt;/a&gt;. The framework assists them with options and opportunities and identifies which skills need attention to plan their growth.&lt;/p&gt;
&lt;p&gt;On the upper levels of the ladder, staff and principal engineers can understand the scope of their work to &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;prioritize their projects more efficiently&lt;/a&gt;. I often encounter principal and staff engineers having trouble describing their impact while preparing for performance reviews. The framework provides a basis for discussion about their responsibilities and influence on the company.&lt;/p&gt;
&lt;p&gt;Regardless of the level, all engineers use the framework in performance reviews. Since it defines the minimum expectations, engineers get help to prepare for the review and the promotion case. However, the framework shouldn&apos;t be the only criterion in performance reviews and promotions.&lt;/p&gt;
&lt;p&gt;At the same time, career frameworks help look at what others are doing and in which scope they work. If there is a chance for peers of the engineer to evaluate the engineer using the framework, the framework gives better results because there are skills that the manager might fail to assess fairly. Evaluating peers also helps engineers, especially juniors, understand other engineers&apos; actions and mimic them to learn new stuff to reach the next level.&lt;/p&gt;
&lt;p&gt;Of course, everything comes with trade-offs. These are the good sides of the career frameworks and the most substantial reasons to implement them. Now, let&apos;s take a look at the bad sides.&lt;/p&gt;
&lt;h2&gt;How Much Time Does It Take To Implement?&lt;/h2&gt;
&lt;p&gt;The framework takes a lot of time. If you want to develop one or even adopt one of them, it takes a lot of time and energy to evaluate everyone from scratch. Especially in the beginning, it&apos;s a significant investment, and many people find it difficult to separate a time for it.&lt;/p&gt;
&lt;p&gt;The company&apos;s leadership group isn&apos;t the only one who creates the framework and evaluates everyone. Depending on how you implement it, almost everyone spends time on it. We asked two peers to assess an engineer&apos;s competency so that the manager&apos;s point of view wouldn&apos;t be limited, and we caught hidden gems. Although we told peers not to spend more than thirty minutes, it is still an investment. Depending on how you make this investment, your gain will differ.&lt;/p&gt;
&lt;h2&gt;Not Every Skill Is Measurable&lt;/h2&gt;
&lt;p&gt;Some skills listed in the framework will have a vague meaning. Some companies define them as precisely as possible, albeit the skills themselves are difficult to specify and level, especially soft ones. For example, &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;being an effective communicator&lt;/a&gt; has different meanings in &lt;a href=&quot;https://candost.substack.com/p/8-cross-cultural-communication&quot;&gt;different cultures&lt;/a&gt;. Finding what effective communication means is the real challenge.&lt;/p&gt;
&lt;h2&gt;Be Aware Of The Cultural Differences&lt;/h2&gt;
&lt;p&gt;The managers&apos; skills and communication impact the evaluation a lot. The difference between people&apos;s cultural backgrounds makes the precise assessment difficult. While &lt;a href=&quot;https://en.wikipedia.org/wiki/High-context_and_low-context_cultures&quot;&gt;low-context cultures&lt;/a&gt; (e.g., American and German) can communicate their evaluations explicitly with examples, people from &lt;a href=&quot;https://en.wikipedia.org/wiki/High-context_and_low-context_cultures&quot;&gt;high-context cultures&lt;/a&gt; (e.g., Indian and Turkish) and people who use &lt;a href=&quot;https://hbr.org/2014/04/are-you-a-holistic-or-a-specific-thinker&quot;&gt;a holistic approach&lt;/a&gt; (e.g., East Asian) to present an idea walk around to explain what their self-evaluation. If the manager isn&apos;t aware of these differences, the discussions are highly likely to create dissatisfaction.&lt;/p&gt;
&lt;h2&gt;Imposter Syndrome is Real&lt;/h2&gt;
&lt;p&gt;Before we finish the bad part, there is one more point. The &lt;a href=&quot;https://en.wikipedia.org/wiki/Impostor_syndrome&quot;&gt;imposter syndrome&lt;/a&gt; is real. If the managers are not careful, they can easily fall into the trap of lower evaluation because of engineers have imposter syndrome. It&apos;s also possible that bad managers can use this to their advantage. We&apos;ve seen that some engineers tend to evaluate their competencies lower than their actual level. It is tricky to put the finger on this issue during the evaluation discussions. However, once identified, we&apos;ve seen that concrete examples convince the engineer.&lt;/p&gt;
&lt;p&gt;There are other trivial bad points that I won&apos;t mention in detail because they are not very common. Let&apos;s move on to the ugly.&lt;/p&gt;
&lt;h2&gt;It&apos;s Getting Ugly: Promotions&lt;/h2&gt;
&lt;p&gt;Promotions. As exciting as personal growth is for everyone, governing promotions is difficult. It usually involves many people in the decision, and many factors affect the judgment. The ugliest part is that when people &lt;a href=&quot;https://candost.substack.com/p/11-learning-and-growing-in-front-end-development#details&quot;&gt;grow their skills&lt;/a&gt; and become ready for the next level, there may not be an available seat.&lt;/p&gt;
&lt;p&gt;The company strategy, size, and growth define how many staff+ engineers will be in the company. Although the goal is to grow engineers into staff-level engineers and give them a seat, not everyone can and should be &lt;a href=&quot;https://staffeng.com/&quot;&gt;a staff engineer&lt;/a&gt;. Even though some people may have the necessary skills to level up, it might not happen, and therefore losing the engineer becomes inevitable.&lt;/p&gt;
&lt;p&gt;Creating the career framework brings the responsibility to level people correctly. When there isn&apos;t any career ladder defined, people don&apos;t expect to be leveled correctly. But the mechanism itself creates the expectation. When this expectation is not managed correctly, it will cause a lot of headaches.&lt;/p&gt;
&lt;p&gt;The expectations will also be present about the opportunities. When engineers wish to climb the engineering career ladder, they will expect to get opportunities from the above level to learn and operate on the next level. Managers need to seek out, find and &lt;a href=&quot;/how-to-delegate-anything-successfully/&quot;&gt;delegate&lt;/a&gt; these opportunities to engineers. However, these opportunities are rare. The more an engineer climbs the ladder, the fewer chances they will get.&lt;/p&gt;
&lt;h2&gt;Difficulty: The Team Impacts The Promotion&lt;/h2&gt;
&lt;p&gt;In some teams, such as automation and platform teams, the day-to-day work brings these opportunities because it includes working across teams (one of the main requirements for staff-level engineers). On the other side, in product (or feature) teams, these opportunities are usually absent. This situation results in more engineers from platform or automation teams getting promoted to staff levels. In contrast, product or feature engineers are less leveled up just because they don&apos;t face the challenges every day, though they may handle them when given a chance.&lt;/p&gt;
&lt;p&gt;Unfair challenges lead to unfair evaluations and promotions. Doing fair evaluation is difficult because of not only lacking opportunities but also different interpretations of the framework. Strategies such as involving another manager or director in the assessment can create a consistent evaluation across teams. However, adding these people will generate a bottleneck and result in a higher evaluation time.&lt;/p&gt;
&lt;p&gt;Providing the framework and ladder to engineers shines the light on only one part of the career ladder. The other parts, such as becoming &lt;a href=&quot;https://candost.substack.com/p/19-software-architect-role-and-archicture&quot;&gt;a software architect&lt;/a&gt;, team lead, engineering manager, and technical product manager, are usually unclear. For example, while Dropbox defines multiple tracks, CircleCI has &lt;a href=&quot;https://docs.google.com/spreadsheets/d/131XZCEb8LoXqy79WWrhCX4sBnGhCM1nAIz4feFZJsEo/edit#gid=0&quot;&gt;only one framework&lt;/a&gt; for all engineers. Of course, satisfying everyone is impossible. However, once you start implementing a framework for the software engineering track, the others should follow as soon as possible because people have different career goals.&lt;/p&gt;
&lt;p&gt;After talking about opportunities, evaluations, leveling, and promotions, skipping the salaries would be inappropriate. Although I like having specific salary ranges for each level, there are trade-offs for all approaches. The good side of aligning compensation levels with the career ladder is that it helps underrepresented groups close the pay gap and make managers&apos; lives easier. However, the salary levels also limit engineers&apos; compensation when they reach the top of their titles but are not ready to level up. This whole process can quickly get ugly when the interests start conflicting.&lt;/p&gt;
&lt;h2&gt;Last Words&lt;/h2&gt;
&lt;p&gt;The career frameworks are helpful, but how you approach them and your implementation strategy defines how useful or a burden they will be. If the approach focuses on defining only levels and creating a hierarchy for better decision-making, you will probably form a promotion competition. If you don&apos;t make the process clear and transparent, you will break the trust when people struggle with promotions.&lt;/p&gt;
&lt;p&gt;If you are getting into implementing the framework, don&apos;t get stuck in the advantages. Be aware of the flaws of the framework, and don&apos;t try to overachieve it at once. Build it step by step. Try the framework with one team, collect feedback, improve it, and slowly expand to other groups.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/the-good-the-bad-and-the-ugly-of-career-ladders-and-frameworks/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/the-good-the-bad-and-the-ugly-of-career-ladders-and-frameworks/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Put Remote Work in Your Inclusion Efforts, not only in Diversity</title><link>https://candost.blog/put-remote-work-in-your-inclusion-efforts-not-only-in-diversity-in-the-workplace/</link><guid isPermaLink="true">https://candost.blog/put-remote-work-in-your-inclusion-efforts-not-only-in-diversity-in-the-workplace/</guid><description>Remote work is more inclusive than on-site work. It provides opportunities to people with disabilities, disorders, and deficiencies.</description><pubDate>Sun, 08 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Remote work sees its most significant rise thanks to the pandemic. Many articles, talks, job ads focus on work-life balance, social isolation, finding the best talent everywhere, &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;working with different cultures&lt;/a&gt;, or so on. But people forget another aspect: remote work is more inclusive than on-site work at all levels. It provides many opportunities to the people who struggle in the office, especially people with disabilities, disorders, and deficiencies.&lt;/p&gt;
&lt;p&gt;Depending on the disability, there are different advantages. For example, using text-to-speech in video calls provides a significant benefit to people with hearing disabilities. Although these technologies are still not perfect, they are better than any option that &lt;a href=&quot;/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/&quot;&gt;the office can provide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Maybe we didn&apos;t find a chance to work with a person with disabilities. Yet, I believe everyone in international companies is not great at understanding different English accents. Even for native English speakers, it&apos;s challenging to understand different pronunciations of the same word. Many people, such as myself, turn on the captions or speech-to-text in video calls in these cases.&lt;/p&gt;
&lt;p&gt;My English is good, which means I can speak, write, listen in English, and I don&apos;t have any disabilities. However, I had problems with an Australian accent; it took me a while to get used to it. For example, in the office, I had to ask repeatedly to understand what some people are saying. Now, I turn on captions, and it already helps a ton.&lt;/p&gt;
&lt;p&gt;When we think about people with physical disabilities or difficulties, remote work is a big chance. Physically going to the office is a massive hassle. Although many countries enforce accessible offices and transportation by law, there are many visible and invisible barriers in day-to-day life. These difficulties create stress, cause tiredness and demotivation for work, and end up with people leaving the job and even socially isolating themselves in worst cases.&lt;/p&gt;
&lt;p&gt;Also, there are invisible disorders from the outside and not even very well-known by the person who has them. &lt;a href=&quot;https://www.verywellmind.com/add-and-attention-deficit-disorders-2161810&quot;&gt;Attention Deficit Disorder (ADD)&lt;/a&gt; is one of the cognitive disorders. People who have ADD can have difficulties giving attention to something for extended periods. It might be difficult for them to work effectively in an office where there are many meetings and more prolonged social interactions. If they take many breaks, it might seem like they are not working as much as others.&lt;/p&gt;
&lt;p&gt;In remote work, &lt;em&gt;especially async communication&lt;/em&gt;, they can better design their day to be more effective. Additionally, recording meetings becomes notably beneficial for these people to watch back the parts where they lost their attention.&lt;/p&gt;
&lt;p&gt;Another example is people with autism, who may have difficulties understanding some communications and social interactions. Autism spectrum disorder has a range of conditions; depending on the level and the circumstances, people with autism can work in companies that provide a comfortable environment. However, office environments might be troublesome because these people might avoid eye contact, be sensitive to loud noises, or have difficulty understanding what and how others feel.&lt;/p&gt;
&lt;p&gt;Some of these conditions are easily solvable by remote work. They can adjust the volume however they want in a remote environment, and they don&apos;t have to have eye contact. Additionally, while &lt;a href=&quot;/effective-1-1-meetings-one-on-one-meeting-template/&quot;&gt;working over a document&lt;/a&gt; asynchronously, they don&apos;t need to understand how others feel as much as they need to in the office.&lt;/p&gt;
&lt;p&gt;Many people with cognitive or intellectual disabilities and disorders can be more welcomed in remote work. Offering everyone (not only for certain people) a remote work option by standard helps them feel included.&lt;/p&gt;
&lt;p&gt;If we enable remote work only for people with disabilities and disorders, we won&apos;t be that inclusive because our processes won&apos;t be aligned for them to work efficiently and grow in their careers. If we &lt;a href=&quot;/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/&quot;&gt;fall back to the office practices&lt;/a&gt;, regardless of disabilities or disorders, any remote employee feels alone or privileged.&lt;/p&gt;
&lt;p&gt;Including a diverse group in the workforce starts being inclusive in job listings, continues with the inclusive hiring and &lt;a href=&quot;https://candost.substack.com/p/1-tech-interviews&quot;&gt;interviewing&lt;/a&gt; process, and later on, adopting or adjusting the perks and benefits according to the person&apos;s needs. But it doesn&apos;t stop there.&lt;/p&gt;
&lt;p&gt;Creating a safe environment and culture is a complex but crucial task. Don&apos;t focus on making everyone &lt;a href=&quot;/what-hades-the-game-had-taught-me/&quot;&gt;happy&lt;/a&gt;; that is impossible. However, having a culture where everyone feels safe and feel neither forced nor expected to share their situation should be your focus.&lt;/p&gt;
&lt;p&gt;If you ask about the disabilities during interviewing to ensure that you treat the person right to be more inclusive, you still have work to do.&lt;/p&gt;
&lt;p&gt;The hiring and working processes should be comprehensive enough so that you shouldn&apos;t even need to ask anyone (except for legal reasons) about their disabilities, disorders, nationality, gender, etc. If you build the systems and processes to be inclusive, people probably won&apos;t feel that they get special treatment. It should be their judgment to explain their situation.&lt;/p&gt;
&lt;p&gt;Offer remote work not only for work-life balance or to reach the best talent on the other side of the world but also to be more inclusive. As a result, you will get the very best and diverse team that feels safe and can put their best into their work. Make your processes inclusive from beginning till the end so that you find the hidden gems in society and &lt;a href=&quot;/managing-partially-distributed-teams/&quot;&gt;provide your team the best work experience while enabling everyone to be more engaged and active at their job&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/put-remote-work-in-your-inclusion-efforts-not-only-in-diversity-in-the-workplace/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/put-remote-work-in-your-inclusion-efforts-not-only-in-diversity-in-the-workplace/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #11: Do you know what&apos;s coming next?</title><link>https://candost.blog/newsletter/mektup-11/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-11/</guid><pubDate>Thu, 05 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Every second week, I write Mektup to share what I learned from reading many articles and books about &lt;em&gt;software engineering&lt;/em&gt; and &lt;em&gt;leadership&lt;/em&gt;. Mektup is ideal for busy people such as senior &amp;amp; staff software engineers and software engineering leaders.&lt;/p&gt;
&lt;p&gt;Now, on to this week&apos;s Mektup.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;The feeling of safety and predictability is what everybody looks for on some level. Even &lt;a href=&quot;https://www.nature.com/articles/ncomms10996&quot;&gt;one study showed&lt;/a&gt; that people would rather know for sure that they will get an electric shock instead of not being able to predict if they will get a shock or not. Imagine getting into a dark tunnel. According to the study, walking in a dark tunnel without a light causes more stress than walking in a lighted tunnel full of monsters.&lt;/p&gt;
&lt;p&gt;Navigating in ambiguous situations, or moving in a dark tunnel, is an expected skill from senior+ software engineers. They have to find their way around and work autonomously. At the same time, the manager&apos;s job is to keep the uncertainty at a particular level that engineers can feel just safe enough to learn and grow but not too much to burn out from stress.&lt;/p&gt;
&lt;p&gt;So in your team, bring enough clarity and reduce uncertainty to neither face the monsters nor walk in the darkness. Here are some strategies that helped me and can be helpful for you too:&lt;/p&gt;
&lt;p&gt;Put all your high-level plans in one place, like a Miro board, separated from your task tracker, such as Jira. Your high-level goals should be independent of day-to-day work. However, attach links to the existing documents and tickets to make connections between them.&lt;/p&gt;
&lt;p&gt;Clearly define why one feature comes next, not the other. Usually, people forget to talk about &lt;em&gt;why&lt;/em&gt; and focus on &lt;em&gt;how&lt;/em&gt;, but explaining why removes many quandaries upfront. If you are a software engineer, ask your leader to learn &lt;em&gt;why&lt;/em&gt;s to come up with &lt;em&gt;how you will approach&lt;/em&gt; the problem. If you are a leader, clarify why you want to focus on a feature or project and why that strategy is essential.&lt;/p&gt;
&lt;p&gt;Plan, but not over plan. The trick is planning with a high-level overview, not with the minor tasks. Only work with the smaller tasks when you are sure that you will tackle that specific project or feature. Instead of spending hours over-planning, you can focus on what is essential at that time.&lt;/p&gt;
&lt;p&gt;In a changing world, a certain level of expectancy is enough to reduce stress and motivate people. You don&apos;t need to create a plan for the following year. When you do, it will probably become obsolete. So, define what&apos;s coming next with an eye towards your end goal and vision. Reduce stress to increase motivation.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S.: &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;You can also improve your prioritization skills to decide what to focus on next.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-11/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-11/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>You are not special</title><link>https://candost.blog/books/the-subtle-art-of-not-giving-a-fuck-book-note-you-are-not-special/</link><guid isPermaLink="true">https://candost.blog/books/the-subtle-art-of-not-giving-a-fuck-book-note-you-are-not-special/</guid><description>Most things in life are either average or suck. The media blurs this reality. It also creates a fake one by saying that everyone can achieve everything.</description><pubDate>Fri, 23 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The media likes to show extraordinary people who achieved great things. Because these people create attention. Humans are interested in different things than themselves, and the press uses exceptional people to keep the interest high.&lt;/p&gt;
&lt;p&gt;The misperception created by the media causes many &lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;mental problems&lt;/a&gt;. The extraordinary people we see in the media do unusual things because they routinely accept themselves as average or worse at what they do. They live the reality: most things in life are either average or suck. The media wrecks this reality. It also creates a fake one by saying that everyone can achieve everything.&lt;/p&gt;
&lt;p&gt;The mental burden of seeing these people and being pumped with &apos;you are special&apos; speeches leads us to think that we also must be extraordinary. But we&apos;re not. Once we accept that we are ordinary, we can leverage the appreciation of the essential things in life. This mindset lets us accomplish what we want to achieve without having self-criticism or judgment. It helps us &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;focus on the moment&lt;/a&gt; more instead of blaming our past or creating dreams that will never happen.&lt;/p&gt;
&lt;p&gt;Be humble. Focus on now, not in the past, not in the future.&lt;/p&gt;
&lt;p&gt;This was one of my notes from the book &lt;a href=&quot;/books/the-subtle-art-of-not-giving-a-fuck-by-mark-manson-book-summary-review-and-notes/&quot;&gt;The Subtle Art of Not Giving a Fuck by Mark Manson&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/the-subtle-art-of-not-giving-a-fuck-book-note-you-are-not-special/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/the-subtle-art-of-not-giving-a-fuck-book-note-you-are-not-special/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #10: The Career Frameworks</title><link>https://candost.blog/newsletter/mektup-10/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-10/</guid><pubDate>Thu, 22 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend!&lt;/p&gt;
&lt;p&gt;Welcome to the &lt;strong&gt;10th issue&lt;/strong&gt; of the Mektup. Here is what I think about this newsletter: &lt;em&gt;sending a letter (Mektup means letter in Turkish) to you every two weeks and intending to hear back from you&lt;/em&gt;. I&apos;m still excited to send every letter like it&apos;s day one. Meanwhile, I&apos;m still considering different formats for the newsletter. So, if you have a wish, hit reply and send it over!&lt;/p&gt;
&lt;p&gt;Now, onto the Mektup.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;For the last half-year, I&apos;ve been working on &lt;em&gt;engineering career frameworks&lt;/em&gt; (clearly defined career ladders for software engineers) to describe what&apos;s expected from each engineering level. I&apos;ve moderated many sessions in our team. Observing how everyone evaluates themselves and others brought many learnings.&lt;/p&gt;
&lt;p&gt;Career frameworks give opportunities to individual contributors. Although it introduces a hierarchy in which many people are disturbed, the engineer gets a seat at the leadership (decision) table. Otherwise, many decisions are accumulated on managers who, most of the time, are not experts on the engineering side.&lt;/p&gt;
&lt;p&gt;Dropbox recently &lt;a href=&quot;https://dropbox.github.io/dbx-career-framework/&quot;&gt;published&lt;/a&gt; its career framework, and other companies talked about it before as well. One great thing in Dropbox&apos;s framework that many companies don&apos;t have is separating the roles into individual contributor tracks such as quality assurance, reliability engineering, security engineering, etc. This separation helps all level of engineers to see how exactly they can grow in their careers.&lt;/p&gt;
&lt;p&gt;Junior software engineers asked me many, many times about how they can grow their skills. If you are a junior or mid-level engineer looking for ways to develop your (technical &amp;amp; non-technical) skills, have a peek at these frameworks.&lt;/p&gt;
&lt;p&gt;In more senior roles, such as staff-level engineers, the hassle is a little bit different. Staff engineers usually struggle to define their impact on the company and its scope. While evaluating people with a career framework at work, I&apos;ve often seen engineers being required to bring examples to the table. If you are operating on a senior+ level, that isn&apos;t easy because your work involves multi-teams and multi-year projects. Hence, it&apos;s hard to convince the manager with demonstrated skills in finished projects.&lt;/p&gt;
&lt;p&gt;Looking at multiple frameworks from different companies gives hints and solutions to help you achieve the next level. So, my recommendation is to look at the frameworks I listed below, even if you have one defined at work. Focus on how you can grow without the limits that your company imposes on you. Try to determine your existing impact and plan for the future.&lt;/p&gt;
&lt;p&gt;Here are the frameworks I am already aware of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;​&lt;a href=&quot;https://dropbox.github.io/dbx-career-framework/&quot;&gt;Dropbox Career Framework&lt;/a&gt;​&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;https://docs.google.com/spreadsheets/d/131XZCEb8LoXqy79WWrhCX4sBnGhCM1nAIz4feFZJsEo/edit#gid=0&quot;&gt;CircleCI Career Framework&lt;/a&gt;​&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;https://about.gitlab.com/handbook/engineering/career-development/matrix/engineering/&quot;&gt;GitLab Career Framework&lt;/a&gt;​&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;https://buffer.com/resources/engineering-career-framework/&quot;&gt;Buffer Career Framework&lt;/a&gt;​&lt;/li&gt;
&lt;li&gt;​&lt;a href=&quot;https://docs.google.com/spreadsheets/d/1k4sO6pyCl_YYnf0PAXSBcX776rNcTjSOqDxZ5SDty-4/edit#gid=0&quot;&gt;Rent The Runway Career Framework&lt;/a&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S.:&lt;/strong&gt; &lt;em&gt;&lt;a href=&quot;/no-you-dont-need-to-learn-another-programming-language-every-three-months/&quot;&gt;You don&apos;t need to learn another programming language every three months&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-10/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-10/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#19: The Software Architect Role | Systems and Architectural Thinking Part 1</title><link>https://candost.blog/podcast/19-software-architect-role-and-archicture/</link><guid isPermaLink="true">https://candost.blog/podcast/19-software-architect-role-and-archicture/</guid><pubDate>Tue, 20 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;19: The Software Architect Role | Systems and Architectural Thinking Part 1&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/19-software-architect-role-and-archicture&quot;&gt;https://candost.substack.com/p/19-software-architect-role-and-archicture&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/19-software-architect-role-and-archicture/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/19-software-architect-role-and-archicture/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why Can&apos;t This Be Done Sooner</title><link>https://candost.blog/why-cant-this-be-done-sooner/</link><guid isPermaLink="true">https://candost.blog/why-cant-this-be-done-sooner/</guid><description>The question, &apos;Why can&apos;t this be done sooner?&apos; makes you deeply understand the approach you&apos;re taking, question it, find the gaps in your knowledge, and analyze the risks better so that you make an informative decision while moving faster.</description><pubDate>Mon, 19 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There are questions with power. They are rare and challenge you to think deeply. The question, &lt;a href=&quot;https://review.firstround.com/speed-as-a-habit&quot;&gt;&quot;Why can&apos;t this be done sooner?&quot; by Larry Page&lt;/a&gt; is one of them. It makes you deeply understand the approach you&apos;re taking, question it, find the gaps in your knowledge and analyze the risks better so that you make &lt;a href=&quot;/bias-towards-action/&quot;&gt;an informative decision while moving faster&lt;/a&gt;. Yet, it doesn&apos;t ask to reduce the project&apos;s quality or scope; it&apos;s purely focused on understanding the limitations.&lt;/p&gt;
&lt;p&gt;Fast-moving companies often neglect to grasp the reasons why things take longer than managers imagined. Managers tend to &lt;a href=&quot;/timely-estimations-are-underrated/&quot;&gt;lower-estimate&lt;/a&gt; a software project than software engineers because they don&apos;t have sufficient information or technical limitations are not so obvious.&lt;/p&gt;
&lt;p&gt;The limitations often play a significant role in software development. One of the biggest &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;debates&lt;/a&gt; is in quality vs. speed. While engineers want to deliver high-quality software, the product manager wants to deliver new features faster to compete in the market. However, it&apos;s challenging to achieve both at once. But once we know the limitations and risks, it&apos;s easier to &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;make decisions&lt;/a&gt; and deliver &lt;em&gt;faster&lt;/em&gt; &lt;em&gt;with quality&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Uncovering risks and filling the knowledge gaps shape the &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;prioritization strategy&lt;/a&gt; and how to break down tasks. All software features and projects have multiple ways to split the work and deliver. Engineers can divide tasks according to the technical- or domain-driven design. Both strategies offer many different ways to build software. Finding out which one to use requires awareness of risks.&lt;/p&gt;
&lt;p&gt;Let&apos;s think about the domain-driven approach. When the software team goes with a domain-driven approach, they split the problem into user journeys and business domain requirements instead of technical layers. We can think of each following box as one part of the domain requirements.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/why-cant-this-be-done-sooner/feature-blocks.png&quot; alt=&quot;Software project/feature blocks&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sometimes the best solution, and often preferred one, is straightforward, following one block after another to build value for the customers and company.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/why-cant-this-be-done-sooner/straightforward-roadmap.png&quot; alt=&quot;Straightforward roadmap (build one by one)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A straightforward way satisfies all requirements. But when we want to deliver the project faster and ask, &quot;Why can&apos;t this be done sooner? Why not?&quot; we are forced to think of both alternative approaches and risks we currently have in our design. Once we identify them, we can choose another path and remove the risky or unnecessary blocks.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/why-cant-this-be-done-sooner/finding-risky-blocks.png&quot; alt=&quot;Finding the risky blocks, removing them, and thinking of alternative ways to create a value&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Despite the question, sometimes there is no change in the result at all. If we&apos;re able to answer with &quot;Because of the reason X and dependency Y that we have no other choice,&quot; we&apos;re acting mindfully. The question makes us clearly see our risks and limitations and &lt;a href=&quot;/communicating-decisions-in-the-organizations/&quot;&gt;communicate them&lt;/a&gt; to other people.&lt;/p&gt;
&lt;p&gt;If there is a risk that we&apos;re hesitant to take, we focus on different strategies to mitigate the risks. The question doesn&apos;t give any hint about &lt;a href=&quot;https://candost.substack.com/p/18-managing-organizational-changes&quot;&gt;changing the direction&lt;/a&gt; to another way. To answer it, we need to truly understand why can&apos;t we do the job in any other way. Thinking about alternatives pushes us to &lt;a href=&quot;/14-lessons-i-learned-in-10-years/&quot;&gt;focus on the problem rather than blindly loving the solution&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When we focus on delivering early and understanding the risks clearly, the situation creates psychological safety. Early and smaller wins motivate us and increase dopamine in our bodies. Knowing risks and impediments early and &lt;a href=&quot;/bias-towards-action/&quot;&gt;acting accordingly&lt;/a&gt; help reduce stress. As a result of delivering early, learning from users fast enables us to decrease the size of failures that might lead to stress and burnout.&lt;/p&gt;
&lt;p&gt;The question is useable by both engineers and managers. While it provides managers the context and reasoning about the limitations, it also helps engineers understand the gaps in their knowledge and nudges them to look for other ways or strategies to &lt;a href=&quot;/newsletter/mektup-6/&quot;&gt;break down the project&lt;/a&gt; to reduce risks.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/why-cant-this-be-done-sooner/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/why-cant-this-be-done-sooner/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>A Life Without Problems - The Happiness</title><link>https://candost.blog/a-life-without-problems-the-happiness/</link><guid isPermaLink="true">https://candost.blog/a-life-without-problems-the-happiness/</guid><description>In a blink of an eye, we&apos;re happy. We may be achieved a goal or finalize a project. This happiness usually lasts for one blink, maybe two.</description><pubDate>Wed, 14 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In a blink of an eye, we&apos;re happy. We may be achieved a goal or finalize a project. This happiness usually lasts for one blink, maybe two. In this short moment, we perceive happiness, a life filled with great pleasure. Although thousands of bad stuff await us, we&apos;re blind to them.&lt;/p&gt;
&lt;p&gt;Many software companies are built around owning that teeny-tiny moment. Instagram shows excellent moments of people or creates a platform to share happy moments while blinding everyone to the bad stuff happening around them.&lt;/p&gt;
&lt;p&gt;The misperception causes us to become vulnerable to the slightest wrong thing. When we mistakenly recognize that everyone is happy around us, we search for why everyone has a great life that we don&apos;t. When we look for reasons, we start to realize the problems reflecting what we see in others. From there, we put unrealistic goals with the hope of solving the first hypothetical issue that pops up, and as a result, we expect to be happy.&lt;/p&gt;
&lt;p&gt;When we reach these goals, the satisfaction of reaching &lt;em&gt;a&lt;/em&gt; goal blinds us again because, after a short moment, we see another problem and aim for achieving yet &lt;em&gt;another&lt;/em&gt; goal. One goal follows another, and we&apos;re in an infinite goal loop.&lt;/p&gt;
&lt;p&gt;How can we get out of the infinite loop? Like the infinite loops in software engineering, we need a break, but this time from our broken system.&lt;/p&gt;
&lt;p&gt;Being whole and accepting the suffering, problems, and pain around us forces us to change our perspective of accustomed happiness. Instead of hoping to have a life without any issues, we can focus on choosing the particular problems we enjoy tackling and ignoring what social media dictates.&lt;/p&gt;
&lt;p&gt;The definition of &lt;em&gt;a good problem&lt;/em&gt; differs for everyone. Maybe this year we won&apos;t go on a vacation in the Bahamas that we hoped for: is this a good problem to care about? For some, no, because they can choose another destination or not go while living same as before. By looking at the goal and accepting that we will always have problems even if we achieve them, we can change our judgment.&lt;/p&gt;
&lt;p&gt;There is nothing wrong with having goals. It&apos;s the driving force for many people. The tricky part is living with them while expecting significant happiness upon reaching them.&lt;/p&gt;
&lt;p&gt;Goals and happiness are neither mutually inclusive nor mutually exclusive. How they collaborate defines their relationship. When goals become dominant, happiness becomes oppressed because of the nature of never-ending goals. When goals become washy, happiness can shine.&lt;/p&gt;
&lt;p&gt;Choosing good problems brings happiness. When we enjoy solving them, we implicitly foster happiness. Because these problems usually don&apos;t gather around big goals but serve a purpose. For example, I don&apos;t have a goal of being a famous writer. But &lt;a href=&quot;/why-is-writing-important/&quot;&gt;I want to write&lt;/a&gt;; I like the challenges of writing my thoughts and learnings in a notebook every day. It&apos;s damn difficult because I&apos;m writing in my second language, English. But it&apos;s a good problem to deal with, and I enjoy playing with new words and spending an extra hour every morning, and waking up early. Tackling this problem and trying to solve it already makes me happy.&lt;/p&gt;
&lt;p&gt;When &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;I wrote about ditching my goals before&lt;/a&gt;, I mentioned the turtle and the rabbit story. The turtle enjoys beating an arrogant rabbit with tiny steps. The rabbit knows that it will win, so it enjoys taking a nap in the middle of the race. But the turtle is slowly putting in the work by knowing that there is a high probability of failure.&lt;/p&gt;
&lt;p&gt;The question still is that can you be this turtle? If you want to become an Instagram influencer, are you okay dealing with thousands of problems you will face, like getting only 2-3 likes for your posts for over a year? Can you embrace the challenge while knowing you will probably lose the race?&lt;/p&gt;
&lt;p&gt;If you want to have a fit body, will you enjoy carefully selecting every food, going to the gym, and practicing while your body is aching from the previous practice?&lt;/p&gt;
&lt;p&gt;The world and our environment are filled with problems that we cannot solve all the time. If you enjoy solving the kinds of problems I mentioned above, that&apos;s great. If not, maybe you can focus on finding out which issues you will enjoy working on and ignore the rest. Choose which problems &lt;em&gt;you want to&lt;/em&gt; solve, not the one that &lt;em&gt;comes to you&lt;/em&gt; first.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/a-life-without-problems-the-happiness/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/a-life-without-problems-the-happiness/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #9: Personal Ego vs. Team Ego</title><link>https://candost.blog/newsletter/mektup-9/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-9/</guid><pubDate>Thu, 08 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friend,&lt;/p&gt;
&lt;p&gt;Recently, I witnessed a transition from having a high personal ego to a team ego. The individual ego was causing low delivery speed, lack of team spirit, and many conflicts. When the team ego started to beat the personal one, the sun shone again, and the worst team became the best. Today I&apos;m going to talk about the differences, what we did, and how we achieved.&lt;/p&gt;
&lt;p&gt;Team spirit is often referred to as everyone playing with the team, not in the team. Collins dictionary defines team spirit as &quot;the feeling of pride and loyalty that exists among the members of a team and that makes them want their team to do well or to be the best.&quot;&lt;/p&gt;
&lt;p&gt;When team members have a personal ego, they put their best interest on themselves. If everyone starts to behave like they are the most critical person in the team, nobody wants to collaborate. People don&apos;t take &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;criticism&lt;/a&gt; easily and are not open to being influenced. When a person competes with others, nobody helps them. Only when they compete with themselves, everyone helps each other.&lt;/p&gt;
&lt;p&gt;When there is a team ego where everyone is competing with themselves, everyone takes pride in what they do together and wants to present their success to everyone. In sports teams, pride represents itself as competing with other groups, but in software organizations, it is rather feeling an honor and being part of something bigger.&lt;/p&gt;
&lt;p&gt;The proud team usually tends to take pride in the whole company because the entire company represents the product they are building.&lt;/p&gt;
&lt;p&gt;We know examples like Apple in the 90s, where the teams were competing with each other, and the organization was structured according to the product lines. Managers&apos; control over the whole product, from development to sales and marketing, gave birth to many personal ego fights because their products had to be more successful than others.&lt;/p&gt;
&lt;p&gt;When Steve Jobs returned to Apple in 1997, he laid off all high-level managers and changed the organizational structure to functional units in one day. With this structure, only the CEO has control over the entire product line.&lt;/p&gt;
&lt;p&gt;Moving away from personal ego was one of the many reasons behind Apple&apos;s success, and Apple still keeps the same structure. Whenever I talked with Apple engineers at conferences, they were proud of the whole company and being part of the team, even though they didn&apos;t work in every aspect of the product.&lt;/p&gt;
&lt;p&gt;Building a team ego is not an easy task; it has many aspects. But usually, there are small but impactful movements. First and foremost, &lt;strong&gt;&lt;a href=&quot;/have-the-first-win-to-build-team-spirit/&quot;&gt;have a clear team purpose&lt;/a&gt;&lt;/strong&gt;. What is the mission of the team? Why are you together? What are you trying to achieve? Find your clear purpose and write it down in a memorable way.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Celebrate&lt;/strong&gt;. Pride starts with celebrating everything you achieve, whether big or small.&lt;/p&gt;
&lt;p&gt;Look for ways to &lt;strong&gt;create a care mechanism&lt;/strong&gt;. Invest in people. You will be cared for as much as you care for others. It starts with you. You get back what you give.&lt;/p&gt;
&lt;p&gt;These three are the most important ones that apply to every team. Of course, as a team, you will have many ups and downs; how you get through them will define which type of ego you will build.&lt;/p&gt;
&lt;p&gt;That’s it. The weekend is looking over us. Have a nice one!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-9/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-9/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What Hades (The Game) Had Taught Me</title><link>https://candost.blog/what-hades-the-game-had-taught-me/</link><guid isPermaLink="true">https://candost.blog/what-hades-the-game-had-taught-me/</guid><description>Hades taught me to be beaten up by trying to do something every day but never give up. In every attempt, I am stronger than before.</description><pubDate>Tue, 06 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The impact of the internet on our lives is incredibly daunting. Social media bombards us with many beautiful lives of others, and we assume everyone lives in prosperity while we&apos;re suffering every day. On my side, although my life is not full of the most extraordinary things, I&apos;m not miserable; I&apos;m happy. However, I also have struggles every day, every week, like everyone else I know. One of these struggles led me to play video games again.&lt;/p&gt;
&lt;p&gt;I stopped playing games during the last couple of years to focus on learning, books, and self-improvement. I saw the games as a waste of time. I couldn&apos;t imagine myself playing them for hours and hours. Then, I had burnout 😅 . During my sick leave, I looked for things to distract myself, and games were the perfect companion for it. It&apos;s not like watching TV series or movies. There is constant interaction, micro muscle movements, and the focus helps distract the mind from unpleasant thoughts. In these times, I met a game called Hades.&lt;/p&gt;
&lt;p&gt;Since I have a 2014 Macbook Pro as a personal computer, I didn&apos;t have various options to choose games, but Hades worked perfectly. All game content is based on Greek mythology. In Hades, you&apos;re playing Hades&apos; son, Zagreus. Zagreus is trying to escape from the Underworld while Hades stops him by putting foes in his way. Zagreus kills the opponents to run, but if he dies, he goes back to the beginning, the Underworld. Since Zagreus is immortal as a god and cannot die again in the Underworld, there is no actual death but only going back.&lt;/p&gt;
&lt;p&gt;The most exceptional part of the game, also one of the most significant learnings I have, is that Zagreus collects gems while fighting foes and uses them to improve his skills. When he starts over, he is a little stronger than before. To be able to escape, Zagreus needs many attempts to sharpen his skills. That&apos;s the factual reality. Zagreus tries, fails, and starts from the beginning, but a little more powerful every time.&lt;/p&gt;
&lt;p&gt;Zagreus had taught me, even before reading James Clear&apos;s Atomic Habits, &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;to stay in the game&lt;/a&gt;. Playing the game of life is more interesting than winning big-but-not-so-significant goals. I think it is more complicated and fun. What sacrifices do we need to make? Can we really get up and do something every single day for the rest of our lives without pausing a day? Can we consciously accept this suffering?&lt;/p&gt;
&lt;p&gt;Happiness without suffering is a big lie. I&apos;m not saying that if you do something every day and you will get something more extraordinary. I&apos;m saying that it&apos;s okay not to get back anything more significant. I&apos;ve made my peace with this suffering, and that makes me happy. But similar to Zagreus, I choose what to suffer from. For example, I deleted my Instagram and Facebook accounts while acknowledging the pain of not knowing what my friends and family do (or show off, ahem) every day. Does this decision cause me to have fewer connections with my friends? Yes. Does it contribute to my relationship quality by having more profound and high-quality conversations? Hell, yeah.&lt;/p&gt;
&lt;p&gt;What I&apos;ve learned by playing games was unimaginable to me. I always thought of games as a waste of time. I was wrong (and my dear friends, please accept my sincere apologies for being a jackass and undermining your thoughts on gaming). One game made me realize many essential things that real life couldn&apos;t. Hades threw the reality on my face that I couldn&apos;t see even when my friends, family, and the therapist were explicating to me.&lt;/p&gt;
&lt;p&gt;Now, I &lt;a href=&quot;/why-is-writing-important/&quot;&gt;write every day&lt;/a&gt;. Of course, it&apos;s full of pain to wake up at 6 a.m. every single day (yes, Sundays and holidays too). But I feel fulfilled because I chose this, not because somebody told me.&lt;/p&gt;
&lt;p&gt;You might think that I&apos;m suggesting you suffer or do one thing every day. I don&apos;t. But I do have one suggestion: play games, especially Hades.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S.&lt;/strong&gt;: I still couldn&apos;t escape from the Underworld in the game. I&apos;m curious about what will happen.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/what-hades-the-game-had-taught-me/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/what-hades-the-game-had-taught-me/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Explicit Disagreement is Better Than Implicit Misunderstanding</title><link>https://candost.blog/explicit-disagreement-is-better-than-implicit-misunderstanding/</link><guid isPermaLink="true">https://candost.blog/explicit-disagreement-is-better-than-implicit-misunderstanding/</guid><description>Expressing disagreements is not always pleasant, but they might be better than misunderstandings. In some cultures, it causes miscommunication; in some of them doesn&apos;t.</description><pubDate>Wed, 30 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Everyone has their own rules in their heads. We interpret the situations and evaluate people&apos;s behaviors and events with these rules. Although what everyone sees is the same, understanding differs. These differences and personal rules create disagreements and unique moments. Especially in organizations, we observe that people react to any change differently. In these moments, many misunderstandings lead to conflicts that no one could&apos;ve seen coming.&lt;/p&gt;
&lt;p&gt;Many misunderstandings and disagreements occur because the rules in our heads are different than others. But, more importantly, or interestingly, we see our own rules as not &lt;em&gt;our&lt;/em&gt; rules but &lt;em&gt;the&lt;/em&gt; rules. This perception causes us not to see or understand what other people&apos;s thoughts are. We observe their behaviors and try to understand their intentions with our rules, not theirs. Also, when there is a situation, we interpret available information with the same rules. The tricky part is while interpreting, we don&apos;t observe our behavior but observe others&apos;. We watch everything except our behavior and interpret them with our rules, which causes many implicit misunderstandings.&lt;/p&gt;
&lt;p&gt;Implicit misunderstandings develop when two people approach one situation in their own way. The first step to disclosing this misunderstanding is not creating empathy directly but understanding what we are looking at. What&apos;s the available data in front of us? We need to make sure that we understand the data in the same way. Only then can we work on empathy and focus on understanding each other. Now you probably ask, what does it do with explicit disagreement?&lt;/p&gt;
&lt;p&gt;The case is we rarely work like this and understand the data in front of us. We genuinely have implicit misunderstandings both in our teams and organizations and also in our private lives. We often don&apos;t even see that there is a misunderstanding. On the other side, in explicit disagreement, we disclose our own understanding of the situation and how we look at the data. When there is a direct disagreement, we can work on it. It doesn&apos;t mean that explicit disagreement won&apos;t lead to significant conflicts or be solved quickly. But, contrary to implicit misunderstandings, openly disagreeing creates a chance for us to analyze what exactly is wrong. If we invite a moderator to the conflict, it can be solvable.&lt;/p&gt;
&lt;p&gt;I am not arguing that we should have more explicit disagreements than implicit misunderstandings. Because in some cultures, people avoid confrontation at all costs. For these cultures, things are better when they are not said. Disagreement breaks harmony, which is an essential part of collaboration. So in these cultures, implicit misunderstandings are better in a way, and they resolve in other ways with time.&lt;/p&gt;
&lt;p&gt;There is one place where explicit disagreements are better than implicit misunderstandings while exchanging feedback. Especially when we&apos;re receiving feedback, we should be sure that we understand the feedback we&apos;re getting. Misinterpretation of the feedback causes more problems. We might not acquiesce in the perception of another person, but we can fathom what they mean. Pulling the feedback and grasping the judgment and knowledge of the other person is difficult. But in that case, we shouldn&apos;t leave with confusion and false impression. The feedback we are getting should be crystal clear, and we must align on the meaning of the available data in the same way.&lt;/p&gt;
&lt;p&gt;The complexity of group and relationship dynamics makes resolving disagreements and misunderstandings difficult. The craft is choosing not the best way but figuring out the least worst option and changing the strategy if/when it is necessary. If we are receiving feedback, we should seek an understanding of how people perceive our behaviors. Because we usually don&apos;t think about our behaviors, we concentrate on our thoughts, feelings, and intentions. Correctly analyzing the situation and finding the best strategy is difficult. But with self-awareness, curiosity, and mindfulness, we can choose the least worst one.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/explicit-disagreement-is-better-than-implicit-misunderstanding/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/explicit-disagreement-is-better-than-implicit-misunderstanding/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Tips for Managing Partially Distributed Teams</title><link>https://candost.blog/managing-partially-distributed-teams/</link><guid isPermaLink="true">https://candost.blog/managing-partially-distributed-teams/</guid><description>Either managing or being part of a partially distributed team is difficult. It requires a mixture of sync and async processes to prevent low performance, conflicts, and burnout.</description><pubDate>Mon, 28 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I discussed with a friend who is preparing to lead a partially distributed team. Like many companies and leaders, my friend also faces having a somewhat remote but partly on-site team. So here, my suggestions to my friend about overcoming some of the difficulties of leading these partially distributed teams.&lt;/p&gt;
&lt;p&gt;Distributed or on-site teams are fantastic. You can go with either side; it doesn&apos;t matter which one; they are great because the processes and organization work similarly all the way through. In partially distributed teams, you have people working from the office and other people from their houses. There is a mixture of async and sync processes. Juggling &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;between them&lt;/a&gt; is challenging. The office employees often prefer synchronous methods because that&apos;s the nature of seeing everyone&apos;s faces. Remote employees can adapt synchronicity as well, but it&apos;s not ideal and can lead to stress and burnout. That&apos;s why &lt;strong&gt;many existing remote companies limit sync communication to certain time boxes&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The major problem with partially distributed teams is that one side gets more advantage than the other: often the office because of face-to-face communication and spontaneous encounters. This situation is one of the concerns of my friend as well. Employees in the office having more interaction is natural. However, if the team doesn&apos;t have proper processes, the remote employees might feel excluded. Involving remote employees in the processes shouldn&apos;t be an afterthought. For example, when the on-site team members want to spontaneously talk about a problem to solve it quickly, they use sync communication. Most often than not, they usually miss getting in touch with remote colleagues. &lt;strong&gt;Without setting up processes, the remote employees will be left out.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Day-to-day social interactions are not the problem of remote employee relationships but making the business depend on personal relationships is. If the processes, business meetings, team building activities, promotions favor in-person advantages and relationships, they create problems for remote employees. If the part of the team works like all the team is in the office, then the problem arises. &lt;a href=&quot;/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/&quot;&gt;One of the intricacies is hybrid meetings&lt;/a&gt;: one or two people remotely join while others join in a conference room together. To create equity, &lt;strong&gt;everyone should join the meeting remotely from their computers if one person is remote&lt;/strong&gt;. The team shouldn&apos;t leave someone out and turn their life decisions or obligations into a disadvantage. Requiring everyone to join remotely might not be convenient in the office, but the team has to put in the effort to have the best collaboration.&lt;/p&gt;
&lt;p&gt;Partially distributed teams use partially async, partially sync communication. Slack is both the most prominent supporter and also the biggest enemy of &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;effective communication&lt;/a&gt; in these teams. If not used correctly, the problems await. Slack is for short and straightforward interactions. Although it has rich features, the information easily gets lost. Most companies use it to communicate everything in sync model. Then it becomes a burden and creates &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;information overload&lt;/a&gt; and FOMO. The complexity of Slack and the nature of mixed communication are hard to manage. The office has the advantage of face-to-face communication, and it&apos;s easy to replicate it in Slack via direct messages. However, when many things depend on direct messages, remote employees start to suffer. When not careful, &lt;a href=&quot;/communicating-decisions-in-the-organizations/&quot;&gt;decisions&lt;/a&gt; and small questions slide out from Slack to face-to-face interactions, and as a result, you get all the downsides of the tool. But it is solvable by &lt;strong&gt;using &lt;a href=&quot;/how-to-organize-your-engineering-teams-documents/&quot;&gt;long-form&lt;/a&gt; but concise &lt;a href=&quot;/why-is-writing-important/&quot;&gt;writing&lt;/a&gt; and keeping Slack as a discussion, broadcasting, and socialization tool, not as information storage&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;My friend&apos;s other concern was keeping the morale and team spirit high. Some companies organize regular social events with teams to achieve this. These events can happen in the partially distributed teams in two ways: online and a few times a year on-site. Many remote-working companies such as Buffer, GitLab, Zapier gather their teams together once or twice a year for a couple of days to get to know each other better. &lt;strong&gt;Choose your rhythm; mix both of them but don&apos;t leave anyone out&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Managing or being part of a partially distributed team is difficult. It requires mindfulness, extra efforts, and solid processes. &lt;strong&gt;If you can choose to be entirely on-site or fully remote, go with using one of them.&lt;/strong&gt; It will be more efficient, and you will be more effective in communication. However, choosing one of them also has advantages and disadvantages; be mindful about your choice.&lt;/p&gt;
&lt;p&gt;Create inclusive processes. &lt;strong&gt;Don&apos;t unwittingly fall into the office practices during remote work.&lt;/strong&gt; &lt;a href=&quot;/how-to-organize-your-engineering-teams-documents/&quot;&gt;Advocate&lt;/a&gt; &lt;a href=&quot;/why-is-writing-important/&quot;&gt;writing&lt;/a&gt;, hold &lt;a href=&quot;/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/&quot;&gt;everyone-is-remote or on-site meetings instead of hybrid ones&lt;/a&gt;. Either define core working hours for sync communication or go with a fully distributed approach. If you leave these decisions to form naturally, you invite chaos. Your team members can have low performance, many struggles, &lt;a href=&quot;/how-to-solve-and-prevent-conflicts/&quot;&gt;conflicts&lt;/a&gt;, burnout, or they might even leave.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/managing-partially-distributed-teams/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/managing-partially-distributed-teams/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #8: Architectural Thinking</title><link>https://candost.blog/newsletter/mektup-8/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-8/</guid><pubDate>Thu, 24 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey! How are you doing?&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;/newsletter/mektup-7/&quot;&gt;the previous Mektup&lt;/a&gt;, I talked about the role of a software architect and promised to explain the technical breadth, mentality, and knowledge styles that architects should seek. Now let&apos;s talk a bit about it.&lt;/p&gt;
&lt;p&gt;Mark Richards and Neil Ford use the knowledge pyramid to explain the difference.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/The_knowledge_pyramid.jpg&quot; alt=&quot;The Knowledge Pyramid&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On the top layer, we have the stuff we know: our knowledge and expertise. In the mid-layer, we have the things we know that we don&apos;t know: the things we know exist, we&apos;ve heard them or used them, but we don&apos;t have any expertise. The last but the most significant portion of our knowledge is the stuff we even don&apos;t know exists; we simply are not aware of them.&lt;/p&gt;
&lt;p&gt;Developers spend their life whetting their expert skills by growing their knowledge on the subject, a.k.a. the top layer in the pyramid--technical depth. The bigger the top layer, the more expert the developer is. For architects, the second layer is more important than the top. Here the technical breadth comes in; how much the middle layer expands into the bottom layer defines the breadth. Both top and mid-layers are essential for an architect, but they sacrifice some parts of their expertise to expand their portfolio. They learn new things but don&apos;t get any deep knowledge of them. Because in the architect role, it&apos;s more beneficial to have a broader understanding of various technologies than to have expertise in one or two.&lt;/p&gt;
&lt;p&gt;The transition in knowledge acquirement is where most developers struggle while becoming architects because they don&apos;t want to leave their expertise behind. The case is that the stuff you know is also the stuff you maintain, and architects have no time to broaden their knowledge and keep their expertise. They can still have expertise in one or two languages or frameworks, but these technologies mostly stay at the hobby level. Architects need to acquire knowledge about system design, architectural characteristics, and architectural styles, but not how to implement user authentication in NodeJS. They might still learn it; it&apos;s okay to have deep knowledge of one or two topics. But it&apos;s not required.&lt;/p&gt;
&lt;p&gt;The technical breadth vs. technical depth is only one small part of the architectural thinking and software architect&apos;s job. I&apos;m preparing more detailed stuff for architectural thinking (either a podcast episode or a blog post). Before letting you wait for that, I want to share a sneak peek with you. &lt;a href=&quot;https://github.com/candostdagdeviren/liebling/raw/1de55e2669baf0c5b832dc6558f03cfc68a79e5c/assets/images/Mind%20Map%20-%20System%20and%20architectural%20thinking.jpg&quot;&gt;Here you can find out the&lt;/a&gt; &lt;em&gt;&lt;a href=&quot;https://github.com/candostdagdeviren/liebling/raw/1de55e2669baf0c5b832dc6558f03cfc68a79e5c/assets/images/Mind%20Map%20-%20System%20and%20architectural%20thinking.jpg&quot;&gt;work-in-progress&lt;/a&gt;&lt;/em&gt; &lt;a href=&quot;https://github.com/candostdagdeviren/liebling/raw/1de55e2669baf0c5b832dc6558f03cfc68a79e5c/assets/images/Mind%20Map%20-%20System%20and%20architectural%20thinking.jpg&quot;&gt;mind map I am using for the preparation of Architectural Thinking&lt;/a&gt;. You will see that technical breadth is only one part of it.&lt;/p&gt;
&lt;p&gt;That&apos;s it. If you think I missed something in the mind map or would love to share your thoughts, you know how to reach me: just hit the reply button below.&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;p&gt;​&lt;strong&gt;P.S.&lt;/strong&gt; I&apos;m a fan of &lt;a href=&quot;https://fs.blog/&quot;&gt;Farnam Street&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The Best Thing I Read In the Last Two Weeks&lt;/h2&gt;
&lt;p&gt;​&lt;a href=&quot;https://fs.blog/2021/06/availability-bias-cognitive-distortion/&quot;&gt;The Availability Bias: How to Overcome a Common Cognitive Distortion&lt;/a&gt;​&lt;/p&gt;
&lt;p&gt;&quot;The availability heuristic explains why winning an award makes you more likely to win another award. It explains why we sometimes avoid one thing out of fear and end up doing something else that’s objectively riskier. ... It explains why the five people closest to you have a big impact on your worldview. ... And it explains why bad publicity can still be beneficial in the long run.&quot;&lt;/p&gt;
&lt;p&gt;The article reminded me (and also mentions) of the availability heuristic that Daniel Kahneman mentions in Thinking, Fast, and Slow. The book is fantastic, but it&apos;s hard-read. On the other hand, the article is excellent and full of explanations and recommendations.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-8/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-8/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#18: Managing Organizational Changes with Jim Allen</title><link>https://candost.blog/podcast/18-managing-organizational-changes/</link><guid isPermaLink="true">https://candost.blog/podcast/18-managing-organizational-changes/</guid><pubDate>Tue, 22 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;18: Managing Organizational Changes with Jim Allen&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/18-managing-organizational-changes&quot;&gt;https://candost.substack.com/p/18-managing-organizational-changes&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/18-managing-organizational-changes/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/18-managing-organizational-changes/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why are Hybrid Meetings Terrible? Remote vs. On-site Meetings</title><link>https://candost.blog/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/</link><guid isPermaLink="true">https://candost.blog/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/</guid><description>Have your team meetings as either remote meetings or on-site meetings. Don&apos;t have hybrid meetings. If you do, people in the meetings will have a bad experience.</description><pubDate>Tue, 15 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For two years, I have worked as the only remote employee on the team. Right before the pandemic, I was still working &lt;a href=&quot;/managing-partially-distributed-teams/&quot;&gt;partially remotely&lt;/a&gt; (sometimes in the office, sometimes at home). Our meetings, such as daily stand-ups, retrospectives, and planning, were in a conference room. When I was in the office, everything was good, but when I was working remotely, I didn&apos;t have the best experience. I was on the TV screen in the conference room (and sometimes on the laptop screen because the TV didn&apos;t work). Besides technical problems such as a bad internet connection and broken TV setup, I had other more significant issues that annoyed me a lot.&lt;/p&gt;
&lt;p&gt;When there is one camera--that no one looks at it directly--at the top of the big screen, the camera captures everyone simultaneously. Whenever someone talks, you need to put extra effort into identifying who is speaking without seeing their face, even though you know their voice. Meanwhile, you see most of the people from the profile, not the front. Think about TV shows where a couple of people are discussing a political topic. The director shows their seating as a group from time to time during the show.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/political-discussion.jpg&quot; alt=&quot;Political Debate&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But throughout the show, the director uses &lt;a href=&quot;https://www.masterclass.com/articles/film-101-what-is-a-close-up-shot-how-to-creatively-use-a-close-up-camera-angle-to-convey-emotion&quot;&gt;close-up shots&lt;/a&gt; of each person separately and sometimes even assigns a personal camera because TV shows want you to feel included in the discussion. When you see people individually, you think they are talking to you. Humans evolved to read the other person&apos;s feelings and micro gestures to organize groups and survive together. That&apos;s why humans are so good at reading the smallest mimics on the face, to collaborate better. In the end, with the help of the evolution and the director&apos;s camera usage, you stay engaged with the show. In hybrid meetings with only one camera, you cannot read the body language, mimics on the faces, and micro-gestures. There are solutions like &lt;a href=&quot;https://www.cisco.com/c/en/us/products/collaboration-endpoints/telepresence-speaker-track-60/index.html&quot;&gt;expensive teleconference cameras&lt;/a&gt;, but they are still far from being as efficient as individual cameras. As a remote person, you feel like an outsider even though you are bonded with your team.&lt;/p&gt;
&lt;p&gt;Sometimes the team enters the room in a highly emotional state, either happy, sad, or nervous. They carry these emotions because they are still together and cannot easily switch to the meeting mode. You, as an outsider remote team member, don&apos;t understand it because you cannot read the air in the room. So you ask what&apos;s going on. But everyone knows that when someone explains the joke later, it&apos;s never as funny as before. Also, if they are sad or nervous, they often struggle to explain and leave the topic out of the room because describing emotions is difficult. The problem is that &lt;strong&gt;they carry the emotions to the meeting but not the reason or the situation that caused it&lt;/strong&gt;. On the other side of the screen, you have no idea what&apos;s going on.&lt;/p&gt;
&lt;p&gt;We can argue that it will be the same when everyone joins the meeting remotely. But emotional dynamics are different. People affect each other&apos;s emotions when they are together. &lt;a href=&quot;https://www.researchgate.net/publication/336870404_Collective_Emotions&quot;&gt;Collective emotions&lt;/a&gt; have a more intensive impact than individual emotions. So a person has a lower magnitude of emotion when joining the meeting alone rather than joining it with a group.&lt;/p&gt;
&lt;p&gt;With many companies going into a hybrid model, they will face these challenges. If they are not careful, they will encounter many &lt;a href=&quot;/how-to-solve-and-prevent-conflicts/&quot;&gt;conflicts&lt;/a&gt;, employee disengagement, and a higher turnover rate. Companies aim to create an environment with fewer conflicts, higher engagement, and high employee retention. Since they cannot put many cameras and set up systems in the conference rooms to have close-up shots of individuals, they should hold all the meetings either on-site or fully remotely. For remote, &lt;strong&gt;when there is one remote person, everyone should join the meeting remotely from their own computers even though most of the team is in the office&lt;/strong&gt;. The people in the office can be in the same room while they are using headsets. For some convenience, it&apos;s okay to leave one microphone in the conference room unmute but keep the individual cameras open. There is no other way around it; don&apos;t have hybrid meetings.&lt;/p&gt;
&lt;p&gt;At first, it can, and will, feel awkward to join meetings remotely while you are in the same office. But you need equity, not equality. Here equality is giving everyone a choice according to their preference. Equity is asking everyone to join the meeting remotely when there is only one remote worker. The people in the office might not have the easiest time, but the experience will be the same for everyone &lt;strong&gt;in the meeting&lt;/strong&gt;. Everyone shares emotions and body language and, as a result, understands each other better because everyone gets a personal camera with a close-up shot during the whole meeting.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/hybrid-all-remote-onsite.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/why-are-hybrid-meetings-terrible-remote-vs-on-site-meetings/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #7: The Role of A Software Architect</title><link>https://candost.blog/newsletter/mektup-7/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-7/</guid><pubDate>Thu, 10 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Happy Thursday!&lt;/p&gt;
&lt;p&gt;I wanted to talk about software architecture for a while but never felt ready. This is the fifth version of this email. I wrote it in four pages at first. But over the weeks, I learned that the act of writing is not just writing page after page; it&apos;s rewriting and deleting unnecessary words. Four pages of thoughts and research condensed into less than a page. Okay, let&apos;s dive into the role of a software architect.&lt;/p&gt;
&lt;p&gt;💁 Being a great software engineer doesn&apos;t make you a good architect. Although you might be good at designing architecture in your software projects, the software architect is a different role with various responsibilities and expectations. If you are thinking of becoming an architect, you should know what you are getting at.&lt;/p&gt;
&lt;p&gt;💻 As a software engineer, the projects you focus on are only part of the business domain. You focus on developing and architecting a specific project or a couple of services. As a result, you gain new knowledge around a limited area. As a software architect, your role and expectations are broader.&lt;/p&gt;
&lt;p&gt;🌆 I will borrow the analogy from Erik Doenenburg to better explain the difference. Software architects are more like city planners than architects. City planners design cities by looking at the available information, citizens&apos; needs for today, and expectations from tomorrow. If you&apos;ve played Cities: Skylines or SimCity before, you will understand immediately. In these games, the goal is to plan the best cities. You create zones and define them as industrial, commercial, and housing areas while building infrastructure and services around them. But you never specify a building. A city planner only establishes the limitations and doesn&apos;t define the inner details of facilities. A software architect does the same for services and apps; defines boundaries for individual services, plans how different services will sit, and work together in the big picture. How an architect does this?&lt;/p&gt;
&lt;p&gt;Sam Newman frames an architect&apos;s job in three categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Strategic goals&lt;/li&gt;
&lt;li&gt;Principles&lt;/li&gt;
&lt;li&gt;Practices&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;💡 The company defines the strategic goal, and the architect focuses on designing systems aligned with it. Strategy drives the architect&apos;s work. Principles are the rules that the architect prescribes to align with what everyone will be doing. Practices are defailed and practical guides to ensure everyone is following the principles. As you see, an architect&apos;s job is not only technical but also includes leading and guiding. Designing systems architecture requires both technical capabilities and interpersonal skills. Defining principles and guiding software engineers with practices involve navigating politics and communication.&lt;/p&gt;
&lt;p&gt;If you want to become a software architect:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Grow your technical knowledge and develop your interpersonal skills together.&lt;/li&gt;
&lt;li&gt;Learn how to convince, mentor, and coach people, and discover how to give and receive effective feedback.&lt;/li&gt;
&lt;li&gt;Explore different strategies to communicate with a diverse group of people and master writing to create better documentation to reflect your ideas and plans better.&lt;/li&gt;
&lt;li&gt;When you focus on the technical side, move your target from gaining technical depth in one or two specific areas to progressing through having technical breath. You won&apos;t need in-depth knowledge about one language or framework; instead, learn concepts, programmatic approaches, and different architectural styles.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In the upcoming Mektups, I will focus on the difference between technical breadth and depth and how you can boost your architectural thinking.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-7/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-7/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Can You Fire Your Colleague?</title><link>https://candost.blog/can-you-fire-your-colleague/</link><guid isPermaLink="true">https://candost.blog/can-you-fire-your-colleague/</guid><description>I have faced this question recently, and I went silent. I knew that laying off people or firing someone specific are unpleasant moments of management.</description><pubDate>Thu, 03 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I faced this question recently while we were talking about leadership qualities and skills with a friend. The underlying reasoning was focused on one of the leadership archetypes, harsh, authoritarian, and ruthless leaders. After the question, I went silent. During my long silence (two weeks), I challenged both the question and the leadership archetype. As a result, what I think about leadership might differ from what some people think.&lt;/p&gt;
&lt;p&gt;The long-lasting tough-guy-leadership approach cannot survive anymore, especially in a field with rapid change, while some professions are in high demand, such as software engineering. Many problems are caused by leaders trying to be ruthless when it&apos;s not in their nature. There are a lot of people who imitate old-fashioned leaders to learn from them. If you are one of them, be careful. If the imitation doesn&apos;t match your personality, you will create complicated situations. Impersonation often feels unnatural and confuses the people you lead. In our talk with Suzan, she mentioned that if you are telling yourself, &quot;That&apos;s what true leaders do,&quot; or &quot;Real leaders are X, and they do Y.,&quot; then you are on a dangerous path where you don&apos;t listen to yourself. While you are not entirely authentic, how can you make accurate decisions? For example, suppose you imitate intent-based leadership while you are hands-on on every job and micromanaging. The imitation doesn&apos;t match your personality and your approach. You need to adjust either yourself or your approach. Having this conflict damages countless decisions, including firing an employee.&lt;/p&gt;
&lt;p&gt;Firing someone is one of the unpleasant sides of management and needs to be done, hopefully rarely. There is no secret formula to make the firing decision and conversations pleasant because each situation is unique. Mismatching expectations, absence of employee progress despite &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;constructive feedback&lt;/a&gt; and coaching, and lack of motivation might be some of the problems that lead to firing. You cannot practice these situations; they are rare. Everyone avoids them regardless of their leadership style.&lt;/p&gt;
&lt;p&gt;If I also avoid these situations, why do I think this question a lot? I don&apos;t look like a relentless leader from the outside because I care about people and business.&lt;/p&gt;
&lt;p&gt;The care is tricky. You get the best employees from people who care about the job, colleagues, and the business. Once they put their energy into growing the team and the company, their impact outgrows. Caring doesn&apos;t mean that they are weak and avoid difficult conversations and decisions. On the contrary, they do the job in the best interest of the people and the business. For example, suppose a colleague is disengaged, has terrible performance reviews, and doesn&apos;t show improvements although receiving accurate feedback. In that case, these caring employees can delicately handle the situation because they care about both sides&apos; interests.&lt;/p&gt;
&lt;p&gt;On the other hand, they will also challenge the decisions to make sure it&apos;s in the correct direction and &lt;a href=&quot;/communicating-decisions-in-the-organizations/&quot;&gt;appropriately communicated&lt;/a&gt;. These complex decisions are often obvious, but you will find these employees on your side offering a hand to challenge your thinking if you want to make sure you make the right decision.&lt;/p&gt;
&lt;p&gt;To be authentic and take actions that match your style, listen to yourself. Natural toughness comes from doing what you are saying and being consistent in actions and behaviors, not imitating and acting like a person you are not.&lt;/p&gt;
&lt;p&gt;When it comes to my answer: Yes, I can. But I can decide to fire someone in a way matching with my personality. Before the decision, I will give accurate and time-bounded feedback and let the employee know that it&apos;s coming unless they improve or change. If there is no progress, it will be a sharp but correct decision.&lt;/p&gt;
&lt;p&gt;What are your criteria for making this decision? For example, in which situations can you go to bed without feeling the conflict between you and your inner self? What does it take for you to feel that?&lt;/p&gt;
&lt;p&gt;I didn&apos;t talk about communicating these difficult decisions with the organization here, but &lt;a href=&quot;/communicating-decisions-in-the-organizations/&quot;&gt;I wrote about it before&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/can-you-fire-your-colleague/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/can-you-fire-your-colleague/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#17: Banish Your Inner Critic with Denise Jacobs</title><link>https://candost.blog/podcast/17-banish-your-inner-critic/</link><guid isPermaLink="true">https://candost.blog/podcast/17-banish-your-inner-critic/</guid><pubDate>Tue, 01 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;17: Banish Your Inner Critic with Denise Jacobs&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/17-banish-your-inner-critic-with-638&quot;&gt;https://candost.substack.com/p/17-banish-your-inner-critic-with-638&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/17-banish-your-inner-critic/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/17-banish-your-inner-critic/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building Microservices: Splitting the Monolith</title><link>https://candost.blog/books/splitting-the-monolith/</link><guid isPermaLink="true">https://candost.blog/books/splitting-the-monolith/</guid><description>Don&apos;t split the monolith for the sake of having microservices. Use incremental approach.</description><pubDate>Fri, 28 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This post is Chapter 5 of my notes from the book &lt;a href=&quot;https://samnewman.io/books/building_microservices/&quot;&gt;Building Microservices: Designing Fine-Grained Systems&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;/books/microservices-and-their-benefits/&quot;&gt;Chapter 1: Microservices and Their Benefits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-evolutionary-architect/&quot;&gt;Chapter 2: The Evolutionary Architect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/how-to-model-microservices/&quot;&gt;Chapter 3: How to Model Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-1/&quot;&gt;Chapter 4, Part 1: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-2/&quot;&gt;Chapter 4, Part 2: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/splitting-the-monolith/&quot;&gt;Chapter 5: Splitting the Monolith&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;Identifying the bounded contexts is the first place to start. We want to identify the seams that can turn into service boundaries. When we look at the codebase, we sometimes easily separate some sections. Some of the code doesn&apos;t easily separate from other parts. This code will point out the bounded context we missed.&lt;/p&gt;
&lt;p&gt;Don&apos;t split the monolith for the sake of having microservices. Use incremental approach. It will help you learn more about microservices as you go and will limit you from making mistakes. Think about how to get the most benefit from some part of the codebase by separating it.&lt;/p&gt;
&lt;h2&gt;The Reasons to Split the Monolith&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Pace of Change&lt;/li&gt;
&lt;li&gt;Team Structure&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Technology&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Refactoring Databases - Staging The Break&lt;/h2&gt;
&lt;p&gt;Separate the schema but keep the service together. After that, split the application code into separate microservices.&lt;/p&gt;
&lt;h2&gt;Transactional Boundaries&lt;/h2&gt;
&lt;p&gt;Transactions are useful. They enable us to connect events together and help us to manage the state more efficiently. Especially in database operations, they allow us to update multiple tables at once, knowing that if anything goes wrong, everything will be rolled back so that we won&apos;t end up with an inconsistent state.&lt;/p&gt;
&lt;p&gt;What happens when we have to split a single transaction in a monolithic schema while separating databases, and something goes wrong?&lt;/p&gt;
&lt;p&gt;Imagine two database operations in one transaction happening sequentially. We split our database schema into two schemas. Now we have two separate transactions. If the first transaction fails, we cancel the whole operation. But what do we do if the first one is successful and the second one fails? There are a couple of strategies.&lt;/p&gt;
&lt;h3&gt;Try Again Later&lt;/h3&gt;
&lt;p&gt;If the completion of the first operation is enough for now, we can set up a system to try the second operation later. We assume that the system will eventually be consistent rather than ensuring that the system is in a consistent state.&lt;/p&gt;
&lt;h3&gt;Abort the Entire Operation&lt;/h3&gt;
&lt;p&gt;We can abort the entire operation. Our first transaction was successful. Therefore, we need to unwind this operation to go back to a consistent state. We have to issue a compensating transaction by kicking off a new transaction to roll back what just happened.&lt;/p&gt;
&lt;h3&gt;Distributed Transactions&lt;/h3&gt;
&lt;p&gt;In this method, there is one transaction manager that orchestrates the various transactions. It works with a two-phase commit. The first phase is voting. The manager asks all participating local transactions to give a &quot;Yes&quot; signal that indicates the operation can go ahead. If the manager gets yes from all participants, it tells all of them to perform. Getting one no vote is enough to cancel the operation, and the manager sends a rollback message to all parties.&lt;/p&gt;
&lt;p&gt;There are various problems with this method. What happens if the transaction manager goes down? The whole system is blocked. If one local transaction fails to give a vote, everything is blocked. And also, what happens in a case where a local transaction gives a yes vote but the actual commit fails?&lt;/p&gt;
&lt;p&gt;Another problem is resource locks. Pending operations can lock the resource and lead to contention and making scaling systems much more difficult.&lt;/p&gt;
&lt;p&gt;If you choose this strategy, do a lot of research first, A LOT! Don&apos;t reinvent the wheel here. Use existing distributed transaction implementations.&lt;/p&gt;
&lt;h3&gt;So What to Do?&lt;/h3&gt;
&lt;p&gt;If you have a state that really wants to stay consistent, do everything you can to avoid splitting it up in the first place. Do whatever you can. If you need to split, move away from a purely technical view of the process and create a concept to represent the transaction itself.&lt;/p&gt;
&lt;h2&gt;Data Pumps&lt;/h2&gt;
&lt;p&gt;In reporting or analytics systems, we can pump the data to these systems rather than pull data from other systems.&lt;/p&gt;
&lt;p&gt;The team that manages the services should build and manage the data pump as well. It can be straightforward. The pump&apos;s job is mapping from the internal database to reporting schema. Since the data pump and the service work closely together, version-control them together, and deploy them together. Don&apos;t open access to the schema outside of the service team.&lt;/p&gt;
&lt;h2&gt;Event Data Pump&lt;/h2&gt;
&lt;p&gt;We can emit events to our own database. The event data pump can use state changes in the services to populate a database. If we also store which events are processed, we can only send deltas to our database to be more efficient. With this approach, we decouple the underlying service and our reporting. We only bind events emitted by the service.&lt;/p&gt;
&lt;p&gt;The downside of this approach is the disability to scale as well as a data pump for larger volumes of data that can operate on the database level because all the required information must be broadcast as events.&lt;/p&gt;
&lt;h2&gt;Cost of Change&lt;/h2&gt;
&lt;p&gt;Every change comes with a cost. When we split the monolith, we are making bigger changes in the system. It&apos;s natural to make mistakes, and we should embrace them. On top of that, we need to understand how best to mitigate the costs of these mistakes.&lt;/p&gt;
&lt;p&gt;Where is the cost of mistakes and cost of change minimum? In the design stage: the whiteboard (or paper). Run the use cases across your design on the whiteboard and see your flaws the earliest.&lt;/p&gt;
&lt;p&gt;Write down the responsibilities, capabilities, and collaborators of service to index cards (similar to class-responsibility-collaboration cards) and work through your use cases using these cards.&lt;/p&gt;
&lt;h2&gt;Understanding Root Causes&lt;/h2&gt;
&lt;p&gt;The key is knowing it needs to be split before the split becomes too expensive.&lt;/p&gt;
&lt;p&gt;Splitting the monolith might be a big and challenging job. One side of the problem is not knowing where to start. In this chapter, we learned some ideas about where we can begin the split.&lt;/p&gt;
&lt;p&gt;If we think we are making something right but face difficulties, we should strive to make things easier. Look for libraries and lightweight service frameworks to reduce the cost of creating a new service.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/splitting-the-monolith/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/splitting-the-monolith/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #6: Why should you deploy your code in smaller chunks and release software often?</title><link>https://candost.blog/newsletter/mektup-6/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-6/</guid><pubDate>Thu, 27 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hello friend!&lt;/p&gt;
&lt;p&gt;I hope you had a great month. Summer is coming, and I&apos;m looking forward to going out to nature more.&lt;/p&gt;
&lt;p&gt;In the previous issues, I talked about deep work, prioritizing your workflow, and carefully designing your focus areas. All of them focus on increasing your productivity as a person. This week, we will look at the other side and discover why you should deploy your software in small batches and release it often to increase your gain while decreasing cost. Let&apos;s dive in.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I think deploying software is similar to going to the supermarket for groceries. We don&apos;t visit the supermarket five times to buy five apples. We batch several things together to optimize our lives. Also, we don&apos;t buy fifty kilos of apples for the next five months. Sometimes we buy in bulk, but we make jam to maintain them for a longer time. I think software deployments are the same. &lt;strong&gt;If you make extremely small deployments, it&apos;s inefficient and time-consuming. If you increase the deployment size, you have various disadvantages and, on top of that, rising maintenance costs.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In waterfall, the problem is not that every step is done one by one; it&apos;s &lt;em&gt;the size of the deployments and &quot;Big Bang&quot; releases&lt;/em&gt;. That&apos;s what the agile approach claims to solve.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. - The first principle of the Agile Manifesto&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The current common strategy and approach are not very different from the waterfall technique. We still gather requirements, design, plan, implement, test, deploy, and release, but we do it in smaller sizes and release more often than a year or two.&lt;/p&gt;
&lt;p&gt;The fierce market competition forces everyone to accelerate. Scrum, Kanban, or any other methodologies push us to finish a piece of work as often as possible and deliver it to the market. Some companies work with regular release cycles, and some don&apos;t. While release cycles help divide the work into smaller chunks, it&apos;s still not the ideal solution. &lt;strong&gt;Deploying software in bigger batches creates countless problems, such as high costs, increasing risks, losing the competition, and low psychological safety.&lt;/strong&gt; The practices of &lt;a href=&quot;https://candost.substack.com/p/13-devops-and-site-reliability-engineering&quot;&gt;Developer Operations (DevOps)&lt;/a&gt; changed the way how we approach these problems.&lt;/p&gt;
&lt;p&gt;DevOps tries to reduce costs by introducing different deployment strategies, continuous integration (CI), continuous deployment (CD), and tools around developer productivity. DevOps focus on four metrics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lead Time for Change&lt;/li&gt;
&lt;li&gt;Deploy Frequency&lt;/li&gt;
&lt;li&gt;Change Failure Rate&lt;/li&gt;
&lt;li&gt;Median Time to Restore&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These metrics focus on the acceleration of the deployments and releases. But still, many companies are more reluctant to improve their processes and systems because they don&apos;t think they have enough budget or vision to work on these metrics. Let&apos;s focus on the budget part. How does deploying small and often more profitable than deploying in bigger batches?&lt;/p&gt;
&lt;p&gt;Let&apos;s start by looking into the cost of bigger batch-size deployments. With bigger-size deployments, we spend more time testing the software, troubleshooting an error, migrating data, and communicating during the code freeze. While these are direct costs and somehow mathematically measurable, we also have indirect costs. These costs are caused by multitasking and parallel work, losing focus, context switching, disconnecting from the work, lower psychological safety, and a slow product feedback cycle.&lt;/p&gt;
&lt;p&gt;If we look at direct costs, &lt;strong&gt;increasing batch size demands more testing effort because the changes impact various parts of the system&lt;/strong&gt;. Diagnosing the bugs is more complicated and requires more time. The risk and the cost of deployments increase because they need more parallel work, such as running data migrations, checking if the data aggregation is correct, and watching different services concurrently. In these cases, there are often code freezes and communication costs on top of everything.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/cost-batch-size-communication-direct-people.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On the other hand, &lt;strong&gt;deploying tiny changes is not free&lt;/strong&gt;. Every deployment has infrastructure and people costs (we call them transactional costs). Every CI pipeline costs money, and people need to spend more time if something is broken (&lt;em&gt;damn you, outdated dependencies&lt;/em&gt;). That&apos;s the part where people think they gain more advantage with bigger-size deployments; &lt;em&gt;fewer deployments mean people are spending less time on it&lt;/em&gt;. The decrease in these transactional costs lures companies. &lt;strong&gt;Using less infrastructure and money on CI &amp;amp; CD pipelines creates an illusion.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/transactional-costs.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;While transactional costs decrease with bigger batch sizes, the maintenance costs increase exponentially. When software is not maintained often with small steps, the degree of the disorder increases because many dependencies get new updates and changes. After a while, maintenance efforts start becoming bigger. It&apos;s also possible to have newly-discovered security vulnerabilities and cause customer dissatisfaction and poor performance. &lt;strong&gt;The cost of delay in software maintenance increases exponentially; however, we can decrease the cost before it becomes heavy with small batches.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/repair-costs.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Maintenance costs add up to our previous ones, and in the end, we get the total costs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/optimum-range.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If a new feature hits the release early, we quickly learn if it is working or not. We often don&apos;t perceive impediments if the new feature will be successful or not. &lt;strong&gt;When we know something doesn&apos;t work within a week, it&apos;s better not to spend more time on it and instead develop useful (and profitable) features.&lt;/strong&gt; Execution and early feedback show us our mistakes and give us a chance to learn. Making bad product decisions because of the &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;lack of feedback&lt;/a&gt; and experiments is one of the indirect costs.&lt;/p&gt;
&lt;p&gt;&quot;Big Bang&quot; releases require multitasking. When batch size increases, many things need to be done in parallel, such as running migrations, deployments, and job sync between services and people. One mistake can create significant problems. These parallel efforts interrupt the standard workflow. &lt;strong&gt;When the gap between development and deployment increases, people begin disconnecting from the work that they completed weeks ago.&lt;/strong&gt; Diagnosing the problems becomes more difficult. These problems lead to low psychological safety, stress, and fear because of the high risk.&lt;/p&gt;
&lt;p&gt;Overall, deploying big batches is not efficient, while small batches have many benefits. &lt;strong&gt;Achieving the optimal batch size deployments and frequently releasing the software take time and effort.&lt;/strong&gt; One way to figure out if you are in a good spot is by asking yourself:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&quot;Can you deploy on Friday after lunch without being afraid of doing overtime on Friday evening or over the weekend?&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you can&apos;t give a confident yes to this question, look for what lowers your confidence.&lt;/strong&gt; What would you change if you had a magic wand? I was a firm believer in no deployment on Fridays. After seeing the costs, risks, and available tools, I&apos;m convinced--thanks to the world of CI/CD and DevOps practices. Before we go, one more thing.&lt;/p&gt;
&lt;p&gt;:::caution
Release != Deployment
:::&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deploy small batches, and release often.&lt;/strong&gt; Both are related but separate. While deployment is a technical decision and setup, the release is a product strategy. If you want to start thinking about how you can get better at the product side, use Eric Schmidt&apos;s question that focuses on speed and ask yourself:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;/why-cant-this-be-done-sooner/&quot;&gt;&quot;Why can&apos;t this be done sooner?&quot;&lt;/a&gt; - Larry Page&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&apos;s never too late to start improving. Don&apos;t forget; &lt;strong&gt;&lt;a href=&quot;/newsletter/mektup-3/&quot;&gt;minor improvements accumulate&lt;/a&gt; and create a significant impact.&lt;/strong&gt; You don&apos;t need to start a big project to achieve optimum release and deployments. &lt;a href=&quot;/bias-towards-action/&quot;&gt;Focus on a tiny improvement in each product development cycle.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;— Candost&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-6/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-6/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>No, You Don&apos;t Need to Learn Another Programming Language Every Three Months.</title><link>https://candost.blog/no-you-dont-need-to-learn-another-programming-language-every-three-months/</link><guid isPermaLink="true">https://candost.blog/no-you-dont-need-to-learn-another-programming-language-every-three-months/</guid><description>There is no easiest, hardest, useful, or best programming language; they are all similar. Learn data structures and algorithms to master in all languages.</description><pubDate>Wed, 19 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Also, you don&apos;t need to use it in the new project at work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Please stop pushing yourself to learn a new programming language every three to six months. It won&apos;t help you and your career. Yes, you need to develop yourself, stay up to date, and progress in your career. Using a new language in a new project where no other person knows that language is not one of them. I&apos;ve never heard of a good word about a person who introduces a new language to a company while learning it right before leaving. Let&apos;s take a look at how you can learn languages while staying up-to-date.&lt;/p&gt;
&lt;h2&gt;Learn Programming Concepts&lt;/h2&gt;
&lt;p&gt;First, &lt;strong&gt;learn concepts behind languages, how they approach problems differently.&lt;/strong&gt; Why is Rust using a &lt;em&gt;manual&lt;/em&gt; approach in memory management, unlike other languages; what trade-off are they making? Why do people go to Kotlin over Java these days--what are &lt;a href=&quot;https://kotlinlang.org/docs/comparison-to-java.html#what-java-has-that-kotlin-does-not&quot;&gt;the significant differences&lt;/a&gt;? Look for delta points between languages. Research and learn how one language utilizes &lt;a href=&quot;https://en.wikipedia.org/wiki/Type_system#Dynamic_type_checking_and_runtime_type_information&quot;&gt;dynamic type-checking&lt;/a&gt; while the other works with &lt;a href=&quot;https://en.wikipedia.org/wiki/Type_system#Static_type_checking&quot;&gt;static type-checking&lt;/a&gt;. What is the problem they both claim to solve with different methods? Once you understand these kinds of variations and respond to various WHYs and WHATs, you become proficient in many languages concurrently.&lt;/p&gt;
&lt;p&gt;From there on, you only need to take a look at the syntax of the language to write code in it. Although every language has a unique syntax, most obstacles you encounter in syntax are quickly solvable with Google search queries. You don&apos;t have to deep dive into how to write an &lt;code&gt;if&lt;/code&gt; clause or &lt;code&gt;while loop&lt;/code&gt; in one language over another. You have documentation and other manuals to assist you (please &lt;a href=&quot;https://en.wikipedia.org/wiki/RTFM&quot;&gt;RTFM&lt;/a&gt;). They clarify many of your syntax and language-specific questions. You can use &lt;a href=&quot;https://kapeli.com/dash&quot;&gt;Dash&lt;/a&gt;, &lt;a href=&quot;https://devdocs.io/&quot;&gt;DevDocs&lt;/a&gt;, or other tools to navigate many documentation sets in one place.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learn data structures.&lt;/strong&gt; Start with the language you know; take a look at which data structures exist. When you don&apos;t comprehend all of them, you spend extra time doing simple tasks. They are your tools. If you don&apos;t know there is a hammer in your toolbelt, banging a nail with pliers will be arduous. If you are not aware that you have a &lt;code&gt;Set&lt;/code&gt; in the language, you will do workarounds using an &lt;code&gt;Array&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Learn Algorithms&lt;/h2&gt;
&lt;p&gt;As a supplement to data structures, &lt;strong&gt;improve your problem-solving mindset&lt;/strong&gt; (a.k.a. learn algorithms). No one forces you to write a &lt;a href=&quot;https://en.wikipedia.org/wiki/Quicksort&quot;&gt;quicksort&lt;/a&gt; or &lt;a href=&quot;https://en.wikipedia.org/wiki/Red%E2%80%93black_tree&quot;&gt;red-black tree&lt;/a&gt; (except in interviews) from scratch. However, knowing how these algorithms solve uncomplicated problems helps you develop better solutions to intricate issues. &lt;em&gt;You don&apos;t need to memorize how to write a binary search; you only need to grasp its approach to broaden your perspective.&lt;/em&gt; You can think of it as music: notes and chords are your data structures, chords progressions and melodies are your algorithms. When you understand how notes and chords form progressions and tunes, you learn how to play the next song way quicker than the previous one.&lt;/p&gt;
&lt;p&gt;Overall, you don&apos;t have to learn a new language once a quarter of the year. It&apos;s, of course, valuable. But not effective; there is a better way. &lt;strong&gt;Understanding the concepts, mechanisms, and data structures is going to help you in the long run.&lt;/strong&gt; Just knowing four languages and writing simple code in all of them is just a short-term satisfaction. It won&apos;t stay there. Once you stop looking into or writing in one language, you will immediately start forgetting about it. When you learn how languages solve the same problems differently, you will attain flexibility. Once you have the fundamentals, you will use this knowledge more often than you think, and therefore it will stay with you. Whatever is repeated, it&apos;s remembered.&lt;/p&gt;
&lt;h2&gt;Learn One Language Well&lt;/h2&gt;
&lt;p&gt;By well, I mean, master it. Start learning in the language you already know. Understand how it approaches memory management, concurrency, and memorize which data structures exist. Know how the language manages memory when you nest data structures in unusual ways. Learn how it blocks or limits the data access when concurrent operations try to work on the same data resource simultaneously. Know why some data structures are mutable while others are not.&lt;/p&gt;
&lt;p&gt;After knowing one language, then go to others. When you learn concurrency well in your language, start looking at how other languages handle concurrency, why Kotlin needed to introduce &lt;a href=&quot;https://kotlinlang.org/docs/coroutines-overview.html&quot;&gt;Coroutines&lt;/a&gt; while Rust chose &lt;a href=&quot;https://doc.rust-lang.org/book/ch16-00-concurrency.html&quot;&gt;fearless concurrency&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you change your mindset and start playing the long game, you will see incredible &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;growth&lt;/a&gt;--faster than you think. Learning the concepts and mechanisms will make you more &lt;strong&gt;flexible&lt;/strong&gt;. You will learn new languages but differently. Since you will be aware of fundamentals, concepts, and structures in various programming languages, you will become a better software engineer.&lt;/p&gt;
&lt;p&gt;There are many topics you can learn. You still need to &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;decide what you should focus on next&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/no-you-dont-need-to-learn-another-programming-language-every-three-months/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/no-you-dont-need-to-learn-another-programming-language-every-three-months/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#16: Being an Indie Hacker and Part-time Creator with Benedicte Raae</title><link>https://candost.blog/podcast/16-being-an-indie-hacker/</link><guid isPermaLink="true">https://candost.blog/podcast/16-being-an-indie-hacker/</guid><pubDate>Tue, 18 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;16: Being an Indie Hacker and Part-time Creator with Benedicte Raae&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/16-being-an-indie-hacker-and-part-abb&quot;&gt;https://candost.substack.com/p/16-being-an-indie-hacker-and-part-abb&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/16-being-an-indie-hacker/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/16-being-an-indie-hacker/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Handle and Overcome Objections to Your Proposal</title><link>https://candost.blog/how-to-handle-and-overcome-objections-to-your-proposal-at-work/</link><guid isPermaLink="true">https://candost.blog/how-to-handle-and-overcome-objections-to-your-proposal-at-work/</guid><description>In organizations, we draft proposals to make decisions. Handling and overcoming objections to a proposal helps to make the decision process sustainable.</description><pubDate>Sun, 16 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;During the life journey, we make many proposals to create a place for ourselves in the communities. Our recommendations can be as simple as deciding which spacing style we should use (&lt;em&gt;tabs or spaces&lt;/em&gt;) in a project or &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;writing an RFC&lt;/a&gt; to propose a change in the organization. We want &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;decisions&lt;/a&gt; in favor of our proposals. It sometimes happens, sometimes not. Whenever we make a suggestion, there is often someone against it. The objection can be a simple concern, or the person may be trying to push their proposals. In any way, our minds start giving threat signals because our place in the community begins to be in jeopardy. How can we defend ourselves to weld our position in society, especially at work? How can we unwire this threat signal and understand if the objection is valid or not in the first place?&lt;/p&gt;
&lt;p&gt;Let&apos;s take a step back and understand how is the environment we are in and if our proposal can be open for objections. This step will help us to defend our argument.&lt;/p&gt;
&lt;h2&gt;Decision-Making Methods&lt;/h2&gt;
&lt;p&gt;Depending on the organization&apos;s culture and structure, people use different decision-making methods that influence proposals. If we are in a command-based environment such as the military, there won&apos;t be any place for objections. Whoever is higher in the hierarchy will have the decision regardless of objections. Of course, we are not interested in a command-based environment &lt;em&gt;(unless we&apos;re a horrible boss)&lt;/em&gt; because objections have no place. In software organizations, we use other styles such as advice, consent, and consensus, which are often all together. On some occasions, we go with the consensus and try to convince as many people as possible. In other situations, we prefer advice-based decisions: propose and ask for advice but keep the right to reject whatever you find unreasonable. Usually, there is no one-style-to-rule-them-all. We adjust our style according to the circumstances.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/overcoming-objections/decision-making-methods.jpg&quot; alt=&quot;Decision-Making Methods&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Handling Objections&lt;/h2&gt;
&lt;p&gt;After identifying how we make the decision, we can start thinking about our approach to objection. If we are looking for advice on our decision, it will be easier to accept/reject objections. We can adjust the decision after receiving advice or leave it as it is. When we start moving to the consensus side, it starts getting complicated to turn down every comment. Everyone wants their opinion accepted in the organization, so convincing everyone to align with our proposal is troublesome. In these complex environments, the major problem is caused by framing the feedback question incorrectly.&lt;/p&gt;
&lt;p&gt;We ask questions like &quot;Are there any objections?&quot; or &quot;What do you think about the proposal, any concerns?&quot;. Although these are good questions, there is an absence of precision. If our question is vague, the answers will be obscure. Validate and considering them will be intricate and demanding. There are a couple of specific difficulties we can focus on to improve the question.&lt;/p&gt;
&lt;p&gt;The first one is the flexibility of the decision itself. If we think of the decision as unalterable, we will be afraid to deal with objections and close ourselves to precious feedback. Instead, &lt;strong&gt;if we consider the decision as &quot;safe to try,&quot; it becomes risk-friendly, and we nudge everyone to be more flexible.&lt;/strong&gt; It also fastens the decision-making process. When decisions are set in stone, our brains want to eliminate all possible risks, the process takes longer, and we get slower. Another benefit of &lt;strong&gt;safe to try proposals is that they focus on &lt;em&gt;now&lt;/em&gt;, not in the &lt;em&gt;future&lt;/em&gt;.&lt;/strong&gt; The future is uncertain; no one knows what will happen.&lt;/p&gt;
&lt;p&gt;The second point is creating room for others&apos; opinions. Everyone wants acceptance and that the &lt;a href=&quot;https://candost.substack.com/8-cross-cultural-communication/&quot;&gt;community hears their thoughts&lt;/a&gt;. Of course, we don&apos;t want to listen to every argument. That&apos;s why we require a piece of evidence -this is also our third vagueness in the questions above. &lt;strong&gt;We need objections abased on evidence.&lt;/strong&gt; If someone is rejecting the proposal only with feelings, there won&apos;t be space for any discussion.&lt;/p&gt;
&lt;p&gt;With all this, we can transform our question from &quot;Are there any objections?&quot; to &quot;&lt;strong&gt;Does anyone have any evidence why trying this proposal would cause immediate harm? If so, could you please recommend an edit that will make the proposal safe to try?&lt;/strong&gt;&quot; The well-defined question helps the audience to have structural thinking. Instead of immediately objecting to the proposal, they start looking for evidence that shows why trying out the suggestion can cause immediate harm, now, not in the future. Even if they find it, they have to recommend an edit. This process encourages them to be part of the proposal. Once the audience comes up with objections, we still need to validate them. The question is only the first part of the equation.&lt;/p&gt;
&lt;h2&gt;Overcoming Objections&lt;/h2&gt;
&lt;p&gt;We need to be sure if they answer the question above entirely, recommend an edit, not inject a novel idea. &lt;strong&gt;We can validate the objection by asking three questions in order&lt;/strong&gt;. If one of the validation steps fails, congrats; we found an invalid objection.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/overcoming-objections/validating-objections.jpg&quot; alt=&quot;Validating Objections&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Let&apos;s go one by one. In the first step, we identify the reason for the objection. Does the dissenter object because they want their proposal to be accepted? &lt;strong&gt;If they come with a better idea, they are not objecting; they are discarding the proposal.&lt;/strong&gt; This situation moves us backward and starts discussions from the top. So when the answer is &quot;Yes, it&apos;s another idea,&quot; the objection becomes invalid. When the answer is &quot;No,&quot; we go to the second validation question.&lt;/p&gt;
&lt;p&gt;The second step focuses on problems at that exact moment. We often want to be &lt;a href=&quot;https://candost.substack.com/p/14-protective-leadership-and-leadership-style&quot;&gt;protective&lt;/a&gt; about tomorrow and make it as predictable as possible. However, the future will always be uncertain, and we can&apos;t foresee every problem. Therefore, &lt;strong&gt;we focus on issues we can deal with at the moment.&lt;/strong&gt; If the dissenter raises a problem that we didn&apos;t consider in the proposal, the objection passes the second validation point.&lt;/p&gt;
&lt;p&gt;In the third step, we consider the risks and focus on being safe to try -the topic we talked about before. &lt;strong&gt;The objection should raise the concern that it&apos;s not easy to recover&lt;/strong&gt;, so that we have to go back to the proposal and consider this unforeseen problem. If the dissenter brings up a problem that we can quickly recover, we can still try the proposal.&lt;/p&gt;
&lt;p&gt;When the objection passes all three questions, it becomes a valid objection. Now, we can focus on and discuss the edit they will make in the proposal. &lt;strong&gt;If they are objecting, they should recommend a solution to a present problem and makes the proposal safe to try.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The whole process might seem complicated and impractical at first. But this is a practice we can apply at work &lt;em&gt;when we need it&lt;/em&gt;. Without these kinds of techniques, we find ourselves in endless discussions; we slow down and even lose all motivation and energy on the way. After trying this method a couple of times, we learn and form a habit of filtering objections automatically. We move faster, make decisions that are safe to try, adequately see the critical problems and &lt;a href=&quot;https://candost.substack.com/p/15-prioritization-for-senior-and-787&quot;&gt;prioritize solutions&lt;/a&gt; better. We understand and &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;trust&lt;/a&gt; each other better and &lt;a href=&quot;/how-to-solve-and-prevent-conflicts/&quot;&gt;prevent future conflicts&lt;/a&gt;. As we involve more people in proposals, we can &lt;a href=&quot;/communicating-decisions-in-the-organizations/&quot;&gt;communicate our decisions&lt;/a&gt; easily without having &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;endless discussions&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;References&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.aug.co/blog/safe-to-try&quot;&gt;August&apos;s Playbook: From Is it Right? to Is it Safe to Try?&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-to-handle-and-overcome-objections-to-your-proposal-at-work/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #5: How to choose what you should focus on next? The case of prioritization and decisions...</title><link>https://candost.blog/newsletter/mektup-5/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-5/</guid><pubDate>Thu, 13 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hello friend! I hope that you are having a great week.&lt;/p&gt;
&lt;p&gt;When you, a software engineer, become seasoned (senior and staff engineers) at work, your tasks evolve and change. Multiple projects and initiatives run in parallel, and you start leading one or more of them. The calendar overflows with events, and finding the time to &lt;em&gt;do the hands-on work&lt;/em&gt; becomes difficult.&lt;/p&gt;
&lt;p&gt;🙌 On the positive side, when you grow, your impact on the company increases. This impact comes from larger projects and initiatives that you work on or lead. Instead of working on one project or service, you start juggling between multiple services. In &lt;em&gt;smaller&lt;/em&gt; scoped projects, you sacrifice knowing every single line of code by heart. But in return, you gain a broader understanding of various systems. You often still actively code in some services, but your primary focus shifts to working with systems and constantly switching your focal point from one service to another. This frequent transition provokes other issues such as low motivation, Zoom fatigue, tiredness from the hyperactive hive mind, and lack of deep work that I talked about in the &lt;a href=&quot;/newsletter/mektup-4/&quot;&gt;previous Mektup&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/amount-career-experience.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;☝️ The major problem is that when many projects run in parallel, they all tend to go slower; you cannot focus on them simultaneously, and neglecting to set aside time to prioritize them causes stress and burnout. Although your freedom and impact on the company increase immensely, the absence of small rewards leads to dissatisfaction.&lt;/p&gt;
&lt;p&gt;👀 Taking a closer look at the problem reveals the lack of prioritization. When we &lt;a href=&quot;https://candost.substack.com/p/15-prioritization-for-senior-and-787&quot;&gt;talked about prioritization for senior and staff software engineers in the Software World podcast&lt;/a&gt;, one thing became crystal clear: engineers often forget to sit down and prioritize their work. The engineering mind is so tangled with details: we prioritize every single task in one project over and over again. But think about it: when was the last time did you go over all your work and chose which project was more vital for you and the company than the other? Omitting to have a prioritization session is one of the mistakes that seasoned engineers often make.&lt;/p&gt;
&lt;h1&gt;How to find out what is more critical than the other?&lt;/h1&gt;
&lt;p&gt;⏸ If you are stuck in meetings and multiple projects simultaneously, &lt;strong&gt;pause now&lt;/strong&gt; and take a moment.&lt;/p&gt;
&lt;p&gt;🗓 &lt;strong&gt;Block a minimum of one hour&lt;/strong&gt; -preferably two hours- in your calendar.&lt;/p&gt;
&lt;p&gt;📝 &lt;strong&gt;Write down all your projects, tasks, and other work&lt;/strong&gt; in separate post-its (you can use digital tools like Miro or Mural).&lt;/p&gt;
&lt;p&gt;🗂 Use Moscow analysis to prioritize them. MoSCoW is an acronym: Must, Should, Could, Won&apos;t.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Must have/do: Critical tasks, projects you have to complete or work on.&lt;/li&gt;
&lt;li&gt;Should have/do: Important tasks, projects that should be done if possible but not mandatory for the time being, or postponing doesn&apos;t cause many problems.&lt;/li&gt;
&lt;li&gt;Could have/do: Tasks that are desirable but not necessary. Tasks that you wish to do but are not entirely required.&lt;/li&gt;
&lt;li&gt;Won&apos;t have/do (this time): Tasks are neither essential nor appropriate for the time being. Tasks that you will not do at all.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Create sections for each category. Place your post-its in these categories.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/moscow.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;✨ After that, apply the dependency and ambiguity scale. Ask yourself: are the tasks ambiguous, or do they heavily depend on others, and do you need to convince people? Is there any task that you can complete relatively quickly? Reorganize your notes in each section (you can leave out the Won&apos;t section) according to how easy it&apos;s to implement and finish. Your answers won&apos;t be binary; that&apos;s why it&apos;s a scale. It will help you think of the projects and compare how one is easier or more complicated than the other.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/moscow-easiness.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;✌️ Now, you have a visual overview. Choose the easiest one to implement (the right-most) from the Must section. Go one by one to the left in the must section and work on them in order. Meanwhile, it&apos;s okay if you take tasks from should or could sections or change the order. But always keep the priority in mind. Maintain your focus and identify distractions. Don&apos;t allow minor diversions. Try to say &quot;No&quot; to the work that cannot lend to this priority schema. Whenever a new task comes, clarify the job, requirements, and expectations and put them into the schema accordingly.&lt;/p&gt;
&lt;p&gt;🔃 Use this visual overview once in a while. The frequency can be biweekly or once a month; it&apos;s up to you. The important thing is that you set some time aside and prioritize your work. I recommend setting a recurring time-blocker event in your calendar so that you don&apos;t forget and no one will be able to take your time during this event.&lt;/p&gt;
&lt;p&gt;🎯 Overall, your goal with this approach is to say &quot;No&quot; to &lt;em&gt;good things&lt;/em&gt; to be able to say &quot;YES&quot; to &lt;em&gt;great things!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;💁 If you want to learn more about prioritization for senior and staff software engineers, &lt;a href=&quot;https://candost.substack.com/p/15-prioritization-for-senior-and-787&quot;&gt;listen to the 15th episode of the Software World Podcast&lt;/a&gt; and &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;read my blog post to learn more in-depth and visual approaches&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to jump into the decision step, &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;read my blog post about deciding what you should focus on next&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;✍️ One last small tip. &lt;a href=&quot;/why-is-writing-important/&quot;&gt;I love thinking through writing&lt;/a&gt;. You can analyze your priorities by writing how you think and feel about them as well. It works for me! Find what works for you.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-5/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-5/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Deciding on What You Should Focus on Next</title><link>https://candost.blog/deciding-on-what-you-should-focus-on-next/</link><guid isPermaLink="true">https://candost.blog/deciding-on-what-you-should-focus-on-next/</guid><description>Through a software engineer career, deciding factors change, and we forget how to decide and focus on one thing. What you need to do is sit and prioritize.</description><pubDate>Tue, 11 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Throughout your career, your work and tasks start simple and evolve. While working on software projects, you first begin with smaller tasks with the goal is finishing the job and learning. After gaining experience, you start taking on more responsibilities. By becoming a senior or staff engineer, you also become more autonomous and free. Instead of someone else planning your work, this autonomy brings prioritization to your shoulders.&lt;/p&gt;
&lt;p&gt;When I &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;talked about&lt;/a&gt; prioritization for senior and staff engineers, I left out the decision moment specifically. While the two are closely related, they are separate things. In this article, I will close that gap and discuss how to decide what to focus on next.&lt;/p&gt;
&lt;p&gt;In software projects, level-based prioritization is the most common technique currently in use. Assigning tasks and stories high, medium, and low priorities make it clear what to work on next. In real life, this priority strategy is not used a lot. While it&apos;s working for software projects, it&apos;s abstract for personal work prioritization. That&apos;s why I think the Moscow analysis technique is more suitable.&lt;/p&gt;
&lt;p&gt;Moscow is an acronym for Must, Should, Could, Won&apos;t. Using plain English words makes it more understandable. When we compare them with more abstract terms such as high, medium, and low, we see more clearly what is more important.&lt;/p&gt;
&lt;p&gt;Before using the techniques that I discuss here, first &lt;strong&gt;set yourself some time and bring all your tasks, projects, or whatever you have&lt;/strong&gt;. It doesn&apos;t matter how many of them; even more than a hundred is okay. Write each one of them in (virtual) post-its.&lt;/p&gt;
&lt;p&gt;Now you have all the work under your hands, &lt;strong&gt;start separating these tasks according to the Moscow technique&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Must have/do: Critical tasks, projects you have to complete or work on.&lt;/li&gt;
&lt;li&gt;Should have/do: Important tasks, projects that should be done if possible but not mandatory for the time being, or postponing doesn&apos;t cause many problems.&lt;/li&gt;
&lt;li&gt;Could have/do: Tasks that are desirable but not necessary. Tasks that you wish to do but are not entirely required.&lt;/li&gt;
&lt;li&gt;Won&apos;t have/do (this time): Tasks are neither essential nor appropriate for the time being. Tasks that you will not do at all.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/deciding-on-what-you-should-focus-on-next/moscow-analysis.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After separating, you should have a clear picture of what is more important and what&apos;s not—seeing all the work that needs to be done without any prioritization gives the false impression that you have to work on all of them and even try to finish them all. One thing we need to clear out is that &lt;strong&gt;you will never have time to finish all&lt;/strong&gt;. Now at least, you know what you can do and what you won&apos;t do as well.&lt;/p&gt;
&lt;p&gt;While Moscow provides us with a model to prioritize, deciding which tasks to start is still missing. Now, each section that you put tasks in doesn&apos;t have any order in them. That&apos;s why we will include one more small step and apply a scale to all sections.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/deciding-on-what-you-should-focus-on-next/dependency_scale.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Taking a look at the dependencies, ambiguity, and details of the tasks enables us to see more clearly what to choose next. Most of them have levels, and they are relative to each other. They are not “do” or “don&apos;t,” not 1 or 0. That&apos;s why we use a scale instead of giving levels (high, medium, low) to them. &lt;strong&gt;Our brain needs the exact frame and minimum ambiguity to make a better decision.&lt;/strong&gt; Unambiguity causes stress and affects our choices.&lt;/p&gt;
&lt;p&gt;Now, &lt;strong&gt;go over all your tasks in each section and put them into the scale, one by one&lt;/strong&gt;. While doing so, consider how a task relates to another one. Is it easier from task X or more challenging to implement?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/deciding-on-what-you-should-focus-on-next/moscow_analysis_with_dependency_scale.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After placing all the tasks, &lt;strong&gt;&lt;a href=&quot;/bias-towards-action/&quot;&gt;pick the easiest one to implement from the must-have list&lt;/a&gt;&lt;/strong&gt; and gradually go to the difficult ones.&lt;/p&gt;
&lt;p&gt;The work is not always will be on the &quot;must-have&quot; list. Sometimes you will need to juggle between must, should, and could. It&apos;s possible that you will have some &lt;a href=&quot;https://fs.blog/2021/05/slack/&quot;&gt;slack time&lt;/a&gt; and want to take one task —such as the minor refactoring you always wanted to do—from the could-have list. If you can, go ahead. You might also be blocked in all of your must-have tasks. Don&apos;t stop yourself. That&apos;s inevitable, and &lt;strong&gt;juggling between sections is okay&lt;/strong&gt;. You can always come back to must-have ones because you know what to work on next and what not to work on.&lt;/p&gt;
&lt;p&gt;Prioritization and taking time to decide on something are often neglected and forgotten throughout careers. Although they are crucial parts of software projects, they are not used while &lt;a href=&quot;/top-3-tips-for-planners/&quot;&gt;planning&lt;/a&gt; individual work. Now, you have one new method to try. This method might not be 100% suitable for your work or needs. Feel free to adjust however you feel more comfortable. If you want to learn more about prioritization for senior and staff engineers, check out the &lt;a href=&quot;https://candost.substack.com/p/15-prioritization-for-senior-and-787&quot;&gt;podcast episode&lt;/a&gt; in that Dennis and I talked about prioritization.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/deciding-on-what-you-should-focus-on-next/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/deciding-on-what-you-should-focus-on-next/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Prioritization Skills for Senior and Staff Software Engineers</title><link>https://candost.blog/prioritization-skills-for-senior-and-staff-software-engineers/</link><guid isPermaLink="true">https://candost.blog/prioritization-skills-for-senior-and-staff-software-engineers/</guid><description>When you grow into more senior roles, your responsibilities evolve. Prioritization changes for software engineers. Communication and analysis skills become more important.</description><pubDate>Thu, 06 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A new calendar invitation arrives. Ellen looks into the event&apos;s details, and she is not sure if she should accept it or not. It conflicts with her plans. She actually wanted to finish the task from two days ago. She goes to Slack and talks with her boss, who sent the invitation, and they reschedule it, but this time, it conflicts with another meeting. Sigh. Ellen gives up and says to her boss, &quot;Let&apos;s do it the first time you asked for.&quot; Ellen looks into the calendar to find another time slot to finish the open task. It seems like it won&apos;t be possible before next week. While missing the simple old days before she became a staff engineer, she leaves the task open on the To-Do list, hoping that she will find time to finish it in between meetings.&lt;/p&gt;
&lt;p&gt;When you grow into more senior roles like Ellen, your responsibilities change. They grow, and dependencies increase over time, calendar overflows, and to-do lists become endless. One of the misconceptions of senior roles is thinking of this situation as &lt;em&gt;normal&lt;/em&gt;. It&apos;s not. It can&apos;t be. These symptoms all show a lack of prioritization.&lt;/p&gt;
&lt;p&gt;In this article, I will help you to identify what&apos;s changing when you grow and how you can make minor adjustments in your workflow to prioritize your work better.&lt;/p&gt;
&lt;h2&gt;Prioritization Struggle of Growing Engineers&lt;/h2&gt;
&lt;p&gt;When you are a junior, you get tasked with smaller work. The boss or seniors ask you to “work on task X,” “fix a bug,” or “implement a new feature.” The expectations from you are finishing the task on time and learning from it. During this time, you get support from senior engineers and managers. They will help you grow not only in technical skills but also in other skills, such as prioritization, stakeholder management, and &lt;a href=&quot;/newsletter/mektup-6/&quot;&gt;breaking down the work into smaller chunks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With becoming a senior, you start working on stories and epics and, later on, projects. The expectations grow, and you become more autonomous; without needing someone else, you can break down and complete a new project end-to-end while helping others. Your freedom and power increase, and you need to learn how to control them.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/prioritization-for-staff-plus/growing-software-engineers-impact-freedom.jpg&quot; alt=&quot;Impact and Freedom Growth&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Until becoming staff or principal engineer, you worked &lt;em&gt;in&lt;/em&gt; your team. Now, you work &lt;em&gt;at the side&lt;/em&gt; &lt;em&gt;of&lt;/em&gt; your team. You will have &lt;a href=&quot;/effective-1-1-meetings-one-on-one-meeting-template/&quot;&gt;one-on-ones&lt;/a&gt; with engineers and negotiations with other engineering teams and &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;get their buy-ins&lt;/a&gt; and &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;feedback&lt;/a&gt; on projects covering multiple teams, such as engineering initiatives, major refactorings, or implementing new tools in all departments. The impact of the engineer increases and spreads through the organization.&lt;/p&gt;
&lt;p&gt;However, the chances of failure get higher because you have less context now when you compare it with earlier roles. You won&apos;t know every detail in one system, but you have a broad knowledge of what&apos;s going on. In junior positions, your risks are low because the task is small and the context is more specific. In staff and principal roles, you have less context about a particular system. You don&apos;t know every single line of every project that you might have an impact on.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/prioritization-for-staff-plus/risk-cone-for-software-engineers.jpg&quot; alt=&quot;Risk Cone for Software Engineers&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The small details might affect the success of the bigger initiatives. On top of the career ladder, the work often happens in researching and generating new ideas that have a higher chance of failure due to &lt;a href=&quot;https://en.wikipedia.org/wiki/There_are_known_knowns&quot;&gt;unknown knowns or unknown unknowns&lt;/a&gt;. The person on top of the ladder cannot know all the details about how the new project will impact every system. That&apos;s why the staff and principal engineers have to spend some time prioritizing tasks and &lt;a href=&quot;/why-cant-this-be-done-sooner/&quot;&gt;decreasing the risks&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;How to Get Better at Prioritization&lt;/h2&gt;
&lt;p&gt;Since you will become the team representative in senior and staff roles, you have to learn stakeholder management to bring more clarity to work. Understanding which stakeholder should have the higher priority in a project is critical for alignment in all other projects. The one strategy that works every single time is &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;clearly communicating&lt;/a&gt; with them. But first, you have to have an overview of what&apos;s going on and identify the stakeholders. &lt;strong&gt;Use &lt;a href=&quot;https://en.wikipedia.org/wiki/Responsibility_assignment_matrix&quot;&gt;RACI Matrix&lt;/a&gt; to determine the role of each dependency for each project or task.&lt;/strong&gt; It brings clarity, and you can eliminate unnecessary communication. Ask questions about dependencies to figure out the expectations and time limitations. Then, choose the most critical project that will help the company move forward.&lt;/p&gt;
&lt;p&gt;☝️ Ask yourself, &quot;&lt;strong&gt;What does move us forward the most?&lt;/strong&gt;&quot; and think about it deeply.&lt;/p&gt;
&lt;p&gt;If you don&apos;t think about what moves you forward, you most probably won&apos;t find the correct answer. &lt;strong&gt;Block time on your calendar to think about topics that require deep thinking.&lt;/strong&gt; During that thinking session, you don&apos;t have to just sit and think. I prefer &lt;a href=&quot;/why-is-writing-important/&quot;&gt;thinking through writing&lt;/a&gt;, but some people like having deep walks: thinking during a walk (preferably in nature) without music or any distraction. Choose whatever works for you, but have a slot on your calendar so that other people won&apos;t be able to book a meeting with you at that time. This strategy will help you to say &quot;No&quot; to other projects or tasks that may distract you from your goal.&lt;/p&gt;
&lt;p&gt;Saying &quot;No&quot; is often not easy. You may need to back it up with a valid reason and (sometimes) data. Having clarity will help you to form the basis.&lt;/p&gt;
&lt;p&gt;There are models and frameworks to help you find valid reasons and &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;make a better decision&lt;/a&gt; on which projects you will work on. &lt;strong&gt;Use the &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;MoSCoW analysis&lt;/a&gt; technique&lt;/strong&gt;: identify if the task is a &quot;Must,&quot; &quot;Should,&quot; &quot;Could,&quot; or &quot;Won&apos;t.&quot; Think about the mission and find out where you place it. If it is a &quot;must-do&quot; task, then you have to put a high priority on it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/prioritization-for-staff-plus/MoSCoW-Priority-Analysis.jpg&quot; alt=&quot;MoSCoW Priority Analysis&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On the other hand, when you grow into more senior roles, your knowledge of one system will decay. You won&apos;t have comprehensive knowledge about the details of one project. That&apos;s okay. Don&apos;t push to have a more profound understanding of the details of every system. If you do, you will affect your impact, limit your freedom and even block some projects. &lt;strong&gt;You don&apos;t have to know every single line of code, and to be honest, you can&apos;t.&lt;/strong&gt; Accept it and focus on the big picture.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/prioritization-for-staff-plus/increasing-impact-freedom-with-less-knowledge-software-engineers.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Overall, these are the strategies you can follow to prioritize your work better when you grow into more staff and principal roles. Here are the action items you can take.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Block time in your calendar to think about topics that require deep thinking.&lt;/strong&gt; You can also think through writing or have deep walks. Choose whatever works for you. The only requirement is setting aside some time to think.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;Visualize your priorities&lt;/a&gt; to get an overview&lt;/strong&gt; (write them down to make it real). Use MoSCoW analysis, &lt;a href=&quot;https://en.wikipedia.org/wiki/Responsibility_assignment_matrix&quot;&gt;RACI matrix&lt;/a&gt;, or other frameworks or models. An outside person (a mentor) can help you with this. They can push you in a direction that you don&apos;t even see.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clarify your work, requirements, and expectations.&lt;/strong&gt; Ask your peers, boss, and stakeholders about the projects and clarify as much as you can.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep your focus and identify distractions.&lt;/strong&gt; Whenever someone asks you to help them on another project, answer with “Until when do you need this job to be done?” to understand how you can prioritize within your workflow.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a result, you learn how to plan and structure your day. You learn how to create chunks for your tasks in your calendar. You will not let other people design your time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🎯 Say &quot;No&quot; to good things to be able to say &quot;YES&quot; to great things!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you would like to know more about prioritization, you can listen to the Software World episode where Dennis and I talked about &lt;strong&gt;&lt;a href=&quot;https://candost.substack.com/p/15-prioritization-for-senior-and-787&quot;&gt;Prioritization for Senior and Staff Software Engineers&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/prioritization-skills-for-senior-and-staff-software-engineers/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#15: Prioritization for Senior and Staff Software Engineers with Dennis Benkert</title><link>https://candost.blog/podcast/15-prioritization-for-senior-and-staff-software-engineers/</link><guid isPermaLink="true">https://candost.blog/podcast/15-prioritization-for-senior-and-staff-software-engineers/</guid><pubDate>Tue, 04 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;15: Prioritization for Senior and Staff Software Engineers with Dennis Benkert&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/15-prioritization-for-senior-and-787&quot;&gt;https://candost.substack.com/p/15-prioritization-for-senior-and-787&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/15-prioritization-for-senior-and-staff-software-engineers/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/15-prioritization-for-senior-and-staff-software-engineers/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #4: Deep Work, 1:1s, Estimations, Conflicts, Documentation, Protective Leadership</title><link>https://candost.blog/newsletter/mektup-4/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-4/</guid><pubDate>Thu, 29 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Software problems require a lot of research, planning, execution, and quality assurance. All four stages require focus and deep thinking. When a software developer gets distracted at any stage, going back into &quot;the zone&quot; or &quot;the flow&quot; demands a lot of work. In socially isolated times, it is easy to find ourselves trying to catch up with every piece of information to feel more productive. There might be kids running at home while there is an IDE open on the screen. Maybe there is no one to bother during coding, but our mind is nudged to check the phone or Slack all the time so that we don&apos;t miss out on anything or feel alone.&lt;/p&gt;
&lt;p&gt;For a while, I&apos;ve been thinking, reading, and analyzing the situation I&apos;m in. I have many things that I want to change. Yet, I also lacked how to approach these changes. That&apos;s why I&apos;ve been reading Atomic Habits for a while. It taught me that learning how to change behaviors and stick to the habits that I want to have in my life. One of them is improving how I work. When I took a look at my work setup, I found myself in a Hyperactive Hive Mind, as Cal Newport explains in his latest book, A World Without Email:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;The Hyperactive Hive Mind: A workflow centered around ongoing conversation fueled by unstructured and unscheduled messages delivered through digital communication tools like email and instant messenger services.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Not having deep-focused work and having the mindset of artificial productivity create &lt;a href=&quot;https://dictionary.apa.org/negative-affect&quot;&gt;negative affectivity&lt;/a&gt;. This problem is not novel and not new to me as, well. Some time ago, after reading Deep Work from Cal Newport, I tried changing my work to have deep working hours. It helped me work in a flow that I lacked (and complained about) for a long time. As time passed and the pandemic hit, these flows faded away, and I was not sticking to them a lot.&lt;/p&gt;
&lt;p&gt;Currently, I&apos;m not 100% actively coding, and empty spaces in my work calendar vanish every week, along with my deep working time. When I look at my statistics for March 2021, I spent 26 hours on Slack, 22 Hours on Google Meet, ~4 hours on Zoom, ~4 hours on Gmail, and ~4 hours juggling on my calendar. These stats give me a clear sign of a Hyperactive Hive Mind that I want to get rid of.&lt;/p&gt;
&lt;p&gt;Changing habits requires a little bit of preparation. As a start, I blocked Deep Hours in my calendar. I will spend these deep hours on the computer or walking. If my work doesn&apos;t require a computer, I plan to go for deep walks to think about a subject or solve a problem. I&apos;m starting to say &quot;No&quot; to ad-hoc meetings if it&apos;s not urgent. (I use the trick of asking people, &quot;when do you need this work/talk to be done?&quot; and it magically works.) These are just small strategies that I am adding to my routine and improving on the way.&lt;/p&gt;
&lt;p&gt;If you want to increase your deep working hours in your workflow like me, here are some suggestions I&apos;ve seen work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Block focus time on your calendar. Plan it, don&apos;t decide on the go.&lt;/strong&gt; When the events are visible on your calendar, and you see them all the time, you will be more inclined to apply them. If you find recurring timeframes, you can set the calendar to repeat the events automatically. Make these events visible to everyone and reject other meetings during this timeframe.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turn off&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;every&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;notification on your&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;phone&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;strong&gt;*computer***&lt;/strong&gt;.** (Put your phone upside down in *another* room. Take off your smartwatch if you have one) Log out from all social media websites on your computer browser. I have been living without social media notifications for a long time, and it&apos;s one of the best decisions I have made.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Close Slack, Telegram, Discord, or whatever messaging app you use.&lt;/strong&gt; Don&apos;t worry if your team or boss complains. You can kindly say sorry (or not) by explaining that you were focusing on the task to produce a great result. I&apos;m sure that they will understand. If you use the Focus feature of &lt;a href=&quot;https://www.rescuetime.com/ref/1098870&quot;&gt;RescueTime&lt;/a&gt; and combine it with Zapier to trigger focus time when you have a calendar event. In that case, you can even automatically block distracting apps and websites thanks to RescueTime. Have a system that automatically works for you. The goal is to reduce the effort of going into deep work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Choose tasks that you can finish in one deep work session.&lt;/strong&gt; If your work requires a significant amount of time, slice it down and work on them one by one. Don&apos;t overload yourself. At the end of each session, you should be able to have an achievement. Pick tasks you can finish in one sitting.&lt;/li&gt;
&lt;li&gt;Make your table tidy or put something nice on your desk before starting your deep work. &lt;strong&gt;Beautiful environments can help us to stick to what we&apos;re doing.&lt;/strong&gt; The trick is to choose something that will make the session attractive and joyful.&lt;/li&gt;
&lt;li&gt;Put an X on your calendar or make a stack of legos on your table. It doesn&apos;t matter what you do; the &lt;strong&gt;visual presentation of your progress will nudge you to do it one more time constantly&lt;/strong&gt;. You can also use the &quot;&lt;a href=&quot;https://lifehacker.com/jerry-seinfelds-productivity-secret-281626&quot;&gt;don&apos;t break the chain&lt;/a&gt;&quot; strategy or any other similar idea. Have a system where you &lt;em&gt;see&lt;/em&gt; the progress.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Try doing it once or twice a week in the beginning. Keep in mind that you cannot have deep work for the entire day. If you can have three sessions (each 1-2 hours) a day, that&apos;s great.&lt;/p&gt;
&lt;p&gt;These are all examples; find what you can do and adjust them to your needs. I hope these strategies will help you as they helped my colleagues and me. How are your deep working hours? What are your methods in your working style? Just hit reply and send them to me. I&apos;m still improving my work and would love to hear your ideas. :)&lt;/p&gt;
&lt;p&gt;Now, onto what happened in the last month.&lt;/p&gt;
&lt;p&gt;I wrote seven blog posts and recorded two podcast episodes.&lt;/p&gt;
&lt;h2&gt;☝Three Articles and One Book I Recommend Reading&lt;/h2&gt;
&lt;h3&gt;Write code that is easy to delete, not easy to extend&lt;/h3&gt;
&lt;p&gt;🔖 &lt;a href=&quot;https://programmingisterrible.com/post/139222674273/how-to-write-disposable-code-in-large-systems&quot;&gt;Article Link&lt;/a&gt;​&lt;/p&gt;
&lt;p&gt;This article is old but gold. It&apos;s one of the posts I read time-to-time. Writing code that&apos;s deletable or changeable in the first place is a mindset to have when you grow in your career. Truly understanding and accepting that the code will change or be deleted helps to approach problems differently.&lt;/p&gt;
&lt;h3&gt;How to Become a Better Developer by Asking Questions&lt;/h3&gt;
&lt;p&gt;🔖 &lt;a href=&quot;https://www.stevejgordon.co.uk/how-to-become-a-better-developer-by-asking-questions&quot;&gt;Article Link&lt;/a&gt;​&lt;/p&gt;
&lt;p&gt;In my coaching sessions, I often see that people hesitate to ask questions. Juniors especially have a difficult time when their senior colleagues have a high work backlog. Steve talks about how you should form the questions in different setups. Some questions are better to ask colleagues, but that&apos;s not all. Yet, one behavior that is required in all questions is you need to prepare before asking.&lt;/p&gt;
&lt;h3&gt;How People Learn to Become Resilient&lt;/h3&gt;
&lt;p&gt;🔖 &lt;a href=&quot;https://www.newyorker.com/science/maria-konnikova/the-secret-formula-for-resilience&quot;&gt;Article Link&lt;/a&gt;​&lt;/p&gt;
&lt;p&gt;Resilience is not something you have; it&apos;s something you learn. In the middle of the pandemic, resilience is often overused, and people think that they are resilient or not. However, reflecting on the events happening at work and in my personal life is learnable. The research mentioned in the article shows that our resilience is defined by how we perceive possible traumatic events. The decisive point is how we frame them: an opportunity to learn or a threat.&lt;/p&gt;
&lt;h3&gt;Deep Work by Cal Newport&lt;/h3&gt;
&lt;p&gt;📚 &lt;a href=&quot;https://www.calnewport.com/books/deep-work/&quot;&gt;Book Link&lt;/a&gt;​&lt;/p&gt;
&lt;p&gt;I read this book in the Fall of 2020. At that time, I was recovering from burnout, and I was keen on changing my work style. Being in the flow state that Csikszentmihalyi talks about were missing in my work for a long time. It&apos;s also not only work; our lives are filled with constant distractions that we cannot focus on anything anymore. The average number of mobile push notifications &lt;a href=&quot;https://www.businessofapps.com/marketplace/push-notifications/research/push-notifications-statistics/&quot;&gt;in the US&lt;/a&gt; is 46 per day, and on top, we have distractions caused by YouTube, Twitch, and Netflix. After reading Deep Work, I decided to change my life a little bit. It&apos;s a work in progress, but I&apos;m way happier than before. I recommend you think about how distracted you are and whether you want to change it or not. If you have the same feelings as me, get this book. If not, that&apos;s great; keep going!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;That&apos;s it. If you have any strategies to improve the quality of your work, I&apos;m all ears. :)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-4/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-4/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Solve and Prevent Conflicts</title><link>https://candost.blog/how-to-solve-and-prevent-conflicts/</link><guid isPermaLink="true">https://candost.blog/how-to-solve-and-prevent-conflicts/</guid><description>Miscommunication and lack of empathy lay beneath the conflicts. The expectation of a magic wand resolving everything can put high pressure on managers&apos; shoulders. However, there are initial steps managers can take.</description><pubDate>Tue, 20 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Often, there are situations where one of the engineers wants to develop a feature in a certain way, and another engineer finds the solution stupid. The engineer may &lt;em&gt;insist&lt;/em&gt; on the solution they suggested or push a significant change in the codebase. When other developer stands in their way, these kinds of situations result in resentment and conflict. Luckily, there are strategies to solve these conflicts.&lt;/p&gt;
&lt;p&gt;When you have a problem with someone, the situation puts you under such stress that you spend sleepless nights. After you have a massive load of work, along with a conflict in the team, you might feel incompetent. You can avoid annoying people to solve the conflict, but it&apos;s not that possible at work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Miscommunication and lack of empathy lay beneath the conflicts.&lt;/strong&gt; The expectation of a magic wand resolving everything can put high pressure on managers&apos; shoulders. However, there are initial steps managers can take.&lt;/p&gt;
&lt;p&gt;Finding a solution requires immense preparation. Both sides in the conflict should prepare a plan with all the possible solutions, &lt;strong&gt;including the ones where they are entirely defeated&lt;/strong&gt;. Both sides should think through mainly two things: what they truly need and what the other side needs. They can&apos;t do this alone. Managers play a significant role here. People not only neglect to ask about what the other side needs but also don&apos;t answer the question themselves. With the help of a good manager, people can figure out the demands and wishes of both sides.&lt;/p&gt;
&lt;p&gt;Instead of &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;getting stuck in meaningless and bitter discussions&lt;/a&gt;, you need to work towards a complete plan. Creating a strategy for every possible situation sounds difficult at the beginning. However, this approach also forces you to &lt;strong&gt;have a tangible goal and not begin the discussion without it&lt;/strong&gt;. The whole journey of finding out &lt;em&gt;the goal&lt;/em&gt; and &lt;em&gt;the needs&lt;/em&gt; requires self-awareness and self-analysis.&lt;/p&gt;
&lt;p&gt;Analyzing yourself involves a lot of effort and time, which might be why you avoid it in the first place. The analysis may (and most probably will) unveils different inner conflicts. Since &lt;a href=&quot;/why-is-writing-important/&quot;&gt;writing forms thoughts&lt;/a&gt;, the plan helps a lot to detach these internal conflicts and surface them. &lt;strong&gt;When your internal feelings see the light, you recognize what you need in the end.&lt;/strong&gt; Yet, you still have no idea about what other person needs.&lt;/p&gt;
&lt;p&gt;Finding the needs of others starts with listening. During a battle, leaving out the anger and opening your inner self is difficult. Emptying your mind and listening with your whole being is what&apos;s called &lt;strong&gt;empathy&lt;/strong&gt;. When you have this level of understanding, you start listening to how people feel and what they need rather than what they are thinking at that specific moment. It requires practice. Paraphrasing the questions is one of the most helpful practices. When the other person says, &quot;I don&apos;t want to work with you.&quot;, instead of asking, &quot;Why don&apos;t you want to work with me?&quot; ask, &quot;Are you feeling unhappy because you need to be heard?&quot;. The change in the phrase is so powerful that it switches the course of the discussion. The mood shifts from tense to emotional. With this attitude change, you also take another step to care about other people affected by your disagreement, the team.&lt;/p&gt;
&lt;p&gt;The circumstances of conflicts also affect other people around you. The struggle breaks the team spirit, and people start advocating sides. It leads to even more misunderstandings, and the team loses focus and speed. However, once you begin resolving conflicts, everyone recovers incredibly fast, relationships get more robust, and people start looking after each other. &lt;strong&gt;When caring people surround you, you also recover from failures faster than you think.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Creating plans helps resolve conflicts while listening with empathy, and paraphrasing helps in avoiding new ones. Understanding what other people need is a game-changer. It&apos;s not only valuable for conflicts but also handy in day-to-day &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;communication&lt;/a&gt;. When someone comes with a wish or a request, you can ask questions by focusing on their feelings or needs. Understanding another person enables you to create a better strategy to both resolve problems and work together efficiently. Although these strategies will not be like a magic wand and solve every conflict right away, they are just starting points. If you are in a conflict, ask yourself what you truly need and what the other person needs. Last but not least, if you want to learn more about this, read &lt;a href=&quot;https://www.nonviolentcommunication.com/product/nonviolent-communication-a-language-of-life-3rd-edition/&quot;&gt;Non-violent Communication&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-to-solve-and-prevent-conflicts/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-to-solve-and-prevent-conflicts/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Communicating Decisions In The Organizations</title><link>https://candost.blog/communicating-decisions-in-the-organizations/</link><guid isPermaLink="true">https://candost.blog/communicating-decisions-in-the-organizations/</guid><description>The communication of the decisions is sometimes more important than the decision itself. The leaders often make horrible announcements of significant decisions. How can they do it better?</description><pubDate>Thu, 15 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In organizations and communities, people work hard to agree. Although &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;decision-makers have valid reasons to make meaningful choices&lt;/a&gt;, they often communicate poorly. If they make mistakes, they either apologize or defend themselves and keep the lousy communication going. So, how should you deliver a message without being in these dire situations?&lt;/p&gt;
&lt;p&gt;The people who announce the decisions are often &lt;strong&gt;focused on the incoming change more than the clarity of the message&lt;/strong&gt;. This focus leads to concentrating on motivating people. Actually, &lt;strong&gt;the motivation comes from clarity&lt;/strong&gt;. Because humans don&apos;t like ambiguity, and human nature thinks of unknown situations as a threat. When the communication is clear, transparent, and has no place for speculation, people approach more positively even if the decision affects them badly. &lt;strong&gt;When there is no separation between the decision and the announcement, the message gets unclear.&lt;/strong&gt; Of course, they are closely coupled. But they can be separated by a little bit of empathy.&lt;/p&gt;
&lt;p&gt;While preparing the message, &lt;strong&gt;put yourself into the other&apos;s shoes&lt;/strong&gt;. How would you prefer to receive this message? When there isn&apos;t a reflection of empathy in the announcement, it gives people the impression of not being heard and creates a &quot;they vs. us&quot; environment. The situation leads to resentment, complaining, many questions, or even resignations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Announcing a decision is a conversation, not broadcasting.&lt;/strong&gt; In conversations, personalization of the language is essential. If you constantly talk formally, you remove the sophistication and the touch of personality. Decisions can be formal, but communication is better in an informal way. The medium of the message (email, Slack, Zoom, etc.) affects this formality a lot. &lt;a href=&quot;/managing-partially-distributed-teams/&quot;&gt;Being thoughtful of the communication tool&lt;/a&gt; increases the probability of a successful presentation as much as the message&apos;s clarity.&lt;/p&gt;
&lt;p&gt;The success of communication alone is not enough. When there is a change, you want people to adapt and change their behaviors as well. Otherwise, the decision is for nothing. Changing people is more complicated than delivering the message. &lt;strong&gt;If you want to change how people behave, make your announcement precise and satisfying&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Along with clarity and sophistication through empathy, making the announcement satisfying is crucial. Even in dense decisions, when the message includes reasons, people tend to feel satisfied because they can make a better judgment instead of speculating.&lt;/p&gt;
&lt;p&gt;Lastly, people forget. If you want people to change their minds or apply a new method, the only way is to &lt;strong&gt;continue repeating the message&lt;/strong&gt;. The problem is not their competence but human nature. Changing the behavior creates natural resistance. However, you have no option other than to repeat the message. What alternative do you have? If you change the message halfway, it will only create confusion, &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;mistrust&lt;/a&gt;, and a lack of direction.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;Decisions change organizations.&lt;/a&gt; These changes should make people a little bit uncomfortable but not chaotic. A low level of comfort is needed for people to wake up and act on it. However, if the change brings chaos, then it means delivering the message or the decision wasn&apos;t that great. In any way, the rule remains: &lt;strong&gt;you can not not-communicate.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/communicating-decisions-in-the-organizations/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/communicating-decisions-in-the-organizations/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to organize your engineering team&apos;s documents?</title><link>https://candost.blog/how-to-organize-your-engineering-teams-documents/</link><guid isPermaLink="true">https://candost.blog/how-to-organize-your-engineering-teams-documents/</guid><description>Every engineering team has some sort of documentation of their team&apos;s work. Most often, these documents get disorganized reasonably quickly. People have a hard time finding their way around. There are some tricks to solve the problem.</description><pubDate>Tue, 13 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every engineering team has some sort of documentation of their team&apos;s work. Most often, these documents get disorganized reasonably quickly. People have a hard time finding their way around. When adding new records becomes painful, people start adding them to the wrong places. There are some tricks to solve the problem.&lt;/p&gt;
&lt;h2&gt;Three Click Rule and Simplicity&lt;/h2&gt;
&lt;p&gt;Making things simple is the power of Apple&apos;s success. They removed every friction as long as they could to achieve simplicity. Reaching the simplest approach requires hard work. As Steve Jobs &lt;a href=&quot;https://www.goodreads.com/quotes/445279-simple-can-be-harder-than-complex-you-have-to-work&quot;&gt;said&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&quot;Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it&apos;s worth it in the end because once you get there, you can move mountains.&quot;&lt;/p&gt;
&lt;p&gt;This &lt;a href=&quot;https://medium.com/swlh/the-psychology-of-simple-fd5d25a3ca#c88c&quot;&gt;simplicity&lt;/a&gt; led to the success of the iPod. Steve Jobs forced the design team to provide access to any song or functionality in only three clicks.&lt;/p&gt;
&lt;p&gt;The documentation&apos;s goal is to record the work and make accessing and finding simple. That&apos;s why using the three-click rule to access any document is one of the most excellent strategies.&lt;/p&gt;
&lt;h2&gt;How to achieve simplicity in documentation?&lt;/h2&gt;
&lt;p&gt;Most often, people confuse two different things. With documentation, the goal is not to keep records; it is to make the information accessible, preferably with less than three clicks. Writing the document itself is keeping a record. Placing it is archiving, making it accessible, and it requires a different mindset.&lt;/p&gt;
&lt;p&gt;To get into this mindset, put yourself as a member of another team. How would you find information as an engineer? What are the essential things you care about? Where would you look for a specific piece of information if you were a product manager? Take a look at the product, engineering, and other perspectives separately. Understanding multiple sides is as important as the document itself.&lt;/p&gt;
&lt;p&gt;The documentation is not only for the team but also for the people from outside. When they reach the home page, they should find what they are looking for quickly. Make the home page for other people, not for you. Don&apos;t put information; instead, use it as a link hub and provide links to important pages.&lt;/p&gt;
&lt;p&gt;Split product, engineering, and team routines into different buckets. Provide product managers their own place and &lt;a href=&quot;/how-to-delegate-anything-successfully/&quot;&gt;delegate&lt;/a&gt; the document organization to them. Use the engineering section for technical documentation. Separate team routines from the technical documentation. What are the things you do regularly? Place them under the routines. For example, onboarding, the definition of done, the definition of ready, meeting notes, vacations, etc., fall into this category.&lt;/p&gt;
&lt;p&gt;In the end, the documentation and how you organize your documentation space will &lt;a href=&quot;/managing-partially-distributed-teams/&quot;&gt;shape your relationship&lt;/a&gt; with the stakeholders and other people in the organization. The relationships demand constant effort and optimism. If you don&apos;t care about your documentation, you will receive a lot of requests and complaints.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-to-organize-your-engineering-teams-documents/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-to-organize-your-engineering-teams-documents/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why I Stopped Live Streams</title><link>https://candost.blog/why-did-i-stop-live-streaming/</link><guid isPermaLink="true">https://candost.blog/why-did-i-stop-live-streaming/</guid><description>I live streamed for fourteen weeks, every Tuesday at 19:00 CET. I had thirteen amazing guests. We talked about many different things in the software industry, ranging from DevOps to marketing. I learned a lot from my guests and enjoyed all the talks. </description><pubDate>Mon, 12 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I live-streamed for fourteen weeks, every Tuesday at 19:00 CET. I had thirteen amazing guests. We talked about many different things in the software industry, ranging from DevOps to marketing. I learned a lot from my guests and enjoyed all the talks. But I decided to stop; here is why.&lt;/p&gt;
&lt;h2&gt;The Dilemma of Structure&lt;/h2&gt;
&lt;p&gt;One of the major problems was either having too much structure or too little structure. Since I was interested in software engineering and development topics, it was hard to have an informal chat. Because the topics require preparation. When you have guests, then you &lt;em&gt;have to&lt;/em&gt; have questions so that you can guide the stream. But apparently, this is &lt;em&gt;not&lt;/em&gt; what people expect from live streams.&lt;/p&gt;
&lt;p&gt;When the talk is live, people expect a more casual chat. Even though we were chatting without any presentation or formality, all the preparations led to not getting enough engagement. Structured live streams are considered like webinars. People hesitate to ask questions.&lt;/p&gt;
&lt;p&gt;Being aware of this doesn&apos;t make it easier. Finding the balance between structure and no structure is extremely hard. Although I was willing to work hard on this, the format didn&apos;t seem a good fit.&lt;/p&gt;
&lt;h2&gt;Public Speaking is Difficult&lt;/h2&gt;
&lt;p&gt;Getting comfortable with public speaking in a second language is difficult. English is not my native language. Although I use it every single day, I still cannot compare myself with native speakers.&lt;/p&gt;
&lt;p&gt;In the live streams, this resulted in me talking more to explain an idea because I wasn&apos;t sure if I was giving the correct message or asking the question in the right way. English is a low-context language. It means that it has particular words to define a situation or a thing. Being concise requires a comprehensive knowledge of vocabulary.&lt;/p&gt;
&lt;p&gt;Preparing questions beforehand helps to solve this problem partially. Yet, the problem is not only the host. The language barrier of listeners is also something to consider.&lt;/p&gt;
&lt;h2&gt;Engagement&lt;/h2&gt;
&lt;p&gt;I was not expecting a lot of people to show up. On average, there were ~15 people in each session. I was pretty surprised to see that many people were watching. Yet, the number of comments and questions on the chat was reasonably small. What I was looking for in these live streams was engagement.&lt;/p&gt;
&lt;p&gt;Engagement in software engineering topics requires focus. Live sessions make it harder. Because people often watch streams while they are eating or doing something else. When the subject demands constant attention, it becomes almost impossible to follow. The lack of a pause button doesn&apos;t help either. When they don&apos;t understand one sentence because of a technical problem on the stream or something else on their side, they are lost. As a host, you don&apos;t see that.&lt;/p&gt;
&lt;p&gt;There is often a delay in live streams. The host doesn&apos;t get an immediate reaction. Sometimes there is a technical delay, or people have a question after thinking about the topic. These kinds of situations create barriers between the host and the viewer. The communication between the audience and the host has to be synchronous, but it&apos;s most often not.&lt;/p&gt;
&lt;h2&gt;Communication Style &amp;amp; Community&lt;/h2&gt;
&lt;p&gt;The power of the internet comes from asynchronous communication. This communication style enables people to connect from two sides of the world. Live events, by nature, are against this power; they are synchronous. Both sync and async communication styles have their places on the internet. However, when it comes to topics with software engineering and leadership, synchronicity falls behind.&lt;/p&gt;
&lt;p&gt;Creating engaging live streams is a local event. While local communities are the way how we live in society, we also have to embrace joining our communities together. When our communities are disengaged from each other, we start living in silos. The success of the internet comes from providing this connection. However, live events, such as live streams, Clubhouse chats, etc., have the central problem of being synchronous. Although I still like talking with people, I don&apos;t think the topics I cover are suitable to live streams. I have other plans for live events.&lt;/p&gt;
&lt;h2&gt;The Podcast Approach&lt;/h2&gt;
&lt;p&gt;While live streaming is focused on talking with viewers, podcasting is talking alone or with guests. The format I chose, interviewing, is the most common and suitable approach to podcasting. I also know that standing out in podcasting is difficult. The podcasts with 10-15 episodes fill the podcast graveyard. When the entry barrier is low to anything, it gets very competitive.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://candost.substack.com/s/podcast&quot;&gt;Podcasting&lt;/a&gt; is evolving every day. I believe that we&apos;re still in the early days of podcasting, and I expect to see many different podcasting formats. Even though I&apos;m only doing interviews right now, I am also looking for new ways to create a podcast. I&apos;m willing to try other styles and learn from them.&lt;/p&gt;
&lt;p&gt;While the competition is fierce, my focus is on satisfying my curiosity. I believe that I will shape the format in time. Finding your style always takes time. The key is to keep the production going.&lt;/p&gt;
&lt;p&gt;Whatever we do, we have to do it consistently for a long time to learn it well. Going forward with high speed is not what makes you stand out. Learning takes time. Whoever learns fast gets ahead in every competition. I learned not to compete with others. My competition is with myself. It&apos;s challenging for me, but now, I can carry all my learnings from 3,5 months of live streaming into podcasting. Stay tuned.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/why-did-i-stop-live-streaming/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/why-did-i-stop-live-streaming/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why Is Writing Important?</title><link>https://candost.blog/why-is-writing-important/</link><guid isPermaLink="true">https://candost.blog/why-is-writing-important/</guid><description>Many software engineers are poor at writing, or they avoid it because they think it takes a lot of time. Yes, it takes time. But it is crucial and cannot be ignored at work.</description><pubDate>Wed, 07 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Many software engineers step back when the time comes to &lt;a href=&quot;/how-to-organize-your-engineering-teams-documents/&quot;&gt;write documentation&lt;/a&gt; or a report. Although most communication in life happens in writing via WhatsApp, Telegram, etc., we avoid writing structured text. &lt;strong&gt;Amid the quick conversations in chat apps or social media, our writing becomes more shallow, along with our thoughts.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The work, especially software engineering, and management, requires deep thinking. The processes of software development need to be created thoughtfully. There are many unknowns in the project development. The dynamic environment prevents us from taking action without &lt;a href=&quot;https://mcfunley.com/choose-boring-technology&quot;&gt;considering many options&lt;/a&gt;. Even before starting coding, we work with diagrams of some sort to bring our ideas into reality and challenge them. Diagrams work for some instances but not all. Thoughtful and structured writing comes into play and fills this gap.&lt;/p&gt;
&lt;p&gt;Writing shapes thoughts. It helps to think deeply, understand the fundamentals, and generate new ideas. &lt;strong&gt;Writing shows us the flaws in our thinking&lt;/strong&gt; and &lt;a href=&quot;/effective-1-1-meetings-one-on-one-meeting-template/&quot;&gt;allows us&lt;/a&gt; to eliminate them. When the thoughts are only on the mind, they don&apos;t stick that long. That&apos;s why we forget the great ideas that come at night. The ideas abandon us quickly.&lt;/p&gt;
&lt;p&gt;When we write things down, they become permanent. Even though we still forget them, they have a higher chance of survival. Remembering something doesn&apos;t mean memorizing. We remember things by going back and taking a look. Our memory works like a network of thoughts. &lt;strong&gt;An idea can only stick with us if we make connections to it.&lt;/strong&gt; The more we visit the node, the stronger these connections become and the less we forget. Improving this network by adding new nodes (notes) helps us improve ourselves and develop new thought processes.&lt;/p&gt;
&lt;p&gt;Written thoughts &lt;a href=&quot;/14-lessons-i-learned-in-10-years/&quot;&gt;teach us&lt;/a&gt; what we think and what we didn&apos;t think before. It moves us from &lt;strong&gt;consumer to creator&lt;/strong&gt;. When we try to create, we notice unthought ideas and missed points. We discover them by writing them in complete sentences, not in short Slack messages.&lt;/p&gt;
&lt;p&gt;In short-term messages, we exchange ideas and open more discussions around the topics that interest us. While we create conversations via casual messages, we &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;stop endless discussions&lt;/a&gt; by writing in structure. When people provide input on them, we &lt;a href=&quot;/managing-partially-distributed-teams/&quot;&gt;develop communities&lt;/a&gt; and move forward together.&lt;/p&gt;
&lt;p&gt;Short-term messages have their use, and they are crucial for our lives. But thoughtful and structured writing is full of surprises. It opens many doors that we aren&apos;t aware of now. Software development demands thinking outside of the box, and writing is one of the best ways to do it. The power of writing lies in using it as a tool instead of thinking of it as a burden.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/why-is-writing-important/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/why-is-writing-important/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#14: Protective Leadership &amp; Finding Your Leadership Style - Suzan Bond</title><link>https://candost.blog/podcast/14-protective-leadership-and-leadership-style/</link><guid isPermaLink="true">https://candost.blog/podcast/14-protective-leadership-and-leadership-style/</guid><pubDate>Wed, 07 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;14: Protective Leadership &amp;amp; Finding Your Leadership Style - Suzan Bond&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/14-protective-leadership-and-leadership-style&quot;&gt;https://candost.substack.com/p/14-protective-leadership-and-leadership-style&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/14-protective-leadership-and-leadership-style/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/14-protective-leadership-and-leadership-style/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Timely Estimations are Underrated!</title><link>https://candost.blog/timely-estimations-are-underrated/</link><guid isPermaLink="true">https://candost.blog/timely-estimations-are-underrated/</guid><description>I have seen the good, the bad, and the ugly parts of different estimation techniques. I think timely estimations are better when they are done right.</description><pubDate>Thu, 01 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve worked with timely estimations, story points, t-shirt sizes, and no-estimations. I have seen the good, the bad, and the ugly. I&apos;ve worked with software engineers who are defendants of timely estimations or opposing them. When they were against it, story points or T-shirt size estimations often convinced them. While a lot of people loved the freedom from the no-estimations technique, I always thought otherwise.&lt;/p&gt;
&lt;p&gt;I was also hyped about not using timely estimations. Although I always struggled to give reasonable size estimates, I couldn&apos;t admit it. Sometimes, I say things like, “Yeah, I can finish it today,” or “This story is 3 points, so I can finish it in around two days.” Once I realized this and took a look at others, I usually see people saying things like these. At least &lt;strong&gt;they say it to themselves, if not out loud&lt;/strong&gt;. Yet, when we talk about timely estimations, they take defense against it.&lt;/p&gt;
&lt;p&gt;While almost all departments are working around the clock, &lt;strong&gt;why is software engineering the only exception?&lt;/strong&gt; Have you seen a finance team saying, &quot;We do not estimate to work on the yearly financial report; whenever we&apos;re done, we will let the tax office know.&quot;? They can&apos;t because the tax office has deadlines. The same applies to budget planning. How can companies invest in new areas if they don&apos;t know their budget plan for the next year?&lt;/p&gt;
&lt;p&gt;It&apos;s the same across other departments, such as marketing. They have to plan the campaigns months ahead. Yet, &lt;strong&gt;they depend on the no-estimation-style-working engineering team&lt;/strong&gt; to start the campaign. A similar thing applies to customer support and legal teams as well. If we want to make our customers happy, we can&apos;t tell them, “We&apos;ll fix your bug whenever we can.” (in theory, we can say this, and we do, but they often want to know when exactly).&lt;/p&gt;
&lt;p&gt;The FAANG drive with the deadlines, and they are innovative. How are they having tight deadlines and making big announcements every year on a single day? We know that aligning all departments to one release date requires extensive effort. All these complex activities are based on software engineers who solve complex problems. Giving timely estimation is another one to tackle. &lt;strong&gt;Aligning with all other departments in the company forces us to work with estimates.&lt;/strong&gt; We need to learn how we can do it in the best way possible.&lt;/p&gt;
&lt;p&gt;In the no-estimation hype train, I see people are afraid to make commitments. Often the reason is &lt;strong&gt;the lack of good estimating skills&lt;/strong&gt;. For worse, sometimes they have apathy for improving themselves in this area. They either see no value or see estimations as damaging.&lt;/p&gt;
&lt;p&gt;Some engineers I have worked with often say, “We don&apos;t want to do time estimates.” Why? Do they fear commitment and making mistakes, or don&apos;t they want to admit that they are bad at estimating? One thing I learned is that &lt;strong&gt;we all are terrible at giving estimations&lt;/strong&gt;. Yet, it&apos;s another skill that is open for improvement and often overlooked. &lt;a href=&quot;/why-cant-this-be-done-sooner/&quot;&gt;Seeing the risks&lt;/a&gt; and dependencies and analyzing the requirements demand a lot of practice. If we don&apos;t focus on improving our skills, they start to rust. &lt;strong&gt;Great engineers &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;improve their skills&lt;/a&gt; day by day, but they build them based on data.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When we make estimations based on only personal judgment, we make inadequate estimations. We need to learn from the data that we collected in previous similar projects. Yet, I rarely see people taking a look back. We also often forget to &lt;strong&gt;include the confidence rate in the estimates.&lt;/strong&gt; (Next time, try giving estimates with this formula: &quot;I&apos;m X% confident that we can finish this task in Y days.&quot; if you don&apos;t do it already.) Without the data and confidence rate, it&apos;s challenging to deliver a good estimation.&lt;/p&gt;
&lt;p&gt;Using techniques such as story points, t-shirt sizes, etc., is more complicated. There is also a problem of alignment in the concept. These techniques depend on the work complexity, which is relative. Juniors&apos; understanding of complexity is different than senior engineers&apos;. But everyone has a sense of time. Although the estimations still might differ, at least everyone is aligned on the concept.&lt;/p&gt;
&lt;p&gt;Using the timely estimation technique has one weakness. It is apt to form toxic environments where people can get blamed or, worse, punished. &lt;strong&gt;Creating a safe environment is more critical than having correct assessments.&lt;/strong&gt; Where people feel safe making a mistake, everyone strives to get better at what they do, including estimating. Safe environments keep the teams focused on what they do. Creating these environments demand good management skills that are hard to find.&lt;/p&gt;
&lt;p&gt;In the absence of excellent management, not using timely estimates leads to top-down deadlines. Unlike engineering teams, &lt;strong&gt;people at the top of the hierarchy often have no idea how much it takes to make something.&lt;/strong&gt; They might use analysis strategies to set deadlines, and these strategies require a steady team. Having a stable team itself is another challenge.&lt;/p&gt;
&lt;p&gt;Teams change all the time. Whenever someone joins or leaves, &lt;a href=&quot;https://en.wikipedia.org/wiki/Tuckman%27s_stages_of_group_development&quot;&gt;the team changes a phase&lt;/a&gt;. Even if the team is stable, the environment is dynamic. Thus, analysis techniques alone don&apos;t work well. We need to enhance our estimation skills based on data to make more solid judgments during a crisis and ambiguity.&lt;/p&gt;
&lt;p&gt;Having timely estimations alone is not the ultimate solution. The teams and team members still need to align well. Leaders take a significant role here in working on this alignment and creating a safe environment. Giving optimal timely estimations is a skill that is often overlooked. Taking a look at the available data to improve the estimation quality is often forgotten. Also, people make many mistakes while growing skills. Working in a place where people support each other makes estimating more pleasant. When people feel safe, they are motivated and more committed to their estimations. Approaching the estimation as a skill and working toward improving it should be the goal. There are a lot of obstacles and failures on this journey. We need to start walking the road until we are comfortable. Once confident, we can start running.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;(If anyone wants to dive deep into learning concepts, and techniques about estimations, I recommend reading &lt;a href=&quot;https://www.goodreads.com/book/show/93891.Software_Estimation&quot;&gt;Software Estimation: Demystifying the Black Art by Steve McConnell&lt;/a&gt;. The book is not theoretical but focused on big projects. It gives the tools that are useful to improve the skills and helpful in discussions.)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/timely-estimations-are-underrated/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/timely-estimations-are-underrated/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Effective 1:1 Meetings—1-on-1 Meeting Template</title><link>https://candost.blog/effective-1-1-meetings-one-on-one-meeting-template/</link><guid isPermaLink="true">https://candost.blog/effective-1-1-meetings-one-on-one-meeting-template/</guid><description>Most of the one-on-one templates I found online did not suit me and were not effective. I picked the best parts adjusted them according to the software engineer&apos;s perspective.</description><pubDate>Thu, 25 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When &lt;a href=&quot;/effective-1-on-1-meetings-own-your-one-on-one-meeting/&quot;&gt;I took ownership&lt;/a&gt; of my one-on-ones with my manager, I searched for a one-one-one template, and most of the things I found did not suit me. As a software engineer, I found most of the templates were focused on the manager&apos;s perspective. However, since &lt;em&gt;I was the facilitator&lt;/em&gt; of the meeting, I picked the best parts from multiple templates and adjusted them according to the software engineer&apos;s perspective.&lt;/p&gt;
&lt;p&gt;After using a new template for months, I can say that &lt;strong&gt;it was a game-changer&lt;/strong&gt;. Now, I join my one-on-ones in full-ready mode. My manager and I understand each other better, and no topic can slip away from our minds (and from the agenda).&lt;/p&gt;
&lt;p&gt;After turning the meeting around, making the meeting more beneficial for the manager was also a question in my mind. Yes, the meeting is about me; however, my manager should also have a place to talk with me about their essential topics. So, we decided to both write into our document and fill the template, &lt;strong&gt;not only me&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Useful Template That Everyone Writes&lt;/h3&gt;
&lt;p&gt;Templates on the internet are often for one side only; managers and engineers use their templates separately. However, we have only one shared document. The most valuable part of it is that &lt;strong&gt;we both write into the same doc&lt;/strong&gt;. Currently, we&apos;re on a bi-weekly schedule for our meetings. During two weeks, we both write whatever comes to our mind without waiting for the meeting.&lt;/p&gt;
&lt;p&gt;We use &lt;a href=&quot;https://www.atlassian.com/software/confluence/&quot;&gt;Confluence&lt;/a&gt; from Atlassian. Confluence sends notifications whenever someone publishes a new version of your document. Writing in between meetings and getting notified helps us to realize some topics that require our attention. For example, some time ago, I wanted to talk about something bothering me in the company, and I saw that my manager had added the same topic to the document. Therefore, I waited for our meeting instead of writing a Slack message to discuss the case we needed to discuss over a call.&lt;/p&gt;
&lt;p&gt;We created a shared document where &lt;strong&gt;both sides can contribute&lt;/strong&gt;. The template forces both sides to focus on the engineer&apos;s issues and &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;growth&lt;/a&gt;, &lt;em&gt;not the projects&apos; status&lt;/em&gt;. Keeping the history in one file helps track previous topics, action items, and learnings, which will become advantageous in the yearly performance review. Having one document will also help to follow up on action items and priorities.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DO THIS:&lt;/strong&gt; Right after the one-one-one meeting, create a new table on top of the shared document. You can copy-paste the table template from the previous week (don&apos;t forget to clean the content).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Template for Remote and On-site One-one-One—Content&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.google.com/document/d/14VBkEvAiaolkW4coqanY6i5NtFSimxNY5EBXtgH4trY/&quot;&gt;Here is the template you can clone.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Using the template might seem like a lot of work. On the contrary, it is compact, and we don&apos;t need to fill all of the sections. We &lt;strong&gt;use whatever is necessary and leave the other parts empty&lt;/strong&gt;. This flexible strategy is what makes the process easy and adaptable.&lt;/p&gt;
&lt;p&gt;Now, let&apos;s talk about the template and how to use each section.&lt;/p&gt;
&lt;h3&gt;1. Things we should talk about&lt;/h3&gt;
&lt;p&gt;This section is the central driving part and the agenda. We write items into this section during the week whenever something happens. Since we both see what the other person wants to talk about, there is no surprise to anyone, and we&apos;re focused.&lt;/p&gt;
&lt;p&gt;We sometimes write only the topic, sometimes a little bit bigger note with a couple of sentences. Writing complete sentences clears the message so that the other side won&apos;t have big questions in mind and doesn&apos;t need to spend some time trying to understand a vague topic. For example, if the manager writes &quot;Salary adjustment&quot; or &quot;unsatisfying work on project X,&quot; often a brief explanation and small details follow up. Thus, the engineer doesn&apos;t get stressed.&lt;/p&gt;
&lt;p&gt;At the same time, we &lt;strong&gt;keep it brief and don&apos;t write ten topics&lt;/strong&gt;. A maximum of three bullet points are achievable in thirty minutes, and &lt;em&gt;less is better&lt;/em&gt;. The time is limited, and using it most beneficially is crucial.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DO THIS:&lt;/strong&gt; Write whatever comes to your mind during the week, don&apos;t limit yourself. Right before the meeting, go over the points and eliminate (or postpone) the low-priority topics. &lt;strong&gt;Have a maximum of three subjects, and less is better.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;2. Things that went well&lt;/h3&gt;
&lt;p&gt;One-on-one meetings often focus on challenges, concerns, or uncomfortable things. The tendency to forget to mention good points hurts appreciation and job satisfaction. This is why we keep this section, and most often, we use it to &lt;strong&gt;show gratitude and identify achievements.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Managers also don&apos;t get much thankfulness. It&apos;s frustrating to constantly deal with never-ending problems while no one is saying a good thing often. After having this section, I realized that my manager is doing a good job. This section forces the engineer to reflect on what the manager has been working on.&lt;/p&gt;
&lt;h3&gt;3. Learnings&lt;/h3&gt;
&lt;p&gt;Even though our expertise or competency is paying our salary, we learn things every single day. If not, then there is a big problem. We use this section to &lt;strong&gt;write down the top one-to-three learnings&lt;/strong&gt;. When there is no item here for over a time, the manager can identify the problem, and we can talk about why there is no learning. If the manager misses this, the engineer can also name the problem and ask for opportunities to learn.&lt;/p&gt;
&lt;h3&gt;4. Feedback&lt;/h3&gt;
&lt;p&gt;Feedback is the &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;most critical mechanism&lt;/a&gt; for humans to grow. Our lives are packed with small feedback. Each PR (pull request) review comment and failed tests are feedback that we need to perform better. While we receive and &lt;a href=&quot;/14-lessons-i-learned-in-10-years/&quot;&gt;provide&lt;/a&gt; extensive feedback, eliminating the high-quality ones and carefully considering them is an important job.&lt;/p&gt;
&lt;p&gt;Even though some people and &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;cultures&lt;/a&gt; are uncomfortable with direct feedback, &lt;strong&gt;this section helps us assess work, collaboration, well-being, and job satisfaction.&lt;/strong&gt; I use this section as much as I can and recommend it too. And since I am the facilitator of the meeting, adding bullet points also nudges my manager to provide feedback.&lt;/p&gt;
&lt;p&gt;On the other hand, managers also need feedback, both positive and negative.&lt;/p&gt;
&lt;h3&gt;5. Challenges &amp;amp; Blockers&lt;/h3&gt;
&lt;p&gt;One-on-one meetings are the place where we get the manager&apos;s help on any blockers or challenges. I share any blockages that prevent me from doing my best work and ask for help from my manager.&lt;/p&gt;
&lt;p&gt;Some challenges are often raised on Slack to act quickly. However, during the meeting, &lt;strong&gt;we brainstormed solutions and highlighted the challenges we faced&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;6. Priorities until we meet again&lt;/h3&gt;
&lt;p&gt;This section aims to ensure our short-term goals are aligned with team and long-term goals. When we prioritize some topics, &lt;strong&gt;we clarify the expectations and make sure that we both agree on them&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;7. Action Items&lt;/h3&gt;
&lt;p&gt;We use this section to write down action items that came out from our meeting. Most of the time, we both have separate action items. &lt;strong&gt;We know what we need to do precisely over the week and have a base to evaluate our work in the next meeting.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Meetings without a clear agenda are most often useless and pointless, especially one-on-ones. This template helps us to use the time most efficiently. Without a particular and consistent structure, we have to reinvent the wheel every time and create agendas for every specific one-on-one meeting. Even if you decide not to use this template and use another that fits your needs, I recommend using it consistently. Same as all habits, it takes a little bit of time. Try to stick to it.&lt;/p&gt;
&lt;p&gt;One-on-ones are your meetings. Own and facilitate them. Give this template a try.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/effective-1-1-meetings-one-on-one-meeting-template/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/effective-1-1-meetings-one-on-one-meeting-template/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #3: Effective 1:1s, DevOps, Atomic Habits, Staff Engineer &amp; more</title><link>https://candost.blog/newsletter/mektup-3/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-3/</guid><pubDate>Thu, 25 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hello friend,&lt;/p&gt;
&lt;p&gt;Every last Thursday of the month, you get this newsletter from me. It takes less than ten minutes to read. I hope you enjoy it. If you do, please share it with your friends.&lt;/p&gt;
&lt;p&gt;After a long time, I traveled by car to see my friends in Berlin. I cannot explain how much I needed it. Now, looking forward to seeing them again and planning the travel to Turkey, my home country.&lt;/p&gt;
&lt;p&gt;On the personal side, I decided to change the format of my Tuesday Livestream talks. There won&apos;t be &lt;em&gt;a live stream&lt;/em&gt; from now on, but I will continue as &lt;em&gt;a podcast&lt;/em&gt;. More on this later under the Software World with Candost topic.&lt;/p&gt;
&lt;p&gt;Now, onto The Mektup.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/mektup-section-header-blog.png&quot; alt=&quot;Mektup Section&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;👥 &lt;a href=&quot;/effective-1-on-1-meetings-own-your-one-on-one-meeting/&quot;&gt;Effective One-on-Ones - Own Your One-on-One Meeting&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I started my professional career, I didn&apos;t have regular one-one-one meetings with my manager. I discussed many topics with my peers instead. Most of the time, they went nowhere. In my latest job, I started having One-on-Ones, and I was already feeling better. However, it was unstructured and needed improvements. So I decided to take ownership of my personal one-one-one meetings with my manager and start facilitating them. I saw that I could solve my problems and get better answers which satisfied me. This mindset resulted in having a better relationship with my manager—check the post to learn how you can do it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🛠 Building Microservices Book Notes - Continued (Chapter 4 &lt;a href=&quot;/books/integrating-microservices-part-1/&quot;&gt;Part 1&lt;/a&gt;, &lt;a href=&quot;/books/integrating-microservices-part-2/&quot;&gt;Part 2&lt;/a&gt;)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On the other hand, I continued publishing my notes from Building Microservices Book by Sam Newman. The fourth chapter, Integration, was a bit longer than the others. So, I posted it in two parts. &lt;a href=&quot;/books/integrating-microservices-part-1/&quot;&gt;The first part&lt;/a&gt; focuses on Synchronous vs. Asynchronous, Remote Procedure Calls, REST, and events. &lt;a href=&quot;/books/integrating-microservices-part-2/&quot;&gt;The second part&lt;/a&gt; is about code reuse, versioning, and user interfaces.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/mektup-section-header-software-world.png&quot; alt=&quot;Software World Section&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⭐️ &lt;a href=&quot;https://candost.substack.com/p/12-the-life-of-a-generalist-software-engineer&quot;&gt;The Life Of a Generalist Software Engineer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ricardo is one of the most generalist engineers I know. He did a variety of things, such as running a company, developing mobile apps, working as a manager, creating web frontend apps, and engineering backend services and APIs. In our talk, one thing was clear you need to be an expert on one topic to become a generalist software engineer. Without knowing one tech stack, it isn&apos;t easy to learn many things at once. Even though I was focused on iOS development for many years, I always considered myself a generalist software engineer. Now, it&apos;s more clear why it worked for me. &lt;a href=&quot;https://candost.substack.com/p/12-the-life-of-a-generalist-software-engineer#details&quot;&gt;Check out the full talk, either as a video or a podcast.&lt;/a&gt;​&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;☀️ &lt;a href=&quot;https://candost.substack.com/p/13-devops-and-site-reliability-engineering&quot;&gt;DevOps and Site Reliability Engineering as a Career&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One of the most popular and demanding career paths is DevOps Engineering, although DevOps is a discipline, not a title. I had a lot of confusion in understanding DevOps and Site Reliability Engineering&apos;s (SRE) differences before our talk with Rene, one of the area&apos;s experts. Rene humbly explained the differences and even laid out great recommendations and tips about starting a DevOps and SRE career and growing it. &lt;a href=&quot;https://candost.substack.com/p/13-devops-and-site-reliability-engineering#details&quot;&gt;Check out the full talk, either as a video or a podcast.&lt;/a&gt;​&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;❗️ Update about Software World with Candost:&lt;/strong&gt;
I decided to stop live streaming. I am currently writing a post about the reasoning. However, the main decisive factor is seeing the higher benefits of creating other types of content than the live version. That means, instead of having live sessions, I will now continue as a &lt;em&gt;&lt;strong&gt;podcast&lt;/strong&gt;&lt;/em&gt;. Every Tuesday at the same time (19:00 CET, 11:00 PT), there will be a new episode starting in April. And you will also sometimes hear me speaking alone. I am very excited about the new format. If you want to join me in one of the sessions, reply to this email.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/mektup-section-header-interesting-things.png&quot; alt=&quot;Interesting Things Section&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;☝️ &lt;a href=&quot;https://charity.wtf/2021/03/07/know-your-one-job-and-do-it-first/&quot;&gt;Know Your One Job and Do It First&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s the story of an engineer who does a lot of &lt;a href=&quot;https://noidea.dog/glue&quot;&gt;glue work&lt;/a&gt; but lacks technical work. Charity Majors suggests that if you are working on a lot of stuff that impacts the company while being an engineer, you should focus on your job and do that well first. Suppose you have the feeling that you&apos;re doing many things for the company while not entirely focused on the technical work you&apos;re hired for. If you feel this way, you should read this post and &lt;a href=&quot;https://charity.wtf/2021/03/09/know-your-one-job-continued/&quot;&gt;the follow-up post&lt;/a&gt;, and I even recommend you send this to your manager and talk about your career. That&apos;s what I did.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;✊ &lt;a href=&quot;https://staffeng.com/guides&quot;&gt;Staff Engineer Guides&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Will Larson was writing a lot of articles and guided around being a Staff Engineer. I found them very helpful and already bought the book Staff Engineer and added it to my to-read pile. If you would like to advance your career in the individual contributor track, not manager, I highly recommend Will&apos;s articles. I haven&apos;t read the book yet, but some of my friends liked it a lot.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🧐 &lt;a href=&quot;https://medium.com/@easement/improving-morale-using-paloma-medinas-biceps-framework-and-a-colorful-spreadsheet-e19dfa9c8230&quot;&gt;Improving Morale Using Paloma Medina&apos;s BICEPS Framework&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;BICEPS framework focuses on morale and points out where precisely it&apos;s getting worse. The spreadsheet attached to the article uses coloring to point out the problematic cases. Usually, managers should initiate implementing the framework; however, everyone can do it by themselves. I did it alone and found out that I had red alerts in five points. Now, at least that I know the specific problem, I&apos;m looking at ways to improve them.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/mektup-section-header-books.png&quot; alt=&quot;Books Section&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Last month, after reading How to Take Smart Notes, I finally saw ever-growing and very well-connected notes in my Notion. I am delighted that I gave a shot to the Zettelkasten Method. I recommend it to anyone who is not happy with their note-taking system.&lt;/p&gt;
&lt;p&gt;👉 This month, I started reading &lt;a href=&quot;https://jamesclear.com/atomic-habits&quot;&gt;Atomic Habits&lt;/a&gt; (by James Clear) with one of my friends. This book was recommended to me by many different people and was staring at me on my Kindle for a while. So far, we are reading the second and third chapters. I must admit that up until now, I very much liked the book. The stories and problems defined in the book resonate with me a lot. It has an unambiguous and easy language. While we read this with my friend, we decided to publish our talk and start a new podcast called &lt;a href=&quot;https://bitekdunya.substack.com/&quot;&gt;Bi&apos; Tek Dünya&lt;/a&gt; (The podcast is Turkish 🇹🇷 ).&lt;/p&gt;
&lt;p&gt;🗣 After I evaluated and restructured Software World with Candost Show, I wanted to improve my public speaking. I was already following Lara Hogan, so I picked up her book, &lt;a href=&quot;https://larahogan.me/speaking/&quot;&gt;Demystifying Public Speaking&lt;/a&gt;. So far, my biggest highlight is &quot;Turn your fear and anxiety about public speaking to deeply caring about the topic or subject. There is no shame in caring stuff.&quot; This idea is excellent, and it has already helped me look at the topics of my talks from a different angle.&lt;/p&gt;
&lt;p&gt;🚢 I finished reading &lt;a href=&quot;/books/turn-the-ship-around-summary-book-chapter-notes/&quot;&gt;Turn the Ship Around&lt;/a&gt; by &lt;a href=&quot;https://davidmarquet.com/&quot;&gt;David Marquette&lt;/a&gt;, a retired submarine captain. The army and navy are well known for being hierarchical and having top-down decision-making processes. Marquette explains how he created bottom-up processes in the book, as he calls intent-based leadership. Everyone makes decisions but only informs the boss about their intent. Although I liked the book very much, I find it hard to implement the ideas laid down there. To execute some ideas from the book, you still need to be at the top of the organization. If you&apos;re at the bottom or near the bottom, it is hard to apply similar strategies. If you read this book, let me know what you think.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/mektup-section-header-closing-thoughts.png&quot; alt=&quot;Closing Thoughts Section&quot; /&gt;&lt;/p&gt;
&lt;p&gt;🤙 Many overwhelming things are happening around us. It&apos;s been a year since the first lockdown started here in Europe. It&apos;s visible that some people don&apos;t care about anything while others fight &lt;a href=&quot;https://www.vogue.com/article/lockdown-fatigue-meaning-symptoms&quot;&gt;lockdown fatigue&lt;/a&gt;. If you feel alone and stressed and want to talk to someone, go to &lt;a href=&quot;https://superpeer.com/candost&quot;&gt;superpeer.com/candost&lt;/a&gt; and book a call with me using the &quot;3MEKTUP100&quot; discount code (limited to the first ten people). The code will give you a 100% discount so that anything you book is free.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;That&apos;s it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do you like this newsletter?&lt;/strong&gt; I&apos;m curious about what passes from your screen or which book you are reading. I read and answered all my emails.&lt;/p&gt;
&lt;p&gt;Until receiving your email, see you around, my friend!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-3/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-3/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Effective 1:1 Meetings—Own Your 1-on-1</title><link>https://candost.blog/effective-1-on-1-meetings-own-your-one-on-one-meeting/</link><guid isPermaLink="true">https://candost.blog/effective-1-on-1-meetings-own-your-one-on-one-meeting/</guid><description>When I changed my perspective and worked on improving my one-one-one meetings, the results were terrific. Now, I have better communication with my manager, and I feel that I&apos;m learning and growing way faster than usual.</description><pubDate>Wed, 17 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For the last seven years as a software engineer, I have had managers who don&apos;t care about one-on-ones and managers who do one-on-ones but not effectively. Managers (or leaders, whatever we call) who are doing adequate one-on-ones are rare. That&apos;s why we can&apos;t leave it to chance; we have to step up here. When I changed my perspective and worked on improving the meeting, the results were terrific. Now, I have better communication with my manager, and I feel that I&apos;m learning and growing way faster than usual.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This article summarizes how I changed my perspective and owned my meetings, along with a small tip for preparation.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Why do One-on-Ones Matter? Change the perspective&lt;/h2&gt;
&lt;p&gt;We often find ourselves giving status reports about our work in one-one-one meetings with our managers. When a manager asks, &quot;How is it going?&quot; we default to discuss projects and the current status. Some good managers intentionally ask more specified questions about our &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;personal growth&lt;/a&gt;. At these times, we often can&apos;t find a concrete action to talk about, or we can&apos;t pinpoint a topic that&apos;s bothering us.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When nobody cares to improve the quality of time, one-on-ones start becoming another meeting-that-could-have-been-an-email (or Slack message).&lt;/strong&gt; Managers excuse themselves by saying, &quot;It&apos;s your meeting, your chance to talk.&quot; They often don&apos;t act on improving these meetings. They also usually ask, &quot;What do you want to talk about today?&quot; or &quot;Do you have something to talk about?&quot;. When we face these questions, doesn&apos;t it say that we should own the meeting and make it better? The questions point out that the focus is on the engineer, not the manager, and not the project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It&apos;s the engineer&apos;s meeting.&lt;/strong&gt; If we are not happy with something, it&apos;s time for us to complain. If we like everything, it&apos;s a place to share our happiness. If we have a question or doubt about our career, now it&apos;s our turn to talk!&lt;/p&gt;
&lt;h2&gt;Turn the Meeting Around&lt;/h2&gt;
&lt;p&gt;The meeting is about you, the engineer, the challenges you face, and your career growth. &lt;strong&gt;When the topic is you, there is no one else who can facilitate the meeting.&lt;/strong&gt; The manager might set 30 mins for the meeting. However, it&apos;s up to you how to spend that time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DO THIS:&lt;/strong&gt; When they ask, &quot;How is it going in the X project?&quot; don&apos;t fall into the giving status report trap. If the manager asks for a status report, close the topic as fast as possible and get to your point.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When I realized this, I talked with my manager and said that I didn&apos;t want this meeting to be a status update meeting. After having a small conversation about the format, we decided that we&apos;ll not fall into status updates. It requires effort in the beginning. However, we started using one shared &lt;a href=&quot;/effective-1-1-meetings-one-on-one-meeting-template/&quot;&gt;document&lt;/a&gt; that helped us tremendously stay on track. If you find yourself going back to status updates, be mindful and remind your manager that you don&apos;t want to talk about the project.&lt;/p&gt;
&lt;p&gt;On the other hand, owning doesn&apos;t mean that you should talk all the time. &lt;strong&gt;The meeting is bidirectional.&lt;/strong&gt; Although you are the subject, it is the time to collect &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;feedback&lt;/a&gt;, ask for opinions, and share perspectives. &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;Good communication&lt;/a&gt; happens when two sides exchange thoughts and feelings constantly. And everyone knows that expressing emotions and talking about challenges are already complicated. That&apos;s why you need to come prepared.&lt;/p&gt;
&lt;h2&gt;Prepare for Your One-on-One&lt;/h2&gt;
&lt;p&gt;The one-one-one meetings are the most critical recurring meetings about your career growth. &lt;strong&gt;Performance review meetings (yearly or 6-monthly) are the result of one-on-ones.&lt;/strong&gt; So, you cannot go there without preparation. And most of the time, all you need is ten to fifteen minutes. There are two ways for it: preparation right before the meeting or taking small notes time-to-time over the week. I recommend the latter.&lt;/p&gt;
&lt;h2&gt;How to Prepare Your Next One-on-One&lt;/h2&gt;
&lt;p&gt;Whenever something happens that challenges you and you want to talk with your manager, &lt;strong&gt;&lt;a href=&quot;/why-is-writing-important/&quot;&gt;write it down&lt;/a&gt;&lt;/strong&gt;. It can be a small post-it or a long text; it&apos;s up to you. Take note with an eye towards the meeting. &lt;a href=&quot;/effective-1-1-meetings-one-on-one-meeting-template/&quot;&gt;Use a one-on-one meeting template to shape your thoughts better&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Think about the future.&lt;/strong&gt; If you have decided on your career path, write down how your manager can help you. If you haven&apos;t decided yet, then it&apos;s already something that you should talk about it.&lt;/p&gt;
&lt;p&gt;Bring up &lt;a href=&quot;https://jvns.ca/blog/brag-documents/&quot;&gt;the brag document&lt;/a&gt; when it&apos;s necessary. &lt;strong&gt;The goal is not to brag but instead share the success and wins, making them visible.&lt;/strong&gt; Managers miss these small wins because they are probably not working hands-on. Share the achievement.&lt;/p&gt;
&lt;p&gt;While writing down your notes, keep an eye on the meeting. Write with purpose. The goal is to use the discussion in the most impactful and efficient way. If you think you cannot fit all the topics into the meeting, ask for an extension or postpone them to the next one. You can even eliminate some of them to pick your battles wisely. If you postpone, mention that you want to discuss it in the next one; don&apos;t let it go unnoticed. You can also share what you want to talk about in a written message.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DO THIS:&lt;/strong&gt; Take note whenever something pops up. You don&apos;t have to write prose. But use &lt;a href=&quot;https://www.scientificamerican.com/article/a-learning-secret-don-t-take-notes-with-a-laptop/&quot;&gt;pen-and-paper first&lt;/a&gt;. Take notes by hand. This writing overall sounds very time-consuming. However, you can write a note just in a minute.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Don&apos;t Forget The Feedback&lt;/h2&gt;
&lt;p&gt;Without feedback, I don&apos;t know how we can survive. &lt;strong&gt;It&apos;s the single most effective mechanism for any &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;growth&lt;/a&gt;.&lt;/strong&gt; Therefore, look for opportunities to ask for &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;feedback&lt;/a&gt; everywhere.&lt;/p&gt;
&lt;p&gt;If there is a new project, ask about how your progress is. Instead of talking about tasks or project details (remember, no status update), focus on your contribution and how you can do it better. If there is a point where you don&apos;t feel you did a good job, bring this up. This behavior will form &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;trust&lt;/a&gt;. Accept failures and own mistakes. Approach them with curiosity and seek opportunities to learn from them.&lt;/p&gt;
&lt;p&gt;Don&apos;t forget to give feedback, too. If you like the new company announcement, say it. &lt;strong&gt;Managers don&apos;t get positive feedback a lot.&lt;/strong&gt; They primarily receive complaints, and as a result, they mainly work on the problems. When they hear something positive, it motivates them and makes them feel better. And this will help them to come to 1-on-1 in a better mood. Because when people receive a compliment or hear good things, they start enjoying these talks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DO THIS:&lt;/strong&gt; Ask for feedback on your career &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;growth&lt;/a&gt; and your approach to the projects. Don&apos;t focus on the work itself; instead, seek input on how you can do better. Also, write down a minimum of one positive feedback and share this in the meeting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;It is Your Meeting&lt;/h2&gt;
&lt;p&gt;Communication and relationship is not a one-way road. It&apos;s bidirectional. Healthy work relationships are built with &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;trust&lt;/a&gt; that requires &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;effective and clear communication&lt;/a&gt; from both sides. Use this perspective in the meeting. Sometimes it&apos;s okay to complain. Let your dissatisfaction and angriness out. It&apos;s part of the game. However, don&apos;t forget to focus on how to solve the problems later on.&lt;/p&gt;
&lt;p&gt;In the end, the meeting is about you, the engineer. If so, then it&apos;s yours. Use it wisely and get the most benefit out of it.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/effective-1-on-1-meetings-own-your-one-on-one-meeting/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/effective-1-on-1-meetings-own-your-one-on-one-meeting/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#13: DevOps and Site Reliability Engineering as a Career - Rene Hernandez</title><link>https://candost.blog/podcast/13-devops-and-site-reliability-engineering/</link><guid isPermaLink="true">https://candost.blog/podcast/13-devops-and-site-reliability-engineering/</guid><pubDate>Thu, 11 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;13: DevOps and Site Reliability Engineering as a Career - Rene Hernandez&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/13-devops-and-site-reliability-engineering&quot;&gt;https://candost.substack.com/p/13-devops-and-site-reliability-engineering&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/13-devops-and-site-reliability-engineering/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/13-devops-and-site-reliability-engineering/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building Microservices: Integration of Microservices - Part 2</title><link>https://candost.blog/books/integrating-microservices-part-2/</link><guid isPermaLink="true">https://candost.blog/books/integrating-microservices-part-2/</guid><description>The most important aspect of technology correlated with microservices is integration. When we get it right, microservices are autonomous and independent. If we get it wrong, the risk of catastrophe increases.</description><pubDate>Tue, 09 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This post is Chapter 4, Part 2 of my notes from the book &lt;a href=&quot;https://samnewman.io/books/building_microservices/&quot;&gt;Building Microservices: Designing Fine-Grained Systems&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;/books/microservices-and-their-benefits/&quot;&gt;Chapter 1: Microservices and Their Benefits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-evolutionary-architect/&quot;&gt;Chapter 2: The Evolutionary Architect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/how-to-model-microservices/&quot;&gt;Chapter 3: How to Model Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-1/&quot;&gt;Chapter 4, Part 1: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-2/&quot;&gt;Chapter 4, Part 2: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/splitting-the-monolith/&quot;&gt;Chapter 5: Splitting the Monolith&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;DRY and the Perils of Code Reuse in Microservice World&lt;/h2&gt;
&lt;p&gt;Whatever it takes, we should avoid overly coupling microservice and its consumers. A small change to the microservice shouldn&apos;t cause unnecessary changes in the consumer.&lt;/p&gt;
&lt;p&gt;A potential form of coupling occurs if our shared code leaks outside of the service boundary. Common code usages like logging libraries are acceptable because they are not visible from the outside world. One solution to prevent leaks might be using service templates to bootstrap new service creations. Including everything we need in the template keeps us safe.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Don&apos;t violate DRY within a microservice, but be relaxed about violating DRY across all services.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Too much coupling is worse than code duplication.&lt;/p&gt;
&lt;h3&gt;Client Libraries&lt;/h3&gt;
&lt;p&gt;When considering writing client libraries, separate client code to handle service discovery and failure from things related to the service itself. More logic in the client library means breaking down more cohesion.&lt;/p&gt;
&lt;h2&gt;Access by Reference&lt;/h2&gt;
&lt;p&gt;In event-based communication, when events happen, we need to know what happened. When we receive and events that inform an updated resource, it is useful to understand how the resource was before the update. Adding a reference to the entity is helpful so that we can also look up its current state.&lt;/p&gt;
&lt;p&gt;We are making trade-offs here. If we always access the entity by reference, we increase the load on the service. However, when we receive the event, we can get additional information about what was the resource&apos;s state when an event happened. If we know how long we can consider the information as fresh, we can cache the resource load. (HTTP has a variety of cache control support)&lt;/p&gt;
&lt;p&gt;There is no one-solution-to-all. We need to be careful when passing the data around when we don&apos;t know its freshness.&lt;/p&gt;
&lt;h2&gt;Versioning&lt;/h2&gt;
&lt;h3&gt;Defer It for as Long as Possible&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The best way to reduce the impact of making breaking changes is to avoid making them in the first place.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Another way to delay the breaking change is to assist our services&apos; consumers by not binding too tightly to our services.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Be conservative in what you do, be liberal in what you accept from others.&quot; - Postel&apos;s Law&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Catch Breaking Changes Early&lt;/h3&gt;
&lt;p&gt;Consumer-driven contract testing is a good helper here. If we support multiple consumers, we can use run tests using these consumers against the latest version of the service.&lt;/p&gt;
&lt;h3&gt;Use Semantic Versioning&lt;/h3&gt;
&lt;p&gt;It&apos;s not commonly used in distributed systems. However, use semantic versioning either in the full service or in a single endpoint.&lt;/p&gt;
&lt;h3&gt;Coexist Different Endpoints&lt;/h3&gt;
&lt;p&gt;After staying away from introducing a breaking change, the next thing is limiting the impact. We don&apos;t want to force our consumers to upgrade in lock-step with us. Our goal is to release microservices independently of each other.&lt;/p&gt;
&lt;p&gt;One way of decreasing the impact is coexisting the old and new interfaces in the same running service. We can release the new interface without impacting the consumers. And they can switch to a new one independently. Once they all use the new one, we can remove the old interface from our services. In this way, we phase our breaking changes in.&lt;/p&gt;
&lt;h3&gt;Use Multiple Concurrent Service Versions&lt;/h3&gt;
&lt;p&gt;This approach is another not-so-great one; however, it exists. Netflix uses it rarely. The idea is to keep the old and new versions of the systems live at once as separate services accessing the same database.&lt;/p&gt;
&lt;p&gt;The problem with this approach is once we discover a bug, we need to fix and deploy two different services. Simultaneously, directing the traffic appropriately to these services requires a lot of configuration—also, the complexity of data persistency increases.&lt;/p&gt;
&lt;h2&gt;User Interfaces&lt;/h2&gt;
&lt;p&gt;Constraints from the web and mobile clients are very different. Although our services provide the same functionality, we need a way to adapt our services to these constraints.&lt;/p&gt;
&lt;p&gt;There are a few models to do this.&lt;/p&gt;
&lt;h3&gt;API Composition&lt;/h3&gt;
&lt;p&gt;Exposing our APIs to mobile and web clients is one way. This way, the clients can use whichever service they need. However, there are some downsides to this approach.&lt;/p&gt;
&lt;p&gt;First, we cannot adapt the response to the devices we serve. Since everyone gets the same response, some clients can get the data they don&apos;t need. One solution is letting customers specify the fields they want.&lt;/p&gt;
&lt;p&gt;Second, creating the interface is tricky. Who will create the user interface? If some other team is building the UI, we welcome layered architecture where making a change requires multiple team collaboration.&lt;/p&gt;
&lt;p&gt;Lastly, communication can increase. Sending a lot of requests from mobile devices is not efficient for the device. It can drain the battery and the data plan of our customers.&lt;/p&gt;
&lt;h3&gt;UI Fragment Composition&lt;/h3&gt;
&lt;p&gt;Our services can provide the UI directly instead of mapping API calls to UI controls. Clients can use the UI we offer, and we can be responsible for these UI elements.&lt;/p&gt;
&lt;p&gt;The critical advantage is using the same team for both developing the service and the user interface. However, there are downsides. Ensuring UI consistency might be problematic. Since different people own the UI of various services, aligning them is something we need to be careful about.&lt;/p&gt;
&lt;p&gt;Another and more problematic downside is, having native applications or thick clients. We can&apos;t serve UI components to them. So, if we need a native application, we don&apos;t have another choice of falling back to the setup where the native application makes an API call and handles the UI itself.&lt;/p&gt;
&lt;h3&gt;Backends for Frontends (BFFs)&lt;/h3&gt;
&lt;p&gt;This approach is one solution to reduce the chattiness between the API provider and the clients. It can aggregate content and serve it as well. However, it might easily lead to disaster when these endpoints become very thick and keep too much logic inside. Separate teams start managing them, and this means we have coupled teams.&lt;/p&gt;
&lt;p&gt;Instead of having one service to serve multiple clients, we can have smaller services (BFFs) where any UI team handles its service itself. The problem with this is that the service can hold the logic it shouldn&apos;t have initially. They should only consist of functionality to deliver a specific user experience, not more than that.&lt;/p&gt;
&lt;h3&gt;Hybrid Approach&lt;/h3&gt;
&lt;p&gt;The approaches mentioned above can be mixed and used together for different services. However, be careful and keep the logic of the service inside the service.&lt;/p&gt;
&lt;h2&gt;Integrating with Third-Party Software&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Build if it is unique to what you do and can be considered a strategic asset; buy if your use of the tool isn&apos;t that special.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/integrating-microservices-part-2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/integrating-microservices-part-2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building Microservices: Integration of Microservices - Part 1</title><link>https://candost.blog/books/integrating-microservices-part-1/</link><guid isPermaLink="true">https://candost.blog/books/integrating-microservices-part-1/</guid><description>The most important aspect of technology correlated with microservices is integration. When we get it right, microservices are autonomous and independent. If we get it wrong, the risk of catastrophe increases.</description><pubDate>Thu, 04 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This post is Chapter 4, Part 1 of my notes from the book &lt;a href=&quot;https://samnewman.io/books/building_microservices/&quot;&gt;Building Microservices: Designing Fine-Grained Systems&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;/books/microservices-and-their-benefits/&quot;&gt;Chapter 1: Microservices and Their Benefits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-evolutionary-architect/&quot;&gt;Chapter 2: The Evolutionary Architect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/how-to-model-microservices/&quot;&gt;Chapter 3: How to Model Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-1/&quot;&gt;Chapter 4, Part 1: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-2/&quot;&gt;Chapter 4, Part 2: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/splitting-the-monolith/&quot;&gt;Chapter 5: Splitting the Monolith&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;The most important aspect of technology correlated with microservices is integration. When we get it right, microservices are autonomous and independent. If we get it wrong, the risk of catastrophe increases.&lt;/p&gt;
&lt;h2&gt;Guidelines for the Ideal Integration Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Avoid Breaking Changes&lt;/li&gt;
&lt;li&gt;Keep Your APIs Technology-Agnostic&lt;/li&gt;
&lt;li&gt;Make Your Service Simple for Consumers&lt;/li&gt;
&lt;li&gt;Hide Internal Implementation Detail&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Shared Database&lt;/h2&gt;
&lt;p&gt;Database integration is the most common one when we look around the industry.&lt;/p&gt;
&lt;p&gt;When we share the database, we allow multiple services (and possible external parties) to bind to internal implementation details. When we want to change the DB schema, we can easily break the consumers. This situation results in a lot of regression testing.&lt;/p&gt;
&lt;p&gt;At the same time, we tie the consumers to a specific technology stack, our database of choice.&lt;/p&gt;
&lt;p&gt;The shared database doesn&apos;t fit our guidelines. It doesn&apos;t hide internal implementation details. If we use shared databases, we need to change every consumer. In the end, it causes &lt;a href=&quot;/books/how-to-model-microservices/&quot;&gt;tight coupling and weak cohesion&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Synchronous vs. Asynchronous&lt;/h2&gt;
&lt;p&gt;The request/response model aligns with both synchronous and asynchronous communication.&lt;/p&gt;
&lt;p&gt;The event-based collaboration model is the opposite of the request/response model. Instead of sending a request and initiating action, we inform other parties of an event and expect them to know what to do. Event-based systems are asynchronous.&lt;/p&gt;
&lt;h2&gt;Orchestration versus Choreography&lt;/h2&gt;
&lt;p&gt;In orchestration, we have one service communicating with multiple services to do one task. The service plays the orchestrator role by sending requests to others and organizing the response according to their responses. In this method, we have to take care of things like single service failure. The services become tightly coupled, and one change requires more in others.&lt;/p&gt;
&lt;p&gt;In Choreography, one service publishes an event, and the others who subscribe to the event take action and do the job. The system is more loosely coupled and more flexible. However, this system requires extra work for monitoring and tracking the process across system boundaries.&lt;/p&gt;
&lt;p&gt;&quot;I strongly prefer aiming for a choreographed system, where each service is smart enough to understand its role in the whole dance.&quot;&lt;/p&gt;
&lt;h2&gt;Remote Procedure Calls&lt;/h2&gt;
&lt;p&gt;&quot;Remote procedure call refers to the technique of making a local call and having it execute on a remote service somewhere.&quot;&lt;/p&gt;
&lt;h3&gt;Downsides of Some RPC Implementations&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Technology Coupling&lt;/li&gt;
&lt;li&gt;Local Calls Are Not Like Remote Calls&lt;/li&gt;
&lt;li&gt;They are not the same, and RPC hides this fact.&lt;/li&gt;
&lt;li&gt;The fallacy of assuming the network is always reliable makes debugging harder.&lt;/li&gt;
&lt;li&gt;Brittleness&lt;/li&gt;
&lt;li&gt;Some RPC implementations require deploying both the new version of the server and clients at the same time. Not being able to separate the client and server deployments is one of the challenges of binary stub generation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Is RPC Terrible?&lt;/h3&gt;
&lt;p&gt;No, not that much.&lt;/p&gt;
&lt;p&gt;Make sure to derive the server without locking the upgrades of the client and server together. And make your network visible by not abstracting the remote calls too much. Make sure that the clients know that they will make a network call. Structure the client libraries right.&lt;/p&gt;
&lt;h2&gt;REST&lt;/h2&gt;
&lt;p&gt;The concept of resources is crucial in microservices. In REST, the external representation of a resource is decoupled with an internal stored format.&lt;/p&gt;
&lt;h3&gt;REST and HTTP&lt;/h3&gt;
&lt;p&gt;HTTP provides useful capabilities (such as verbs like GET and POST) and comes with a great ecosystem of tools and technology aligned with the REST style.&lt;/p&gt;
&lt;p&gt;HTTP can be used with RPC, too. But RPC doesn&apos;t use a lot of things HTTP provides.&lt;/p&gt;
&lt;h3&gt;Hypermedia As The Engine of Application State (HATEOAS)&lt;/h3&gt;
&lt;p&gt;Content contains links to other resources, and the client should communicate with the server via these links. It&apos;s like a web page containing links, and we (people) navigate to these links once we need them. In software service, we can imagine having a User resource. Once the client requests a specific user, we return data, including more resource links to details about the user. If a client needs these details, it can navigate and request more data or take action using these links.&lt;/p&gt;
&lt;p&gt;The advantage of HATEOAS is that being able to change the implementation details of the links. We can change the behavior entirely without needing a change in the client. However, if we perform a fundamental change in the action (link) or remove the action from the content, we can break consumers.&lt;/p&gt;
&lt;p&gt;One trade-off is having back-and-forth communication between the client and server. The client needs to navigate around the actions and follow the links in the responses. The main suggestion is to let the client navigate around and optimize later on when necessary.&lt;/p&gt;
&lt;h3&gt;Beware Too Much Convenience&lt;/h3&gt;
&lt;p&gt;&quot;How we decide to store our data, and how we expose it to our consumers, can easily dominate our thinking.&quot;&lt;/p&gt;
&lt;p&gt;One recommendation is that until we understand consumer needs, we can leave the database out and use a text file. Once we know the data format that satisfies the consumer, we can choose the technology and how we store it.&lt;/p&gt;
&lt;h3&gt;Downsides to REST Over HTTP&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Client stub generation is not as easy as RPC.&lt;/li&gt;
&lt;li&gt;All HTTP verbs are not well-supported in some web frameworks.&lt;/li&gt;
&lt;li&gt;The performance is not even comparable with a binary protocol like Thrift. In low-latency requirements, HTTP overhead may be a burden. The alternative protocols built on top of TCP or similar can be more efficient. If extremely low latency is essential, we can pick UDP for server-to-server communication, and many RPC frameworks run it very well.&lt;/li&gt;
&lt;li&gt;Payload consumption requires more work than some RPC implementations. Data serialization and deserialization are extra work.&lt;/li&gt;
&lt;li&gt;If you want to learn more, check out &lt;a href=&quot;https://www.oreilly.com/library/view/rest-in-practice/9781449383312/&quot;&gt;REST in Practice&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Implementing Asynchronous Event-Based Collaboration&lt;/h2&gt;
&lt;h3&gt;Technology Choices&lt;/h3&gt;
&lt;p&gt;The vital point is considering two parts: a way to emit events from our microservices and a way for our consumers to receive these events.&lt;/p&gt;
&lt;p&gt;There is an option of using message brokers as middleware. Message brokers are built scalable and can help. However, we need to know what we are getting. So we should keep our middleware simple and move logic to the endpoints.&lt;/p&gt;
&lt;h3&gt;Complexities of Asynchronous Architectures&lt;/h3&gt;
&lt;p&gt;We need to be careful about adopting our systems to event-driven architectures and asynchronous programming. Their complexity requires having a robust setup with correlation IDs (distributed tracing) across process boundaries.&lt;/p&gt;
&lt;h2&gt;Services as State Machines&lt;/h2&gt;
&lt;p&gt;Thinking of the services as state machines is a powerful method regardless of REST or RPC choice. Having the lifecycle of the domain enables us to add new behavior easily, manage the state of the system from one place and understand what&apos;s there.&lt;/p&gt;
&lt;h2&gt;Reactive Extensions&lt;/h2&gt;
&lt;p&gt;Reactive Extensions (Rx) revert the traditional data flows. The conventional mechanism of asking for data and waiting for a response turns into observing the result of either blocking or non-blocking operation(s) and performing actions when something changes.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/integrating-microservices-part-1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/integrating-microservices-part-1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#11: Learning and Growing in Front-end Development - Ali Spittel</title><link>https://candost.blog/podcast/11-learning-and-growing-in-front-end-development/</link><guid isPermaLink="true">https://candost.blog/podcast/11-learning-and-growing-in-front-end-development/</guid><pubDate>Wed, 03 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;11: Learning and Growing in Front-end Development - Ali Spittel&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/11-learning-and-growing-in-front-end-development&quot;&gt;https://candost.substack.com/p/11-learning-and-growing-in-front-end-development&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/11-learning-and-growing-in-front-end-development/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/11-learning-and-growing-in-front-end-development/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#12: The Life of a Generalist Software Engineer - Ricardo Smania</title><link>https://candost.blog/podcast/12-the-life-of-a-generalist-software-engineer/</link><guid isPermaLink="true">https://candost.blog/podcast/12-the-life-of-a-generalist-software-engineer/</guid><pubDate>Wed, 03 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;12: The Life of a Generalist Software Engineer - Ricardo Smania&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/12-the-life-of-a-generalist-software-engineer&quot;&gt;https://candost.substack.com/p/12-the-life-of-a-generalist-software-engineer&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/12-the-life-of-a-generalist-software-engineer/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/12-the-life-of-a-generalist-software-engineer/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #2</title><link>https://candost.blog/newsletter/mektup-2/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-2/</guid><pubDate>Thu, 25 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hi friend! I hope you and everyone you care about are well.&lt;/p&gt;
&lt;p&gt;I&apos;ve spent quite some time with many e-mail tools and this month I&apos;m trying ConvertKit. While writing and publishing on Substack were easy, I wanted to own and have more control over the content I produce. So, I will move out from Substack, use ConvertKit and publish these emails on my website as well.&lt;/p&gt;
&lt;p&gt;Tools like Substack creates a marketplace and brings discoverability to the table. After choosing to own the content, the effort to make it discoverable is immense. The same applies to &lt;a href=&quot;https://superpeer.com/candost&quot;&gt;Superpeer&lt;/a&gt; for my live streams. Even though I love Superpeer and its easiness, it&apos;s not great for discoverability. I&apos;m considering hosting live streams somewhere other than Superpeer as well. If you have any suggestions, hit the reply button and let me know.&lt;/p&gt;
&lt;p&gt;Now, onto the Mektup.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/mektup-section-header-interesting-things.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;👌 &lt;a href=&quot;https://chriskiehl.com/article/thoughts-after-6-years&quot;&gt;Software Development Topics I&apos;ve Changed My Mind on After 6 Years in the Industry&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Every career has stages. Our thoughts and perspectives change, we learn and evolve. We drop some ideas on the way while learning new ones. This is what we call growth. What Chris shared in the article is one of the good examples of growth. I&apos;ve experienced a similar thought process. I disagree with some of Chris&apos;s opinions, such as the ineffectiveness of project managers or calling people weirdos. But, he has good points where we can learn. I also &lt;a href=&quot;/14-lessons-i-learned-in-10-years/&quot;&gt;shared the lessons I learned&lt;/a&gt; in my years of experience with the software.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🏅 &lt;a href=&quot;https://larahogan.me/blog/how-be-sponsor-when-youre-developer&quot;&gt;How to Be A Sponsor When You&apos;re A Developer&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One of the most forgotten and (sometimes) misunderstood concepts is sponsorship. It is neither mentorship nor promotion; it&apos;s sharing your trust in a person and opening a gate to that person. Although sponsoring a person looks like requiring authority, it actually does not. &lt;a href=&quot;https://twitter.com/lara_hogan&quot;&gt;Lara Hogan&lt;/a&gt; (one of the greatest people I follow) shows the way to sponsor others. Also, it has a great impact on the glass-ceiling effect. Since sponsorships are rare, whenever there is one, most of the time, white cis-men gets it. We need to learn how to be inclusive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;👉 &lt;a href=&quot;https://css-tricks.com/mistakes-ive-made-as-an-engineering-manager/&quot;&gt;Mistakes I&apos;ve Made as an Engineering Manager&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This post is not only for managers. It&apos;s also for the people who would like to understand managers. One thing mentioned in the article that strikes me a lot is communicating once is never enough. When I look back at my managers, I remember them repeating the same messages over and over again. Once I started taking leading responsibilities, I also realized this. If a manager wants to give a message or ask something, they have to repeat it again and again until it becomes annoying. And this is not the only mistake managers make. The other ones that Sarah talks about are very common as well.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/mektup-section-header-software-world.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In February, I had amazing guests in my live streams. If you want to join one of these sessions and ask your questions to my guests, &lt;a href=&quot;https://superpeer.com/candost&quot;&gt;subscribe to my streams on Superpeer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🌈 &lt;a href=&quot;https://candost.substack.com/p/8-cross-cultural-communication#details&quot;&gt;Cross-Cultural Communication in Engineering Teams&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Living abroad or working with people from around the globe has many challenges. People carry their cultures with them. Erin Meyer maps them to eight scales in the book The Culture Map. I&apos;m a fan of that book and &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;wrote about it before&lt;/a&gt;. We created our team&apos;s culture map at work. And what we realized is that we can understand why people behave in a certain way. Right now, our team&apos;s map guides us in our communication. Felipe and I talked about our experiences with these eight scales and working as an ex-pat.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;👩‍💻 &lt;a href=&quot;https://candost.substack.com/p/9-engineering-career-path#details&quot;&gt;Engineering Career Path&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The engineering career is often not a straight line. When people switch from software engineering roles to management roles, they change professions. Although knowing engineering might help in management, and we act like it as a promotion, it&apos;s not. Also, people who miss the hands-on work think that going back to the technical side is a demotion. This is false. Management and engineering are two different jobs. And I would argue that knowing the management side can help them to become a better engineer. It&apos;s useful for growing the career faster (if they didn&apos;t stay too long in management). Tobias went to management and came back to engineering. He shared his experiences with me and we talked about how engineers can grow in their careers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🚨 &lt;a href=&quot;https://candost.substack.com/p/10-building-healthy-on-call-culture&quot;&gt;Building Healthy On-call Culture&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One thing I didn&apos;t know about on-call is how DevOps had a significant impact on it. The culture and the strategies changed with DevOps. Building a healthy on-call culture is difficult. However, there are specific processes that helpful for the on-call engineer. Creating the on-call system and using best practices mitigate system failures and the health of the engineer. Serhat and I talked about adjusting systems for avoiding alert fatigue and engineering burnout. He shared the best practices of healthy on-call environments and building a great culture around on-call.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📣 &lt;a href=&quot;https://candost.substack.com/p/11-learning-and-growing-in-front-end-development&quot;&gt;Learning and Growing in Front-end Development&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the ever-growing and -changing front-end world, people struggle to find their way around. Learning has different paths, and the strategies are distinct for everyone. The most important is motivation. If you&apos;re motivated to start learning front-end, then you&apos;re already on a good start.&lt;/p&gt;
&lt;p&gt;Growing skills is difficult. There are many tutorials for beginners. But when it comes to leveling up skills, finding the correct path is confusing. Ali joined me to share her experience and recommendations for people who would like to learn and grow in front-end development. She is a self-thought (computer science dropout) Javascript &amp;amp; Python developer and teacher.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/mektup-section-header-blog.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In February, I wrote two articles. I am planning to write more in March.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🏗 &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;How to Build Trust in a Team as a New Manager&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&apos;m transitioning into engineering management. I was curious about how a manager can build trust and I asked people around. The pattern around answers was keeping promises, listening, asking questions, and being aware of differences in people. I collected the suggestions from different managers and summed them up in a post.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🧰 &lt;a href=&quot;/the-blue-green-deployment-strategy/&quot;&gt;The Blue-Green Deployment Strategy&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Last month, my curiosity kicked in and I took a look at one deployment strategy. While researching and reading my notes about deploying software, I learned different strategies. What I understood from the blue-green deployment strategy is we duplicate the production environment. We make deploy our latest service and make a quick switch. I explained this strategy with graphics. Also, you can find the differences between blue-green and canary and rolling deployments.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/mektup-section-header-books.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📝 &lt;a href=&quot;https://takesmartnotes.com/&quot;&gt;How to Take Smart Notes&lt;/a&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once I had 400+ notes, I needed to have a better way to find out what I had written. I have notes from 2013 that I found by mistake. I wrote them but never take a look back. And they are not linked to another note. That’s the problem. I tried many tools such as Dropbox Paper, Evernote, Bear, Ulysses, etc. Now, I&apos;m using Notion and love it! With Notion, I started using Slip-Box and the method Sönke Ahrens explains in the book to solve problems with notes. The book explains the method and its advantages in detail. It is written mostly for academics but I recommend it if you are looking for a better note-taking strategy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;💨 &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Name_of_the_Wind&quot;&gt;The Name of The Wind&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is a fascinating book. We need a break from all the things that we have to learn and enjoy a good story. I&apos;m almost finishing this book and it&apos;s a well-written, addictive, and amazing story. I&apos;m perusing this book. Because I don&apos;t want to finish it. I take my time and pause reading once in a while. I also can&apos;t wait to read the rest of the series. I don&apos;t want to spoil anything from the book, just go and read. That&apos;s all I can say.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/mektup-section-header-closing-thoughts.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;📌 &lt;a href=&quot;https://www.charlieharrington.com/chemotherapy&quot;&gt;Chemotherapy&lt;/a&gt;​&lt;/p&gt;
&lt;p&gt;At the end of 2020, we have lost a colleague at work because of cancer. Reading Charlie&apos;s journey brought back the grief. It helped me better understand how hard it is and it can happen to everyone. We might think that life in a pandemic is hard. But, people with cancer don&apos;t only deal with the weaker immune system but also deal with the negativity around them. Keeping the positivity is extremely difficult. We need to support each other to create more positive vibes around us. And the last thing, whenever possible, we should get the vaccination. Some people like Charlie cannot get vaccinated for Covid-19 because of their weak immune systems. If you are healthy, you can do it. Not only for you but for everyone.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;That&apos;s it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What have you been reading the last month?&lt;/strong&gt; I&apos;m curious about what passes from your screen or which book you are reading. I read and answer all my emails.&lt;/p&gt;
&lt;p&gt;Until receiving your email, see you around, my friend!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#10: Building Healthy On-call Culture - Serhat Can</title><link>https://candost.blog/podcast/10-building-healthy-on-call-culture/</link><guid isPermaLink="true">https://candost.blog/podcast/10-building-healthy-on-call-culture/</guid><pubDate>Wed, 17 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;10: Building Healthy On-call Culture - Serhat Can&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/10-building-healthy-on-call-culture&quot;&gt;https://candost.substack.com/p/10-building-healthy-on-call-culture&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/10-building-healthy-on-call-culture/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/10-building-healthy-on-call-culture/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Build Trust in a Team as a New Manager</title><link>https://candost.blog/how-to-build-trust-in-a-team-as-a-new-manager/</link><guid isPermaLink="true">https://candost.blog/how-to-build-trust-in-a-team-as-a-new-manager/</guid><description>Building trust in teams is complex. Trust in the workplace is crucial to becoming a successful software engineering manager.</description><pubDate>Sun, 14 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When a new manager joins the team, team members often approach with suspicion. Accepting someone from outside as a new leader or supervisor is complicated. It depends on how well the previous manager was and how experienced the new leader is. However, if the new manager doesn&apos;t know the domain and the work, it becomes more challenging.&lt;/p&gt;
&lt;p&gt;Even though gaining the team&apos;s trust is tricky, not knowing the domain might have an advantage. If the new manager doesn&apos;t know the field and the tech stack, they can&apos;t give suggestions by default. They instead ask questions as an outsider. More questions bring more clarity to work and force engineers to consider unexpected prospects.&lt;/p&gt;
&lt;p&gt;The manager&apos;s lack of domain knowledge brings the team to a better place and helps build trust when the manager admits that they don&apos;t know. The situation brings the manager closer to the team. The team realizes that the manager puts a high priority on their knowledge and opinions.&lt;/p&gt;
&lt;p&gt;The expertise rests with the team. The honesty and admittance bring the light on the manager trying to get better at what they are doing. As long as they see that, trust starts to form.&lt;/p&gt;
&lt;p&gt;Once the trust starts building up, the new manager will have more opportunities to &lt;a href=&quot;/managing-partially-distributed-teams/&quot;&gt;take action&lt;/a&gt;. When someone joins the team and wants to change something, the people are doubtful. Every time before taking any action, &lt;a href=&quot;/communicating-decisions-in-the-organizations/&quot;&gt;making the intention clear by explaining&lt;/a&gt; why that action is necessary can help a lot in consolidating trust. Giving a carefully designed explanation and taking the described action afterward in the correct timeframe will allow future expectations to be more accurate. Each member will know that the manager is accountable and authentic.&lt;/p&gt;
&lt;p&gt;While some actions require working with a group, there is also the aspect of individual trust. Keeping in mind the differences in every individual with their &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;cultural background is crucial&lt;/a&gt;. Some people prefer to build trust based on accurate actions; others can wish to have a real personal relationship. The new manager should focus on understanding what kind of trust they should build with each team member.&lt;/p&gt;
&lt;p&gt;If a person hopes to have a more personal relationship, the manager can focus on the clues about their direct reports&apos; personal lives. A team member can be depressed or low because their cat is sick. Asking them how their cat is doing the next day shows that the manager cares about their problems.&lt;/p&gt;
&lt;p&gt;However, the same approach doesn&apos;t work for some people who have a distinct &lt;a href=&quot;/separation-of-concerns-at-work/&quot;&gt;separation between work&lt;/a&gt; and personal life. They might prefer having professional relationships. Asking them about their career goals and helping them plan a more satisfying future both inside and outside the company allows new managers to strengthen the relationship.&lt;/p&gt;
&lt;p&gt;Above all, everything starts with listening, asking questions, and acting on the answers. Without listening with empathy, it&apos;s impossible to build trust and work with the team. Actively observing each individual&apos;s real needs is a &lt;a href=&quot;https://www.nonviolentcommunication.com/&quot;&gt;powerful method&lt;/a&gt;. While asking questions bring clarity to work and shows that the new manager is trying their best &lt;a href=&quot;/managing-partially-distributed-teams/&quot;&gt;to improve their work&lt;/a&gt;, accurately acting on the answers is the last step to creating creditability. Once all of them are combined and performed well, there is no reason for the team not to trust the manager.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-to-build-trust-in-a-team-as-a-new-manager/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#9: Engineering Career Path - Tobias Bales</title><link>https://candost.blog/podcast/9-engineering-career-path/</link><guid isPermaLink="true">https://candost.blog/podcast/9-engineering-career-path/</guid><pubDate>Tue, 09 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;9: Engineering Career Path - Tobias Bales&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/9-engineering-career-path&quot;&gt;https://candost.substack.com/p/9-engineering-career-path&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/9-engineering-career-path/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/9-engineering-career-path/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#8: Cross-Cultural Communication in Engineering Teams with Felipe Furlan da Silva</title><link>https://candost.blog/podcast/8-cross-cultural-communication/</link><guid isPermaLink="true">https://candost.blog/podcast/8-cross-cultural-communication/</guid><pubDate>Tue, 02 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;8: Cross-Cultural Communication in Engineering Teams with Felipe Furlan da Silva&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/8-cross-cultural-communication&quot;&gt;https://candost.substack.com/p/8-cross-cultural-communication&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/8-cross-cultural-communication/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/8-cross-cultural-communication/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>What is Blue-Green Deployment</title><link>https://candost.blog/the-blue-green-deployment-strategy/</link><guid isPermaLink="true">https://candost.blog/the-blue-green-deployment-strategy/</guid><description>The Blue-Green Deployment is an application deployment technique used in continuous delivery. The new service is deployed and put into production gradually.</description><pubDate>Sat, 30 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.wikiwand.com/en/Software_deployment&quot;&gt;Software deployment&lt;/a&gt; is one of the last but essential steps of the software development lifecycle. All &lt;a href=&quot;https://www.wikiwand.com/en/Software_project_management&quot;&gt;planning&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Software_design&quot;&gt;designing&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Software_development#:~:text=Software%20development%20is%20the%20process,frameworks%2C%20or%20other%20software%20components.&quot;&gt;coding&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Software_testing&quot;&gt;testing&lt;/a&gt;, and teamwork end up with deployment. Make it right; it&apos;s smooth and exciting. All the effort pays off. Make it wrong; disaster awaits: downtime and cluttered data are inevitable.&lt;/p&gt;
&lt;p&gt;The Blue-Green Deployment is one of the application release models. The challenge of bringing software from the final stage of testing to live production without downtime is part of &lt;a href=&quot;https://martinfowler.com/bliki/ContinuousDelivery.html&quot;&gt;continuous delivery&lt;/a&gt;. Every second spent in downtime loses money in the operation. This technique aims to reduce downtime and risks during the deployment.&lt;/p&gt;
&lt;p&gt;In Blue-Green Deployment, the transition to the new version of the app is gradual. The blue represents an old version of the service.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/blue-green-deployment/BlueGreenDeployment4.png&quot; alt=&quot;(Before Green Deployment)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When we want to deploy a new version, a.k.a. green, we create a new environment close to production and deploy our new version into it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/blue-green-deployment/BlueGreenDeployment5.png&quot; alt=&quot;New Version Deployed&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After testing and making sure the green is working correctly, we route all traffic to the new version.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/blue-green-deployment/BlueGreenDeployment6.png&quot; alt=&quot;New version is in use&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When we fully transfer the traffic to the new version, we can destroy or recycle the old blue instances. However, we might prefer to keep the blue &lt;a href=&quot;/books/microservices-and-their-benefits/&quot;&gt;service&lt;/a&gt; for a while to revert if we face problems with the new green one. One of the continuous delivery goals is to bring the code to production as fast as possible with low risk. It means that the rollback is necessary in case things go south. When we discover the green version is broken, it&apos;s easy to roll back to the blue version.&lt;/p&gt;
&lt;p&gt;The blue-green deployment comes with the challenge of handling the database and persistence layer between two easily switchable environments. We can manage this by separating &lt;a href=&quot;https://www.wikiwand.com/en/Database_schema&quot;&gt;database schema&lt;/a&gt; deployment from service deployment. We can deploy the new database schema and migrate the data to the new schema in a blue environment. Once everything is successful, we can switch the service from blue to green.&lt;/p&gt;
&lt;p&gt;When we would like to have instant rollout and rollback, blue-green deployment is a good strategy. However, it requires more resources. Both green and blue have to be deployed to a separate but identical environment at the same time. Also, testing the new version with proper tests requires more effort and planning. If the application is stateful, routing all traffic to the latest version is problematic.&lt;/p&gt;
&lt;h2&gt;Blue Green Deployment vs. Canary Deployment&lt;/h2&gt;
&lt;p&gt;Canary Releases are slightly different than Blue-Green Deployments. In Canary Deployment, we create a new version and deploy it to production while keeping the existing version. After the deployment is successful, the latest version starts to get only a small percentage of the traffic, such as 10-20%. If there is no problem with the new version, we can route all traffic to the latest version.&lt;/p&gt;
&lt;p&gt;Resource-wise, both deployment methods require two environments. In Blue-Green Deployment, we test the new version with many tests and route 100% of the traffic afterward. In Canary Deployment, instead of routing 100%, we send a canary to the new cave, 10% of the traffic. If the canary is alive, we go all in. We test the latest version with production traffic in Canary Deployment.&lt;/p&gt;
&lt;h2&gt;Blue Green Deployment vs. Rolling Deployment&lt;/h2&gt;
&lt;p&gt;In Rolling Deployment, the main difference is we have one environment instead of two, like in Blue Green. We deploy the new version to the same environment but slowly update the nodes (or instances) one by one once they pass the health check.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/the-blue-green-deployment-strategy/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/the-blue-green-deployment-strategy/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Mektup #1</title><link>https://candost.blog/newsletter/mektup-1/</link><guid isPermaLink="true">https://candost.blog/newsletter/mektup-1/</guid><pubDate>Thu, 28 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hello friend!&lt;/p&gt;
&lt;p&gt;I hope you and everyone you care about are doing well and healthy.&lt;/p&gt;
&lt;p&gt;This first issue brings immense excitement. Putting myself in front of many people is one of the hardest things I’ve ever done. Even though I’m a bit an extrovert, it still frightens and excites me every time I start a live session, send a tweet, or publish a blog post. However, I want to keep going. This newsletter is my latest effort to share what I’ve learned, read, watched, and liked.&lt;/p&gt;
&lt;p&gt;Before going into the details, I would like to thank you for being here. All efforts have no meaning if you are not with me. I mean it. I care about you and what you think. If you have any questions or feedback, send me a tweet or an an email, or &lt;a href=&quot;https://superpeer.com/candost/&quot;&gt;book a 10 mins free call&lt;/a&gt; with me. I’m always here for you.&lt;/p&gt;
&lt;p&gt;Alright, on to the Mektup.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/good-job%20(1).png&quot; alt=&quot;Good Job&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Interesting Things I Have Been Reading and Thinking About&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;👩🏽‍💻 &lt;a href=&quot;https://martinfowler.com/articles/developer-effectiveness.html&quot;&gt;Developer Effectiveness&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The feeling of inefficiency spreads through the whole organization. When developers are working in long feedback loops, such as having a long compile time or deployment cycles, they get distracted. While waiting for compiling to finish, they lose focus and produce shallow work. Case studies show developers working with micro feedback loops often use them and take action on the result. They validate their work earlier and reduce rework and back and forth communication. The article also lists down key feedback loops that we can aim to optimize.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.pragmaticengineer.com/what-silicon-valley-gets-right-on-software-engineers&quot;&gt;🏜 What Silicon Valley &quot;Gets&quot; about Software Engineers that Traditional Companies Do Not&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Silicon Valley-like (SV) companies embrace engineers to be autonomous. They cut the hierarchical lines and benefit from engineers’ creativeness. Impact on the business grows along with engineer’s engagement within the industry. Traditional companies create the organization around hierarchical lines, opposite the SV companies where each team is built around the goals. The expectation from developers in traditional companies is “doing the work” and not touching anything else. SV companies expect developers to solve business problems.&lt;/p&gt;
&lt;p&gt;Salaries are often aligned with the impact on the business. “Higher autonomy --&amp;gt; higher leverage --&amp;gt; higher value created --&amp;gt; higher pay (all while the company still makes a profit)”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🦄 &lt;a href=&quot;https://rbs-tito.medium.com/the-resilience-of-mixed-seniority-engineering-teams-eacb98f185d1&quot;&gt;The resilience of mixed seniority engineering teams&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I’ve seen many times teams full of senior engineers fail. Not on the tech side, but the communication. Being inclusive is harder. Cultural and knowledge differences play a significant role. Hiring junior developers force senior engineers to improve their communication. Mixed teams have to invest in training regularly to onboard juniors. The onboarding process gets more satisfying with each junior, and the team becomes resilient.&lt;/p&gt;
&lt;p&gt;Meanwhile, we had &lt;a href=&quot;https://candost.substack.com/p/4-how-to-be-a-working-student&quot;&gt;a talk with Oksana&lt;/a&gt; about how companies approach juniors. &lt;a href=&quot;https://youtu.be/zWZaLvvr33s?t=2142&quot;&gt;She mentioned&lt;/a&gt; that allowing juniors to try different things and grow within the company is a game-changer to increase their loyalty. And their primary helpers are their mentors, a.k.a. senior engineers.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/networking.png&quot; alt=&quot;Software World Section&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;🎬 Software World&lt;/h2&gt;
&lt;p&gt;In January, we had four great talks on Superpeer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://candost.substack.com/p/7-mobile-apps-at-scale&quot;&gt;Mobile Apps at Scale&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you scale the company, you scale the problems as well. Solutions to these problems differ in every company. Each one has its own processes and style, such as SoundCloud that has 40+ engineers in their mobile teams. They use three-way teams: feature-teams, platform-teams, and tooling-teams and evolve their architecture around these. Tooling teams focus on increasing the developer effectiveness of the feature teams. Fırat joined me, and we talked about challenges around architecture, tests, releases, tooling, and how teams make their technical decisions.&lt;/p&gt;
&lt;p&gt;Watch it on &lt;a href=&quot;https://youtu.be/Kg6W-ymbej4&quot;&gt;YouTube&lt;/a&gt;, or listen on &lt;a href=&quot;https://open.spotify.com/episode/1XHgvXT5xKDaM3cOyEORvz?si=TiqHpf9sSCymmS8EqHEQ0Q&quot;&gt;Spotify&lt;/a&gt;, or on &lt;a href=&quot;https://anchor.fm/candost/episodes/7-Mobile-Apps-at-Scale---Frat-Karata-epgqu2&quot;&gt;other platforms&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://candost.substack.com/p/6-software-development-in-startups&quot;&gt;Software Development in Startups&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The challenges of startups are different from mature companies. Software development practices are sometimes ignored in regards to faster release. But we don’t need to sacrifice high product quality over the pace. Fatih and I talked about these kinds of challenges and how he approaches them.&lt;/p&gt;
&lt;p&gt;Watch it on &lt;a href=&quot;https://www.youtube.com/watch?v=5aXCNWpm7So&quot;&gt;YouTube&lt;/a&gt;, or listen on &lt;a href=&quot;https://open.spotify.com/episode/4n0XKg8qVwWTJJYCYumJpj?si=EX-VulIrS5mMfZ5X2UjhFQ&quot;&gt;Spotify&lt;/a&gt;, or on &lt;a href=&quot;https://anchor.fm/candost/episodes/6-Software-Development-in-Startups---Fatih-Acet-ep86ij/a-a4dc1al&quot;&gt;other platforms&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://candost.substack.com/p/5-startup-marketing&quot;&gt;Startup Marketing and Strategy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;All marketing campaigns have a big chance of failure if we don’t understand our users or who they are. Planning and creating a strategy around our brands and stories are compelling. Peri and I talked about marketing strategies.&lt;/p&gt;
&lt;p&gt;If you want to find out where to focus on marketing and create a better plan, watch it on &lt;a href=&quot;https://www.youtube.com/watch?v=rYYaO_02bxk&quot;&gt;YouTube&lt;/a&gt; or listen on &lt;a href=&quot;https://open.spotify.com/episode/0FS7bhGltsUM3ZUrZroQTU?si=lin0qwY8RdKJFc4TLa_awg&quot;&gt;Spotify&lt;/a&gt;, or on &lt;a href=&quot;https://anchor.fm/candost/episodes/5-Startup-Marketing---Peri-Kadaster-eosq0a/a-a4b66gl&quot;&gt;other platforms&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://candost.substack.com/2-how-engineering-teams-work-with-product-teams&quot;&gt;How to Be A Working Student in Tech&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nobody cares about students in companies, yet they are the future and fundamental part of our knowledge. Students face many problems, including low salary, learning, being disregarded. If these students are ex-pats, then many other challenges come into play, such as visa restrictions. Oksana and I talked about her journey from Ukraine to Germany and working while studying.&lt;/p&gt;
&lt;p&gt;Watch it on &lt;a href=&quot;https://www.youtube.com/watch?v=zWZaLvvr33s&quot;&gt;YouTube&lt;/a&gt;, or listen on &lt;a href=&quot;https://open.spotify.com/episode/3DFEfSkZQw7kxxPhGQqQi8?si=Z9f12N5_TDqdCZiBn8GcAQ&quot;&gt;Spotify&lt;/a&gt;, or on &lt;a href=&quot;https://anchor.fm/candost/episodes/4-How-to-Be-A-Working-Student---Oksana-Shcherban-eorava/a-a4atfqb&quot;&gt;other platforms&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/blogging.png&quot; alt=&quot;Blogging Section&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;📝 Blog&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;/diversity-in-tech-is-a-first-world-problem/&quot;&gt;Diversity in Tech is a First World Problem&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We had &lt;a href=&quot;https://candost.substack.com/p/3-diversity-gender-discrimination#details&quot;&gt;a talk with Yasemin&lt;/a&gt; about diversity, gender discrimination, and women in tech before. Some people might deny the problem and don&apos;t care about it at all. At the same time, many people are aware of the problem, and they try to be inclusive as much as they can. Yet, some of them find themselves in their comfort zone, and they stop pushing about diversity. This loosening happens more often in first-world countries because the third-world countries haven&apos;t set up the foundations yet. I &lt;a href=&quot;/diversity-in-tech-is-a-first-world-problem&quot;&gt;wrote a piece&lt;/a&gt; about the need to leave my comfort zone. We should increase the diversity, but not forget that other communities need help to solve more significant problems. If we can create more opportunities for more people, eventually, we can increase diversity anywhere.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;How to Stop Endless and Meaningless Discussions&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I &lt;a href=&quot;/how-to-stop-endless-discussions/&quot;&gt;shared&lt;/a&gt; why writing is a great way to prevent meaningless and long discussions. The RFC (Request for Comments) is a great tool that we can use in our companies. Many people &lt;a href=&quot;https://news.ycombinator.com/item?id=25622149&quot;&gt;discussed&lt;/a&gt; the article a lot &lt;a href=&quot;https://news.ycombinator.com/item?id=25622149&quot;&gt;on HackerNews&lt;/a&gt;. Also, it is &lt;a href=&quot;https://softwareleadweekly.com/issues/424&quot;&gt;widely shared&lt;/a&gt;. I also joined &lt;a href=&quot;https://twitter.com/devkahvesi/status/1348382780057673734&quot;&gt;one podcast&lt;/a&gt; (it’s in Turkish 🇹🇷) where we talked about the article. I’m thrilled with the feedback I got.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/personal-growth.png&quot; alt=&quot;Personal Growth&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;📚 BOOKS&lt;/h2&gt;
&lt;p&gt;I finished reading the &lt;strong&gt;Building Microservices&lt;/strong&gt; book and liked it. Microservices architecture style is not a silver bullet. The book is aligned with this statement and gives an excellent in-depth explanation of the advantages and disadvantages. With this book, I started sharing my book notes. I published the &lt;a href=&quot;/books/microservices-and-their-benefits/&quot;&gt;first&lt;/a&gt;, &lt;a href=&quot;/books/the-evolutionary-architect/&quot;&gt;second&lt;/a&gt;, and &lt;a href=&quot;/books/how-to-model-microservices/&quot;&gt;third&lt;/a&gt; chapters and will continue to add more. This is the initial attempt at sharing my book notes. Please let me know what you think.&lt;/p&gt;
&lt;p&gt;Challenges of mobile application development are distinct at scale, as we &lt;a href=&quot;https://candost.substack.com/p/7-mobile-apps-at-scale&quot;&gt;talked with Fırat&lt;/a&gt;. I’ve read the draft of &lt;strong&gt;33 Mobile Challenges at Scale&lt;/strong&gt; from Gergely Orosz the last month. I will share my notes after Gergely finishes writing the whole book. I’m currently waiting for the next chapters to come out.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I’m currently reading &lt;a href=&quot;https://www.oreilly.com/library/view/fundamentals-of-software/9781492043447/&quot;&gt;Fundamentals of Software Architecture&lt;/a&gt; with a reading group at work. I’ll start sharing my notes on it and continue publishing my notes from other Building Microservices chapters.&lt;/p&gt;
&lt;p&gt;In Software World with Candost, I have already organized all the Superpeer talks for February. It is full of surprises! Hold on and follow the announcements on Twitter.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/newsletter/abstract-coffee-break.png&quot; alt=&quot;Closing Section&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Until next time, see you around, my friend!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://www.figma.com/@ahmet&quot;&gt;Illustrations by Ahmet Cadirci&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/newsletter/mektup-1/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/newsletter/mektup-1/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#7: Mobile Apps at Scale - Fırat Karataş</title><link>https://candost.blog/podcast/7-mobile-apps-at-scale/</link><guid isPermaLink="true">https://candost.blog/podcast/7-mobile-apps-at-scale/</guid><pubDate>Tue, 26 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;7: Mobile Apps at Scale - Fırat Karataş&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/7-mobile-apps-at-scale&quot;&gt;https://candost.substack.com/p/7-mobile-apps-at-scale&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/7-mobile-apps-at-scale/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/7-mobile-apps-at-scale/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building Microservices: How to Model Microservices</title><link>https://candost.blog/books/how-to-model-microservices/</link><guid isPermaLink="true">https://candost.blog/books/how-to-model-microservices/</guid><description>The goal of modeling microservices is to have loose coupling and high cohesion. Don&apos;t directly go with microservices. Start monolithic and evolve to microservice.</description><pubDate>Sat, 23 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This post is Chapter 3 of my notes from the book &lt;a href=&quot;https://samnewman.io/books/building_microservices/&quot;&gt;Building Microservices: Designing Fine-Grained Systems&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;/books/microservices-and-their-benefits/&quot;&gt;Chapter 1: Microservices and Their Benefits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-evolutionary-architect/&quot;&gt;Chapter 2: The Evolutionary Architect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/how-to-model-microservices/&quot;&gt;Chapter 3: How to Model Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-1/&quot;&gt;Chapter 4, Part 1: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-2/&quot;&gt;Chapter 4, Part 2: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/splitting-the-monolith/&quot;&gt;Chapter 5: Splitting the Monolith&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;What Makes a Good Service?&lt;/h2&gt;
&lt;p&gt;Loose coupling and high cohesion.&lt;/p&gt;
&lt;h3&gt;Loose Coupling&lt;/h3&gt;
&lt;p&gt;Changes in one service should not require a modification in another service.&lt;/p&gt;
&lt;p&gt;Making the services independent is one of the crucial rules of microservices. We need to make a change in one service and deploy without changing the others.&lt;/p&gt;
&lt;h3&gt;High Cohesion&lt;/h3&gt;
&lt;p&gt;High cohesion is highly related to loose coupling. We want to have associated behavior together and independent ones separated. When we need to change something, we shouldn&apos;t be deploying many services to deliver that change.&lt;/p&gt;
&lt;h2&gt;The Bounded Context&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;A specific responsibility enforced by explicit boundaries.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Having specific boundaries and models defined only for external communication and hiding internal things is a good concept. When we separate internal functionality and models from the outside, we can act more freely, and the external services will never know what&apos;s going on inside. It&apos;s like a company. Customers never see what&apos;s happening behind the scenes; they only care about the result or look at the interface opened for them.&lt;/p&gt;
&lt;h3&gt;Modules and Services&lt;/h3&gt;
&lt;p&gt;Being careful about what models to share with consumers is essential. When we don&apos;t think clearly, we fall into creating tightly coupled systems.&lt;/p&gt;
&lt;p&gt;Microservices should be aligned with bounded contexts.&lt;/p&gt;
&lt;p&gt;One recommendation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;When you&apos;re starting out on a new codebase and once you have found your bounded contexts in your domain, make sure they are modeled within your codebase as modules, with shared and hidden models.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Premature Decomposition&lt;/h3&gt;
&lt;p&gt;Don&apos;t split the service into microservices too quickly. Let it show itself. Start with the monolithic approach, not with microservices.&lt;/p&gt;
&lt;h2&gt;Business Capabilities&lt;/h2&gt;
&lt;p&gt;First, identify what the context does. Then find out what data the context requires to do its job.&lt;/p&gt;
&lt;h2&gt;Turtles All the Way Down&lt;/h2&gt;
&lt;p&gt;When thinking about boundaries and exploring how to benefit from splitting the domain, start from bigger contexts and separate them.&lt;/p&gt;
&lt;p&gt;There is no one-rule-for-all. The separation depends on the organization&apos;s structure. If there is one team responsible for all parts of the service, find nested bounded contexts and separate them within the service. If multiple teams are responsible for different parts of the service, split those bounded contexts into other microservices. Teams deserve to have their own services.&lt;/p&gt;
&lt;h3&gt;Communication in Terms of Business Concepts&lt;/h3&gt;
&lt;p&gt;The changes come from business requirements and wishes. If we have divided bounded contexts in our services, the business changes will most likely also be reflected in these separations.&lt;/p&gt;
&lt;p&gt;The communication between services also echoes the relationship between teams. If there are close relationships and shared responsibilities between teams, this situation should reflect on the services&apos; interfaces.&lt;/p&gt;
&lt;h2&gt;The Technical Boundary&lt;/h2&gt;
&lt;p&gt;Depending on the situation, separating services with technical boundaries may work. If the organization is looking to achieve some performance objectives, it makes sense. However, this kind of separation should be the second goal, not the first one. Because when technical boundaries are split across multiple teams, navigating a change becomes hard: teams depend on each other, and making a change requires several teams&apos; work.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/how-to-model-microservices/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/how-to-model-microservices/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building Microservices: The Evolutionary Architect</title><link>https://candost.blog/books/the-evolutionary-architect/</link><guid isPermaLink="true">https://candost.blog/books/the-evolutionary-architect/</guid><description>Comparing software architects with actual architects is inaccurate. Physical-world constrains architect, and software evolves with user requirements.</description><pubDate>Wed, 20 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This post is Chapter 2 of my notes from the book &lt;a href=&quot;https://samnewman.io/books/building_microservices/&quot;&gt;Building Microservices: Designing Fine-Grained Systems&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;/books/microservices-and-their-benefits/&quot;&gt;Chapter 1: Microservices and Their Benefits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-evolutionary-architect/&quot;&gt;Chapter 2: The Evolutionary Architect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/how-to-model-microservices/&quot;&gt;Chapter 3: How to Model Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-1/&quot;&gt;Chapter 4, Part 1: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-2/&quot;&gt;Chapter 4, Part 2: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/splitting-the-monolith/&quot;&gt;Chapter 5: Splitting the Monolith&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;Comparing software architects with architects is inaccurate. Physical-world constraints architects while the software is designed to evolve with user requirements. Maybe the most harm caused by the word &lt;em&gt;architect&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;An Evolutionary Vision for the Architect&lt;/h2&gt;
&lt;p&gt;We tend to assume that the software we develop will live forever as it is. But whenever we finish the task at hand, it already becomes out-of-date or produces technical debt. We need to design systems that are changeable because of the nature of our work. We&apos;re not civil engineers, and we&apos;re not building one building to let it stand for many years.&lt;/p&gt;
&lt;p&gt;Software Architects are more like town planners. Town planners don&apos;t plan every building; they specify zones. Industrial facilities can only be in industrial zones. Town planners try to fulfill the citizens&apos; current needs while keeping the future in mind. This approach is applicable not only to software architects but also the organizations without that specific role. The idea of planning a city is very similar to software planning or software development in teams. The teams can build beautiful buildings. But it&apos;s a software architect’s role (or a shared practice in some organizations) to keep the city beautiful by putting some limitations around it.&lt;/p&gt;
&lt;p&gt;Changeability is often ignored in software architecture design. We try to create loose-coupled systems or modules. But in the end, we build our whole system to stay put. We don&apos;t make the bigger picture easily replaceable.&lt;/p&gt;
&lt;h2&gt;Zoning&lt;/h2&gt;
&lt;p&gt;Software architects should worry more about what happens between services rather than what&apos;s going on inside the service.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Guideline:&lt;/strong&gt; Be worried about what happens between the boxes and be liberal in what happens inside.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The architect must be sitting with the team and working on regular stories. It helps the architect to understand what everyday work looks like. This method is more effective than having a meeting or reviewing the code.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Coding Architect:&lt;/strong&gt; &quot;Ideally, the architect should work on normal stories, to really understand what &lt;em&gt;normal&lt;/em&gt; work is like. I cannot emphasize how important it is for the architect to actually sit with the team! This is significantly more effective than having a call or just looking at the code.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;A Principled Approach&lt;/h2&gt;
&lt;h3&gt;Strategic Goals&lt;/h3&gt;
&lt;p&gt;Strategic goals are overall and high-level company goals that might not include technology. These goals can be defined at the company or division level.&lt;/p&gt;
&lt;h3&gt;Principles&lt;/h3&gt;
&lt;p&gt;Principles are the rules. These rules are aligned with strategic goals. They are not the same as goals but rather define the directions on how to achieve these goals. Principles can and will change in time. For example, if the company wants to quickly deliver new features to the market, principles can be making teams independent to prevent groups from blocking each other.&lt;/p&gt;
&lt;h3&gt;Practices&lt;/h3&gt;
&lt;p&gt;Practices are detailed and practical guides to ensure the principles are followed. Due to nature, practices are more technical. Therefore, it can also change more often than principles.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;Practices should underpin our principles.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Combining Principles and Practices&lt;/h3&gt;
&lt;p&gt;The value of having principles is showing people where we would like to go. The practices are there to help people how to implement the ideas stated in the principles.&lt;/p&gt;
&lt;h2&gt;A Required Standard&lt;/h2&gt;
&lt;p&gt;Defining a standard is like answering, &quot;What is a &apos;good citizen&apos; service in your system?&quot; It is one of the key points to defining explicit attributes that each service should have.&lt;/p&gt;
&lt;h3&gt;Monitoring&lt;/h3&gt;
&lt;p&gt;There has to be a common practice for both logging and monitoring.&lt;/p&gt;
&lt;p&gt;It doesn&apos;t matter whether you push data into one service or pull from all services to a central location, pick one and use the standardized way everywhere.&lt;/p&gt;
&lt;p&gt;Make the monitoring box opaque.&lt;/p&gt;
&lt;h3&gt;Interfaces&lt;/h3&gt;
&lt;p&gt;Pick one or a maximum of two standard interface technologies. It helps integrate new consumers easily.&lt;/p&gt;
&lt;h3&gt;Architectural Safety&lt;/h3&gt;
&lt;p&gt;Shield the service from failures that happen in underlying systems.&lt;/p&gt;
&lt;h2&gt;Governance Through Code&lt;/h2&gt;
&lt;p&gt;Agreeing on how things can always sound like a good idea. But following decisions and seeing them implemented is a dreading task. There are two methods to help people to follow these decisions: using examples and templates.&lt;/p&gt;
&lt;h3&gt;Exemplars&lt;/h3&gt;
&lt;p&gt;Don&apos;t hesitate to write an example code. Written documentation is good, but when you support it with code, the developers tend to understand better or have a higher interest. Also, the developers can run and explore the standards or best practices we encourage.&lt;/p&gt;
&lt;h3&gt;Tailored Service Template&lt;/h3&gt;
&lt;p&gt;Templates and including all the decided set of development practices inside is a great way to kickstart a project. The template makes everything way more straightforward in the beginning. It handles the groundwork, and the focus can move on to developing the service itself directly. Maintaining the template is a collective activity that team(s) should take joint responsibility for updating.&lt;/p&gt;
&lt;h2&gt;Technical Debt&lt;/h2&gt;
&lt;p&gt;When we deviate from our technical vision or change it, we create technical debt. One job of the architect is closely following this situation and keeping the balance. An architect should look to the bigger picture and understand the trade-offs and when to keep the balance.&lt;/p&gt;
&lt;h2&gt;Exception Handling&lt;/h2&gt;
&lt;p&gt;It’s possible to have exceptions in the overall system. When our systems deviate from principles and practices, we start creating exceptions. One way to make sure we can react to these changes is by keeping a list of exceptions. If there are enough exceptions, it may be wise to change the principles or practices and reflect the new understanding of our work.&lt;/p&gt;
&lt;h2&gt;Governance and Leading from the Center&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;“If one of the architect&apos;s jobs is ensuring there is a technical vision, then governance is about ensuring what we are building matches this vision, and evolving the vision if needed.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There should be a group of people from every team (most likely the lead), and the architect should chair this group.&lt;/p&gt;
&lt;h2&gt;Building a Team&lt;/h2&gt;
&lt;p&gt;Growing people in monolithic systems are more challenging than microservices. Owning a system and shaping the implementation and the vision in microservices are more comfortable than monolithic systems. In microservices, we create autonomous codebases with independent lifecycles to support people to own the full service and significantly impact the overall system. This way, we enable people to step up in their careers.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;The evolutionary architect&apos;s core responsibilities are vision, empathy, collaboration, adaptability, autonomy, and governance.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/the-evolutionary-architect/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/the-evolutionary-architect/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#6: Software Development in Startups with Fatih Acet</title><link>https://candost.blog/podcast/6-software-development-in-startups/</link><guid isPermaLink="true">https://candost.blog/podcast/6-software-development-in-startups/</guid><pubDate>Wed, 20 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;6: Software Development in Startups with Fatih Acet&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/6-software-development-in-startups&quot;&gt;https://candost.substack.com/p/6-software-development-in-startups&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/6-software-development-in-startups/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/6-software-development-in-startups/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Diversity in Tech Is A First World Problem</title><link>https://candost.blog/diversity-in-tech-is-a-first-world-problem/</link><guid isPermaLink="true">https://candost.blog/diversity-in-tech-is-a-first-world-problem/</guid><description>Thinking diversity only in our immediate environment is a shortcoming. Instead of blinding ourselves, we need to broaden our horizon and think of other sides of the world to have a bigger impact.</description><pubDate>Wed, 13 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Some people think that having a less diverse team is a big problem for inequality. Often in homogeneous teams, people offend each other without realizing it. They make &quot;innocent&quot; jokes about nationality, ethnicity, and gender. Most of the time, they are not aware of their discrimination at all.&lt;/p&gt;
&lt;p&gt;Jokes made around different cultures are generally found funny, even by the discriminated people. They can quickly go wild. While having fun together, sometimes some people might empathize and feel bad for others&apos; behavior and discrimination.&lt;/p&gt;
&lt;p&gt;Having these situations is a first-world problem. But it is still a problem.&lt;/p&gt;
&lt;p&gt;On some sides of the world, mostly in underdeveloped or developing countries, there are different problems. Local men dominate the workforce. It&apos;s also not common to find a foreigner working with them. There are fewer genders except for cis-males at work. When we think about this more in-depth, the definition of the problem and challenges start to differ.&lt;/p&gt;
&lt;p&gt;While the first world countries have to deal with peculiar discriminations, the other countries struggle with the fundamentals. There are many harassments, racism, sexual assault, and even homicide cases on both sides of the world.&lt;/p&gt;
&lt;p&gt;The major problem I see overall is when we focus on the first-world problem, we feel satisfied and think that we&apos;re doing what we can.&lt;/p&gt;
&lt;p&gt;However, we are creating an illusion for ourselves. We forget the privileges we have. &lt;a href=&quot;https://twitter.com/dereca&quot;&gt;Dereca Blackmon&lt;/a&gt; &lt;a href=&quot;https://www.linkedin.com/learning/inclusive-mindset-for-committed-allies&quot;&gt;says&lt;/a&gt; that we don&apos;t comprehend it as a privilege when we have something. When we graduate from high school, it&apos;s a privilege. If we can afford lunch, it&apos;s a privilege as well. The people in some locations don&apos;t have these.&lt;/p&gt;
&lt;p&gt;After living in privilege, the self-illusion becomes a self-lie. When we hear discrimination and stay against it, we already feel better. We should be. It is what we have to do. However, when we&apos;re blinded by saying that we did what we could do, we skip the chance to make a more significant impact.&lt;/p&gt;
&lt;p&gt;If we don&apos;t have an opportunity to do something nearby, we can also support other organizations that desperately need money in other spots to fight for the fundamentals of inequality. Be it buying someone a shoe or bringing water to someone&apos;s town, or helping some little girl go to school. We need to support these people to have better diversity in the world, not only in our immediate environment. We need to create more opportunities for these people to fight for a better and more diverse life.&lt;/p&gt;
&lt;p&gt;What we need is &lt;a href=&quot;https://www.diffen.com/difference/Equality-vs-Equity&quot;&gt;equity, not equality&lt;/a&gt;. Either in our local communities or globally, we need to give people a better chance to remove inequalities. We know that supporting other local communities is very hard. We cannot travel there and make an impact. We don&apos;t know anyone or the culture in other parts of the world. However, we are not alone. Many organizations are working towards removing barriers. But I leave finding them out to you. If you are an advocate of increasing diversity in tech, don&apos;t stop. Spread your advocation to the whole world. Find a non-profit organization, advocate for their work, spread their word, make a donation, and connect your local community with other local communities. Expand yourself day by day and help others to grow with you. Don&apos;t create a bubble and stay there.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/put-remote-work-in-your-inclusion-efforts-not-only-in-diversity-in-the-workplace/&quot;&gt;If we can enable more people to have better lives&lt;/a&gt;, this will also increase tech diversity. The more people enter the tech, the merrier. Don&apos;t get stuck in the short term; invest in the long term.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/diversity-in-tech-is-a-first-world-problem/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/diversity-in-tech-is-a-first-world-problem/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#4: How to Be A Working Student with Oksana Shcherban</title><link>https://candost.blog/podcast/4-how-to-be-a-working-student/</link><guid isPermaLink="true">https://candost.blog/podcast/4-how-to-be-a-working-student/</guid><pubDate>Tue, 12 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;4: How to Be A Working Student with Oksana Shcherban&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/4-how-to-be-a-working-student&quot;&gt;https://candost.substack.com/p/4-how-to-be-a-working-student&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/4-how-to-be-a-working-student/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/4-how-to-be-a-working-student/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#5: Startup Marketing with Peri</title><link>https://candost.blog/podcast/5-startup-marketing/</link><guid isPermaLink="true">https://candost.blog/podcast/5-startup-marketing/</guid><pubDate>Tue, 12 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;5: Startup Marketing with Peri&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/5-startup-marketing&quot;&gt;https://candost.substack.com/p/5-startup-marketing&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/5-startup-marketing/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/5-startup-marketing/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Building Microservices: Microservices and Benefits</title><link>https://candost.blog/books/microservices-and-their-benefits/</link><guid isPermaLink="true">https://candost.blog/books/microservices-and-their-benefits/</guid><description>Microservices emerged from continuous delivery, domain-driven design, automation, and small and independent teams. They reflect the real world in the software. But what are microservices?</description><pubDate>Sun, 10 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This post is Chapter 1 of my notes from the book &lt;a href=&quot;https://samnewman.io/books/building_microservices/&quot;&gt;Building Microservices: Designing Fine-Grained Systems&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;/books/microservices-and-their-benefits/&quot;&gt;Chapter 1: Microservices and Their Benefits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/the-evolutionary-architect/&quot;&gt;Chapter 2: The Evolutionary Architect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/how-to-model-microservices/&quot;&gt;Chapter 3: How to Model Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-1/&quot;&gt;Chapter 4, Part 1: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/integrating-microservices-part-2/&quot;&gt;Chapter 4, Part 2: Integrating Microservices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/books/splitting-the-monolith/&quot;&gt;Chapter 5: Splitting the Monolith&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;&quot;Microservices are something that could be rewritten in two weeks.&quot; as Jon Eaves mentions. They are small and &lt;strong&gt;focused on doing one thing well&lt;/strong&gt;. Yet, the size of the service is always problematic to define. We mostly don&apos;t realize it until it gets too big. Software architects and engineers can work on minimizing the service until it no longer &lt;em&gt;feels&lt;/em&gt; too big.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Feeling&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;small enough&lt;/strong&gt; is the right term.&lt;/p&gt;
&lt;p&gt;Microservices are &lt;em&gt;&lt;strong&gt;autonomous&lt;/strong&gt;&lt;/em&gt;. One change in service shouldn&apos;t require a modification in another, and both can be deployed by themselves without requiring their consumers to make any change.&lt;/p&gt;
&lt;h2&gt;Key Benefits of Microservices&lt;/h2&gt;
&lt;p&gt;Microservices are all about keeping the balance of these benefits. &lt;em&gt;Keep the balance right; they are great. Get it wrong; disaster awaits.&lt;/em&gt; In the end, everything is about trade-offs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Technology Heterogeneity&lt;/strong&gt;: Autonomous and small independent services enable us to use different tech stacks for each service. &lt;strong&gt;Picking the right tools for the job&lt;/strong&gt; instead of a standardized approach fulfills business needs. We can also quickly adopt new technology. However, technological freedom comes with a price; the organizational alignment might suffer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resilience&lt;/strong&gt;: When there is a problem in service, &lt;strong&gt;it should be possible to isolate that point and degrade functionality instead of total failure&lt;/strong&gt;. Stability requires constant effort and knowledge of the domain. Considering microservices are small, we build many different services and need to know how to behave when one of them fails. Although resilience is hard, it is one of the most significant advantages of microservices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scaling&lt;/strong&gt;: Monolithic systems have to scale everything together as opposed to small, independent services. When a little functionality has a high load in the system, we only need to scale a specific service. In monoliths, it ends up scaling the whole application, which is more costly. Monoliths require more powerful hardware, which means more money.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ease of Deployment&lt;/strong&gt;: In monolithic systems, one small change requires a big deployment. Small services are the opposite. &lt;strong&gt;Every single change requires deployment in only one service.&lt;/strong&gt; If the deployment fails, it&apos;s also easier to find out the root cause. Releasing the software and rolling back in case of failure also gets faster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Organizational Alignment&lt;/strong&gt;: Microservices can quickly adapt to different types of organizational structures. As &lt;a href=&quot;https://en.wikipedia.org/wiki/Conway%27s_law&quot;&gt;Conway&apos;s Law&lt;/a&gt; says, systems represent organizational structures. However, the reverse of the law is also true. Monolithic systems create big and hard-to-manage organizations. Microservices build small teams. It&apos;s well-known in the software world that small groups tend to perform better. Independent and small teams don&apos;t wait for each other. With microservices, distributing ownership also becomes more manageable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Composability&lt;/strong&gt;: Similar to modules and service-oriented architecture, microservices allow us to reuse functionality. With microservices, consumers can consume our system in different ways for different purposes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizing for Replaceability&lt;/strong&gt;: When the services are small, it&apos;s also easy to replace. We can easily replace or even delete them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What About Service-Oriented Architecture (SOA)?&lt;/h2&gt;
&lt;p&gt;In SOA, service means an entirely separate system process. Service independence is provided by setting up system communication via network calls rather than handling it in the process boundary.&lt;/p&gt;
&lt;p&gt;One problem with SOA is that &lt;strong&gt;there is no good consensus on how to do SOA well&lt;/strong&gt;. Many issues associated with SOA happen in service-to-service communication, granulation, and splitting the system in the wrong places.&lt;/p&gt;
&lt;p&gt;We can think of microservices as a form of service-oriented architecture. While SOA doesn&apos;t help us understand what big means and how to split a big service into small ones, microservices solve most of the SOA problems.&lt;/p&gt;
&lt;h2&gt;Other Decompositional Techniques&lt;/h2&gt;
&lt;h3&gt;Shared Libraries&lt;/h3&gt;
&lt;p&gt;Shared libraries are a common way to reuse functionality. However, losing technological heterogeneity and independently scaling a part of a system comes at a price. We also cannot deploy changes smoothly unless we don&apos;t use dynamically linked libraries.&lt;/p&gt;
&lt;p&gt;Shared libraries still keep their place to increase reusability. We can always create common libraries that aren&apos;t specific to the business domain or use third-party ones. If we do so, we need to &lt;strong&gt;be careful not to tightly couple&lt;/strong&gt; the services.&lt;/p&gt;
&lt;h3&gt;Modules&lt;/h3&gt;
&lt;p&gt;Some languages provide modular decomposition techniques that allow the lifecycle management of modules. These techniques enable deploying modules into a running process. So instead of redeploying the whole service, we can change the running process.&lt;/p&gt;
&lt;p&gt;Even though modules take a different approach than shared libraries, we still have disadvantages. &lt;strong&gt;Technological heterogeneity is still not quite possible.&lt;/strong&gt; The language or platform either limits us from using new technologies. We are also restricted from how we can scale independently. When one of the functions has a high load, we still have to scale everything. It is also &lt;strong&gt;easier to create highly-coupled systems&lt;/strong&gt; using modules.&lt;/p&gt;
&lt;p&gt;Technically it&apos;s possible to create independent modules within a single monolithic process. However, it often stays in theory. In real life, keeping independence usually fails. The modules start becoming tightly coupled with the rest of the code.&lt;/p&gt;
&lt;h2&gt;No Silver Bullet&lt;/h2&gt;
&lt;p&gt;Microservices have complexities of distributed systems. Even though we know ways to manage distributed systems, it&apos;s still hard.&lt;/p&gt;
&lt;p&gt;Every organization is different and has different needs. Knowing the pros and cons of microservices help to decide if it&apos;s a fit or not. It&apos;s still not a silver bullet to solve all problems.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/microservices-and-their-benefits/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/microservices-and-their-benefits/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#3: Diversity, Gender Discrimination, Women in Tech with Yasemin Alpay</title><link>https://candost.blog/podcast/3-diversity-gender-discrimination/</link><guid isPermaLink="true">https://candost.blog/podcast/3-diversity-gender-discrimination/</guid><pubDate>Tue, 05 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;3: Diversity, Gender Discrimination, Women in Tech with Yasemin Alpay&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/3-diversity-gender-discrimination&quot;&gt;https://candost.substack.com/p/3-diversity-gender-discrimination&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/3-diversity-gender-discrimination/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/3-diversity-gender-discrimination/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to Stop Endless Discussions</title><link>https://candost.blog/how-to-stop-endless-discussions/</link><guid isPermaLink="true">https://candost.blog/how-to-stop-endless-discussions/</guid><description>When we find ourselves in endless debates where everyone defends their idea, we don&apos;t know how to handle the situation. We eventually find a way out, but what we need is an excellent system.</description><pubDate>Thu, 31 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I often see people believe in their solution and think theirs are better than the others. They defend their cases without having an exact reason. These situations often create long and meaningless discussions that go nowhere. Often they result in conflicts and people being offended by others&apos; behavior.&lt;/p&gt;
&lt;p&gt;Some people take action and implement their idea. Act fast, fail fast, and learn quicker. But this doesn&apos;t work when two or more people discuss how to implement a change or use new hyped technology. When people only talk a bit and &lt;a href=&quot;/no-you-dont-need-to-learn-another-programming-language-every-three-months/&quot;&gt;implement a new hype&lt;/a&gt;, it often ends up with resentment. When we act and embrace failing that fast, we cannot keep someone accountable.&lt;/p&gt;
&lt;p&gt;On the other hand, some people try to get everyone&apos;s confirmation to implement something that affects a large group. This strategy doesn&apos;t work either. Because it&apos;s impossible to get everyone on the same page, each person has a different opinion. When we try convincing everyone, we cannot implement anything at all. We just talk, and &lt;a href=&quot;/the-decision-making-pendulum/&quot;&gt;decisions come later&lt;/a&gt; than we need.&lt;/p&gt;
&lt;p&gt;That&apos;s why we need to balance both taking action and asking people to present their opinion on a topic. This balance is achievable with an excellent process. I helped build this balanced process in an organization where we aimed to solve another problem - the lack of feedback. We introduced a process called &lt;strong&gt;Request For Comments (RFC).&lt;/strong&gt; It is a common feedback mechanism in the software world presented by the Internet Society (ISOC) and is currently used in the Rust language.&lt;/p&gt;
&lt;p&gt;The RFC process uses a document written by someone about their proposal on a topic. It has &lt;strong&gt;a specific timeframe,&lt;/strong&gt; and &lt;strong&gt;everyone can give feedback&lt;/strong&gt; on it. The RFC and feedback are posted &lt;strong&gt;publicly&lt;/strong&gt;. Everyone can join the discussion. The goal is to include as many people as possible to access more points of view and spread the knowledge simultaneously. The good thing is that people focus on the proposed idea and give their feedback based on facts instead of only beliefs. On the other hand, it has a way bigger effect.&lt;/p&gt;
&lt;p&gt;While the initial goal of the RFC is &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;collecting feedback&lt;/a&gt;, I think it achieves a way more significant benefit by only &lt;strong&gt;writing the document itself&lt;/strong&gt;. &lt;a href=&quot;/why-is-writing-important/&quot;&gt;Writing shapes thoughts&lt;/a&gt;. Everyone has an opinion on any topic. But people who write their ideas form them into great content that is based on the facts.&lt;/p&gt;
&lt;p&gt;Writing helps to clear the mind. When we write on any topic, we separate our proposal from ourselves. It&apos;s still part of us. But since we plan to present it to the public and leave it there forever, we start being careful. And most of the time, we are not starting with blank white paper.&lt;/p&gt;
&lt;p&gt;The RFC processes use either a template or follow one standard style in documents. The aim is to help the authors to explain their plan in a structured way and, at the same time, make giving feedback easier. Each section of the document has its own goal, which helps separate the intent from the idea in a certain way.&lt;/p&gt;
&lt;p&gt;We used &lt;a href=&quot;https://web.stanford.edu/class/educ303x/wiki-old/uploads/Main/SRI_NABC.doc&quot;&gt;the NABC model from Stanford&lt;/a&gt;. The model starts with defining the &lt;em&gt;&lt;strong&gt;N&lt;/strong&gt;&lt;/em&gt;eed, followed by &lt;em&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;/em&gt;pproach, &lt;em&gt;&lt;strong&gt;B&lt;/strong&gt;&lt;/em&gt;enefits, and lastly, &lt;em&gt;&lt;strong&gt;C&lt;/strong&gt;&lt;/em&gt;ompetitors. Separating the Need from the Approach is very smart. While writing the need, the authors have to understand it very well. The approach and benefits sections are pretty straightforward, where authors define their strategy and list down the advantages. Since most people focus on them when they talk about ideas, it&apos;s also easy to write. Then the competition section comes. It is the part the authors have to consider competitors of their proposal. Thinking about an alternative solution instead of their suggestion requires people to focus on the problem instead of blindly loving and defending their solutions. With these four parts, the NABC is a pretty good model. But it&apos;s not the only one.&lt;/p&gt;
&lt;p&gt;Everyone has different needs. Therefore the formats might differ. Our manager at work also came up with a way more straightforward structure with only four questions to answer. It was only for our team, while the engineering department had the RFC process for a wider audience.&lt;/p&gt;
&lt;p&gt;The RFCs have another effect on the organization. The process seeks a &lt;strong&gt;consent-based&lt;/strong&gt; environment, &lt;strong&gt;not a consensus-based&lt;/strong&gt; one. If some people care about a topic a lot and come up with a written document that explains many things in detail, everyone can (and should) trust them. &lt;a href=&quot;/how-to-handle-and-overcome-objections-to-your-proposal-at-work/&quot;&gt;The authors shouldn&apos;t wait for everyone&apos;s confirmation of their proposal&lt;/a&gt;. When they get enough feedback, they should be able to continue further with or abandon the idea. It&apos;s their decision. Since they prepared the doc and collected many comments on it, they can have a better judgment.&lt;/p&gt;
&lt;p&gt;The process brings &lt;strong&gt;accountability&lt;/strong&gt;, as well. Whoever writes the proposal should be kept accountable. When people know that they will be accountable, they tend to approach more carefully and consider different aspects seriously. Holding someone accountable doesn&apos;t mean that there will be blame in case of failure. It only means that they have to follow up on their proposals, make sure it results in some way, and answer questions along the way. Also, most of the time, the RFC process is separated from the implementation process. While the author is accountable for the RFC itself, the implementation can be done by different people, and the RFC author might not be involved in it at all.&lt;/p&gt;
&lt;p&gt;These hidden gems of writing the idea in a structured way and asking people for comments afterward prevent many endless debates. The culture changes with it as well. Instead of endless debates, we create discussions and solutions based on facts. The process prevents people from talking and doing nothing. Even though the RFC process might not be perfect itself, writing is enough to halt endless and meaningless discussions. It also helps build trust in the community. So, if you are new to the RFC system, start by writing down your proposal. I&apos;m pretty sure that the result will be way better than expected.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=25622149&quot;&gt;How to Stop Endless Discussions got many comments on HackerNews.&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-to-stop-endless-discussions/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-to-stop-endless-discussions/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#2: How Engineering Teams Work with Product Teams with Göksel Köksal</title><link>https://candost.blog/podcast/2-how-engineering-teams-work-with-product-teams/</link><guid isPermaLink="true">https://candost.blog/podcast/2-how-engineering-teams-work-with-product-teams/</guid><pubDate>Tue, 29 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2: How Engineering Teams Work with Product Teams with Göksel Köksal&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/2-how-engineering-teams-work-with-product-teams&quot;&gt;https://candost.substack.com/p/2-how-engineering-teams-work-with-product-teams&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/2-how-engineering-teams-work-with-product-teams/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/2-how-engineering-teams-work-with-product-teams/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>How to reset the first commit in Git</title><link>https://candost.blog/how-to-reset-first-commit-in-git/</link><guid isPermaLink="true">https://candost.blog/how-to-reset-first-commit-in-git/</guid><description>We cannot use interactive rebasing and resetting. Both of them have security mechanisms to prevent this action. Instead, we have to use other approaches.</description><pubDate>Tue, 22 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When we want to change the initial commit on the main (or master) branch, we cannot use interactive rebasing and resetting. Both of them have security mechanisms to prevent this action. Instead, we either have to change our main (using &lt;code&gt;—-orphan&lt;/code&gt;) or delete the branch while on it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Don&apos;t use &lt;code&gt;rm -rf .git&lt;/code&gt;. This command deletes everything related to Git in the repository. We will lose all the branches and the commits.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Let&apos;s change the &lt;code&gt;main&lt;/code&gt; branch.&lt;/p&gt;
&lt;p&gt;First, we need to rename the &lt;code&gt;main&lt;/code&gt; branch (Before running this command, we assume a branch named &lt;code&gt;old_main&lt;/code&gt; doesn&apos;t exist.).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git branch -m main old_main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;-m&lt;/code&gt; or the &lt;code&gt;--move&lt;/code&gt; flag is used to rename/move the branch and its reflog. This moves everything (all the commits and history) from the &lt;code&gt;main&lt;/code&gt; branch to the &lt;code&gt;old_main&lt;/code&gt; branch. Now our branch looks like this: &lt;code&gt;old_main:main&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Next, we need to create an orphan branch from the current head.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git checkout --orphan main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;--orphan&lt;/code&gt; creates a new branch without a root so that the newly created branch doesn&apos;t have a history and a parent. The new branch is totally disconnected from all other branches and commits. But it still has all the files from the &lt;code&gt;old_main&lt;/code&gt;, because we created a new branch while we were in the &lt;code&gt;old_main&lt;/code&gt; branch.&lt;/p&gt;
&lt;p&gt;The last thing is deleting the &lt;code&gt;old_main&lt;/code&gt; since we don&apos;t need it anymore (we can keep it to preserve history if we want to).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git branch -D old_main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we have the latest changes, and we are in a brand new &lt;code&gt;main&lt;/code&gt; branch. But there is another way to do this with a single command. Before running the following command, we need to make sure we&apos;re on the &lt;code&gt;main&lt;/code&gt; branch.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git update-ref -d HEAD
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This command deletes the branch we are in. If we are in &lt;code&gt;main&lt;/code&gt;, this command will delete the &lt;code&gt;main&lt;/code&gt; branch, and all the commits.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/how-to-reset-first-commit-in-git/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/how-to-reset-first-commit-in-git/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Top 3 Tips for Planners</title><link>https://candost.blog/top-3-tips-for-planners/</link><guid isPermaLink="true">https://candost.blog/top-3-tips-for-planners/</guid><description>If you are planning your days and still failing to stick to them, these tips can help you. Instead of feeling bad, you can start feeling great.</description><pubDate>Sun, 20 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I started my new system, I also changed my perspective on my day-month-year plans. I didn&apos;t know the fundamentals of planning. I always made plans, but I abandoned them after a while. Because I failed to stick to them, and I discouraged myself from making new ones. When I learned these tips, they made my schedule more flexible; everything became organized. I started achieving more than I expected. I also attached it to my plan more than ever.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Put a buffer around &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;goals&lt;/a&gt;.&lt;/strong&gt;
The idea of putting a buffer time around the plan is glorious. Let&apos;s say I plan to finish a book in a week. Instead of putting a one-week timeframe in my program, I put around ten days (one and a half-day at the beginning and the end). Many unexpected things can happen in life. And this way, I make my plan adaptable to them. While my goal is still one week, I&apos;m less likely to fail. If I cannot begin reading the book, I still have more time to start.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Be flexible.&lt;/strong&gt;
The idea is to change the plan whenever it is apparent that it will not work out. I plan my days hour by hour, so I have no other option to make my program adaptable to change. I plan my next day hourly before I go to bed. And during the day, I usually cannot stick 100% to my plan. Whenever I see that I&apos;m moving away from my plan, I quickly rearrange it in two-three minutes. This way, I still keep ownership of my day, and I know what I want to do next.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use failure as &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;feedback&lt;/a&gt;.&lt;/strong&gt;
Related to the second tip, whenever I see that my plan is not working out anymore, I try to determine the main reason. Vital signs are always easy to see. I take note of why my plan failed, and I use these signs in my next planning. Feedback is a secret weapon of any working system.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;While working on any kind of system, I keep these three things in mind. I try to apply these also to my software projects as well. So, learning these skills is helpful in different aspects of life.&lt;/p&gt;
&lt;p&gt;One last thing to keep in mind: &lt;strong&gt;you don&apos;t have to plan your days&lt;/strong&gt;. While planning is working for me, and I quite like it, it may not be a thing for you. There are many happy people without plans. So, &lt;strong&gt;if you think planning is not for you, don&apos;t feel forced to do it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you plan your days, what are your tips?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/top-3-tips-for-planners/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/top-3-tips-for-planners/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>#1: Tech Interviews with Sabrican Ozan</title><link>https://candost.blog/podcast/1-tech-interviews/</link><guid isPermaLink="true">https://candost.blog/podcast/1-tech-interviews/</guid><pubDate>Sat, 19 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;1: Tech Interviews with Sabrican Ozan&lt;/p&gt;
&lt;p&gt;In response to: &lt;a href=&quot;https://candost.substack.com/p/1-tech-interviews&quot;&gt;https://candost.substack.com/p/1-tech-interviews&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/podcast/1-tech-interviews/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/podcast/1-tech-interviews/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Separation of Concerns</title><link>https://candost.blog/separation-of-concerns-at-work/</link><guid isPermaLink="true">https://candost.blog/separation-of-concerns-at-work/</guid><description>We often don’t even realize that we’re mixing things at work. There are a couple of reasons and strategies we can follow.</description><pubDate>Thu, 26 Nov 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There is a concept called &lt;a href=&quot;https://en.wikipedia.org/wiki/Separation_of_concerns&quot;&gt;separation of concerns&lt;/a&gt; in software development. The main idea is designing the system (or code) by keeping the different sets of information away from each other to understand better, refactor, or delete quickly when the time comes. When the separation is blurry, the components become tightly coupled. It means that we need to edit many unrelated parts of the code whenever we need to refactor. While developing good quality software, this concept is generally in the mind of developers. But I see that it sometimes fails when the topic changes from software to a more personal side of the work, such as communication or personal growth. We often don’t even realize that we’re mixing things. There are a couple of reasons.&lt;/p&gt;
&lt;p&gt;First, &lt;strong&gt;the information flow is massive&lt;/strong&gt;, and we &lt;em&gt;&lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;try&lt;/a&gt;&lt;/em&gt; &lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;to keep it up&lt;/a&gt;. The information comes from many different directions. Every single day, there are tons of things happening. The marketing campaign of the software we developed is going live, the user gives feedback on a feature, the financial situation of the company is announced, or a new fantastic article comes up that we want to read, and so on. If we are in a small company with less than ten people, it’s somehow easier to manage. But the bigger the size, the worse it gets. And within all that catastrophe, we &lt;em&gt;try&lt;/em&gt; to follow what’s going on while trying to do our job simultaneously.&lt;/p&gt;
&lt;p&gt;Second, and also related to the first one, &lt;strong&gt;the exponential increase of the &lt;a href=&quot;https://project-management.info/number-of-communication-channels-pmp-formula-calculator/&quot;&gt;communication channels&lt;/a&gt;&lt;/strong&gt;. When there are more than ten people, the complexity of communication becomes high. The number of channels gets more and more, and we cannot keep up with what happens on the other side of the room.&lt;/p&gt;
&lt;p&gt;Third, &lt;strong&gt;not having a career growth plan&lt;/strong&gt;. A career growth plan is not about job titles. It’s about in which direction we want to learn and get better. When we create an unbalanced personal growth plan, it either ends up missing work goals or we lack personal growth. Most of the time, companies put the goals in front and expect personal growth outside of work. Or we try to grow while focusing on the goals. The personal development plan is also not always in written form. We tend to approach it intuitively and not bother with sitting down and planning it using the facts.&lt;/p&gt;
&lt;p&gt;Last but not least, &lt;strong&gt;mixing up social life within the company&lt;/strong&gt;. Hiring processes include cultural fit to make sure that we’re bringing someone we can have a better interaction with. Since humans are social animals, we depend on social life. We spend countless hours with each other. When our teammates become our friends, the work topics start mixing into the non-work time, and personal life topics slowly leak into the work time. I’m aware that the sharp separation is almost impossible. But not being careful on the social side of life might create many problems (such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Fear_of_missing_out&quot;&gt;FOMO&lt;/a&gt;) in both work and personal life.&lt;/p&gt;
&lt;p&gt;Now we know the reasons, how do we separate these then, or should we? Let’s start with career concerns. Most companies don’t have career paths defined. We also know that having a clear separation of roles also means hierarchy and limitation. It’s hard (but not impossible) to switch between two distinct career paths (like going from software development to sales or management). Regardless of what the company has, &lt;strong&gt;we need to create our personal career plans&lt;/strong&gt;. This plan shouldn’t be based on any title. Instead of focusing on goals such as “I want to become a Software Architect,” we need to focus on areas and approach them like “I want to learn more about software architecture and design and improve my skills.” Changing our perspective allows us to focus more on our &lt;a href=&quot;/growth-with-systematic-bliss/&quot;&gt;constant growth&lt;/a&gt; instead of big and prone-to-fail goals. After that, we can start creating goals that support our approach, such as “&lt;a href=&quot;/books/microservices-and-their-benefits/&quot;&gt;Learn and practice Microservices&lt;/a&gt;,” if we want to be a software architect.&lt;/p&gt;
&lt;p&gt;Once we have these goals separately, we can align our career plan with the company&apos;s options and offers. The company might or might not be able to help us in our career growth. Sometimes it doesn’t have an opportunity to offer but can suggest something else that we didn’t even know or consider. It may not provide a position, but we can allocate time to improve our skills in a way we want to. The key here is &lt;strong&gt;not to tie our career to one specific company or position&lt;/strong&gt; to have an independent future.&lt;/p&gt;
&lt;p&gt;After finding out our career plan, we can now tackle the communication burden and information overflow. If we can limit ourselves intentionally in both, we can be more effective instead of seeing them as problems. Once we know how we would like to grow, it will become easier to learn to say “No” to some topics. Maybe the marketing area will be interesting for us but not the infrastructure engineering. Therefore, we can easily cut our information flow from infrastructure teams. It’s okay to have many interests in different work areas, but if we’re reading Slack messages for two or three hours every day, we might have created an infinity pool while we only needed a big box. We think that we are part of the boundless sea, but there is a hidden pool wall in front of us. The best strategy is &lt;strong&gt;&lt;a href=&quot;/prioritization-skills-for-senior-and-staff-software-engineers/&quot;&gt;being a liberal&lt;/a&gt;&lt;/strong&gt; when a new information flow starts but quickly turning to &lt;strong&gt;be a conservative and &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;cutting the wires&lt;/a&gt;&lt;/strong&gt; that are not aligned with our growth.&lt;/p&gt;
&lt;p&gt;The same applies to the communication channels. If we put twenty people together and let them work as a team, they will most likely fail. Working with many different people broadens our perspective and enables us to see different angles on what we do. Even though it’s an excellent strategy to have a big, diverse group, &lt;a href=&quot;/managing-partially-distributed-teams/&quot;&gt;managing this communication&lt;/a&gt; is way too hard. As a result, these big teams are generally divided into smaller units. Hence, we need to start &lt;strong&gt;limiting our time&lt;/strong&gt; and &lt;strong&gt;picking the communication channels&lt;/strong&gt; to create or get the most value.&lt;/p&gt;
&lt;p&gt;At the same time, the work is a cumulative effort, not an individual. We cannot only focus on ourselves and be arrogant by cutting off communication when it doesn’t interest us. Sometimes, there are places that we &lt;em&gt;have to be&lt;/em&gt;, even if it’s not what we want. In these situations, the one feasible strategy I see is &lt;strong&gt;delegation&lt;/strong&gt;. If we can &lt;a href=&quot;/how-to-delegate-anything-successfully/&quot;&gt;delegate&lt;/a&gt; some of our meetings and work to someone interested in the topic and have similar knowledge, we should delegate. If they don’t know the topic, we can onboard them. This is a win-win both for our colleagues and for us. They have a chance to have a more significant impact, and we can focus on the work we want to contribute and enjoy the most.&lt;/p&gt;
&lt;p&gt;Once we handled all, the last thing is a social life at work. All of the above help us to create better-formed social environments. When we have shaped our circles at work, we also structure our social groups. What we will have at hand is groups of people with the same interest. So we can form healthy relationships with less effort. As we have limited energy and time—social efforts consume a lot of it—there is no choice other than being selective.&lt;/p&gt;
&lt;p&gt;We have a constrained pool of opportunities at work. We have to use it as effectively as possible. Being open and getting in touch with many different people might seem like expanding this pool. However, it makes our lives harder. It’s &lt;a href=&quot;https://www.nytimes.com/2010/02/27/your-money/27shortcuts.html&quot;&gt;more challenging&lt;/a&gt; to &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;make a decision when we have twenty options instead of five&lt;/a&gt;. Smartly limiting our choices will help us to build our careers and avoid &lt;a href=&quot;https://en.wikipedia.org/wiki/Fear_of_missing_out&quot;&gt;FOMO&lt;/a&gt; at the same time.&lt;/p&gt;
&lt;p&gt;We want to climb the career ladder as fast as possible, and this is entirely normal. But this shouldn’t be a goal. The goal (at least mine) is to have a healthier work-life where I can earn enough money, contribute to a common goal, learn, and grow to create a better life for ourselves and our families.&lt;/p&gt;
&lt;p&gt;Since we’re living creatures, these things should be living with us as well. I was an iOS engineer with a high interest in Deep Learning two years ago. Today, I’m a backend engineer with an increased interest in organizational and leadership topics. I went with the flow until now. Instead of going 100% with the flow, we should draw some frames for ourselves. I know that it’s hard. But at least that’s what I’m trying to achieve by myself.&lt;/p&gt;
&lt;p&gt;It looks like we’re simplifying the complicated working life. Yes, we are. I know that working life is very dynamic, and there are many other factors. However, going with the flow puts us in a position where all of the concerns are mixed. Once we see them separately, we can understand them better and refactor them easily. And if things don’t work out in a company, we will know the exact reasons why we left that place.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/separation-of-concerns-at-work/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/separation-of-concerns-at-work/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Growth with Systematic Bliss</title><link>https://candost.blog/growth-with-systematic-bliss/</link><guid isPermaLink="true">https://candost.blog/growth-with-systematic-bliss/</guid><description>Growth with big goals is an illusion. Growth without goals is too. We need the middle ground, and this is how I approach it.</description><pubDate>Sat, 10 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Setting goals was always part of me. Therefore, failure too. Many different strategies I took led to failure and devastation. Even though I achieved some of my goals, I felt joy only for a moment until I focused on my next goal. And up till reaching any goal, I suffered from not being able to get it every day. Most of the time, I was dismal and &lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;happy&lt;/a&gt; for only a few days.&lt;/p&gt;
&lt;p&gt;I grew up in an environment where I had to concentrate on test results in all respects. The education system was based on assessments, grading, and ranking. Even though my family was trying to provide a good education, the system was not the best. Everything around the system focused on results.&lt;/p&gt;
&lt;p&gt;I had yearly and quarterly goals divided into months. I even got help from one coach while creating my old system. We both were proud of coming up with that system. I tried to stick to it for around half a year. After not accomplishing my monthly and quarterly goals, I felt overwhelmed. So, the change was inevitable, and I took the completely opposite approach and dropped all my goals.&lt;/p&gt;
&lt;p&gt;After reading &lt;a href=&quot;https://www.joincolossus.com/blog/posts/growth-without-goals&quot;&gt;Growth Without Goals&lt;/a&gt; by Patrick O’Shaughnessy, I thought a lot about my broken system. It’s hard to change something embedded in your bones, soul, and thoughts. It takes months if not years. When your life is based on goals, changing it requires a restart from the bottom. The first step to the bottom is a realization. I quickly noticed that my current system wasn’t as productive as I thought and even became one reason for my burnout (another story). I needed a new system that would help fulfill my general curiosity about diverse topics. Therefore, I jumped on &lt;a href=&quot;https://jamesclear.com/goals-systems&quot;&gt;what I found&lt;/a&gt;: Kick out the goals and do what you enjoy.&lt;/p&gt;
&lt;p&gt;It sounded like what I was looking for. Do what you love. Enjoy every moment of your life—carpe diem. Growth without goals is a shining scheme. It’s so clear that it looks like a diamond. However, it comes with a price. First, this change was entirely psychological. The transformation of the mind is always the hardest. It requires mindfulness. Noticing your thoughts, naming them, and watching them from a distance is different than just being aware of them. I meditated and tried to accept and change how my mind worked. It seemed working at first. But the change was colossal, and I failed again. Before trying to innovate, I needed to disclose what I had one more time.&lt;/p&gt;
&lt;p&gt;I quickly found out that without goals, it is almost impossible to grow. Just wandering around and trying to enjoy every moment of your life leads to &lt;a href=&quot;https://www.nateliason.com/blog/systems-without-goals&quot;&gt;mediocrity&lt;/a&gt;. I fooled myself by doing nothing or “being in exploration mode.” Don’t get me wrong, both of the behaviors are good and essential for growth. But being stuck in them is the opposite of development; it leads to ignorance.&lt;/p&gt;
&lt;p&gt;I realized that I only needed to change my approach to my goals. Instead of setting &lt;a href=&quot;https://www.mindtools.com/pages/article/smart-goals.htm&quot;&gt;SMART&lt;/a&gt; goals yearly or quarterly and just trying to achieve them while suffering daily failure, I’m now starting to set goals with constant growth in mind.&lt;/p&gt;
&lt;p&gt;The questions I asked myself, like “Where do I see myself in five years?” became more obsolete. I needed to answer different and better questions like “What are things that I think are important to do every day?” And answers to those questions change as well. Instead of “Learning Bass Guitar in a year,” now my new goal becomes “Learn one specific thing in bass guitar every two weeks and practice it until you’re comfortable with it,” instead of “Lose six kilos in a year,” now “Exercise 3-4 times per week and eat healthy more than half of the week.” The goals like these lead to different results. I’m not saying that I will exercise 160 times this year or learn 20 songs to play bass guitar. Instead, I’m focusing on the process and only trying to do it better than the previous week.&lt;/p&gt;
&lt;p&gt;This is a dramatic shift. At the moment, I think I can rename the word goal into something else. I still have “goals,” but they are not goals for me. They are the essential things that I enjoy doing day-to-day. They have certainty, specificity, and also freedom.&lt;/p&gt;
&lt;p&gt;While rebuilding my system, I also needed a different approach to developing this new procedure. Directly starting with “learn one thing on bass guitar every two weeks” is likewise not realistic and is accustomed to failure. I have begun using &lt;a href=&quot;https://www.amazon.de/dp/B00GU2RHCG/ref=cm_sw_em_r_mt_dp_GFGEFb95G33DG&quot;&gt;the Kaizen way&lt;/a&gt;—start small and build up. It’s the same way I started flossing.&lt;a href=&quot;/growth-with-systematic-bliss/#fn-1&quot;&gt;1&lt;/a&gt; I choose the one thing to learn on guitar as so little that I can master it in two-three weeks. After a couple of weeks, it becomes part of me and my routine. So I can focus on the next.&lt;/p&gt;
&lt;p&gt;Now I have &lt;a href=&quot;/why-is-writing-important/&quot;&gt;small habits&lt;/a&gt;. It looks like there is no systematic approach. Before starting to learn one thing, I study a top-down approach and split the topic into pieces. I form &lt;a href=&quot;https://www.wikiwand.com/en/Chunking_(psychology)&quot;&gt;small chunks&lt;/a&gt; of things. Learning a chunk of knowledge is one session job. When I master the skill, I go to another. And with the help of my general curiosity, I can learn anything one by one. I try to focus on what I do in these sessions without a time limit. I remove all distractions and turn off all notifications. Lastly, I practice deliberately. If I learn one small thing, I won’t repeat it over and over again all the time. I only repeat it until I am fluent, and I make the next chunk a bit harder. This is what I’ve learned from the course “&lt;a href=&quot;https://www.coursera.org/learn/learning-how-to-learn&quot;&gt;Learning How to Learn&lt;/a&gt;.” While learning the chunk of information, understand the basic idea, practice deliberately, and focus. It works like magic.&lt;/p&gt;
&lt;p&gt;This is my new system, and it’s a work in progress. I feel like I started having &lt;a href=&quot;/a-life-without-problems-the-happiness/&quot;&gt;the joy&lt;/a&gt; of life after a long time. I spend my time on what I want to do. I’ve been meditating, &lt;a href=&quot;/why-is-writing-important/&quot;&gt;writing&lt;/a&gt;, improving my &lt;a href=&quot;https://www.talkingbass.net/&quot;&gt;bass guitar playing&lt;/a&gt;, &lt;a href=&quot;https://www.runtastic.com/&quot;&gt;exercising&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/user/yogawithadriene&quot;&gt;doing yoga&lt;/a&gt;, fasting, and eating fresh vegetables from our garden to be healthier. I learn, practice, and discover one more thing. I don’t jump from one big goal to another. I’m the &lt;a href=&quot;https://www.moralstories.org/the-rabbit-and-the-turtle/&quot;&gt;turtle in the race&lt;/a&gt;, not the rabbit. Slowly, step by step, I grow. I will win in the long run. And if I don’t, it’s okay, too. I’m learning to live in the moment and enjoy, not to live for tomorrow. I’m only sticking to my system, not to the goals.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/growth-with-systematic-bliss/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/growth-with-systematic-bliss/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>High Productivity and Clear Communication in Different Cultures</title><link>https://candost.blog/books/high-productivity-and-clear-communication-in-different-cultures/</link><guid isPermaLink="true">https://candost.blog/books/high-productivity-and-clear-communication-in-different-cultures/</guid><description>Review about the book The Culture Map by Erin Meyer</description><pubDate>Thu, 28 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Even though physical borders were closed during the COVID-19 era, the digital world has seen an enormous advancement and removed almost all digital borders. People who are already challenged in an international business environment are working from home and facing another set of difficulties. However, cultural diversity is still in place, as before. This contrast doesn’t have to end in battles anymore, thanks to Erin Meyer. In her book, &lt;a href=&quot;https://www.erinmeyer.com/book/&quot;&gt;The Culture Map&lt;/a&gt;, she discovers cultural differences to help us learn how our own culture differs from others. She explains how each culture is unique, even though they are geographically close.&lt;/p&gt;
&lt;p&gt;Meyer’s methodology is different than the others we’ve seen before. Instead of researching cultures separately, she creates eight scales to compare them. Each topic is carefully selected. They all enable us to see where our culture stands in &lt;a href=&quot;/importance-of-the-feedback/&quot;&gt;communication&lt;/a&gt;, persuasion, &lt;a href=&quot;/deciding-on-what-you-should-focus-on-next/&quot;&gt;decision&lt;/a&gt;, &lt;a href=&quot;/how-to-build-trust-in-a-team-as-a-new-manager/&quot;&gt;trust&lt;/a&gt;, &lt;a href=&quot;/how-to-solve-and-prevent-conflicts/&quot;&gt;disagreement&lt;/a&gt;, and &lt;a href=&quot;/timely-estimations-are-underrated/&quot;&gt;time management&lt;/a&gt;. There are two goals in every single scale, maintaining high productivity and having clear communication.&lt;/p&gt;
&lt;p&gt;Many books and magazines cover these two goals and eight topics in businesses. However, all of them lack bringing them together under the culture headline. In an international business environment, it’s hard to increase productivity without understanding our own culture and comparing it with the culture we’re doing business with.&lt;/p&gt;
&lt;p&gt;Clear communication is the first topic in the book because of its closest relation to high productivity. There are two essential skills in communication, listening and speaking. But, one is more substantial than the other in some cultures. &lt;strong&gt;Knowing when we should listen more or talk more is what makes us good communicators.&lt;/strong&gt; For example, in one culture (high-context culture—as she mentions in the book), if we have to say we made a joke, it wasn’t worth the effort to say the joke itself. In contrast, in culture (a low-context one), Meyer gives a strategy and says, “Tell them what you are going to tell them, then tell them, then tell them what you’ve told them.” There are other strategies for both ends of the scale and how to create excellent communication in multicultural collaborations.&lt;/p&gt;
&lt;p&gt;Another scale in the book is evaluating—providing negative feedback. Some cultures are more open to giving direct negative feedback than others. In indirect cultures, words that soften the criticism are often used, such as &lt;em&gt;kind of, sort of, and maybe.&lt;/em&gt; In contrast, words like &lt;em&gt;absolutely and totally&lt;/em&gt; are used more frequently in direct cultures. One surprising thing is in some low-context cultures—the ones we need to talk about a lot—giving indirect negative feedback is preferred, such as the United Kingdom.&lt;/p&gt;
&lt;p&gt;Both communication and evaluation point us to the leading scale, placing egalitarianism on one side and hierarchy on another. Germany is located in the middle, closer to hierarchical, despite having explicit (low-context) communication and direct negative feedback. What makes Germany different than others is having a bit more hierarchy doesn’t mean that we cannot criticize our boss openly in public. On the other hand, Brazilians prefer more implicit (high-context) communication and hide their negative feedback between words (indirect negative feedback). Still, their organizations are as hierarchical as Germany.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/the-culture-map/eight-scales-in-cultures.png&quot; alt=&quot;All eight scales and the presentation of some cultures together&quot; /&gt;
All eight scales and the presentation of some cultures together&lt;/p&gt;
&lt;p&gt;While we discover each culture’s uniqueness under eight scales in the book, Meyer uses clear language. Carefully selected words create beautiful sentences and shape the authenticity of the book. She organizes and explains these eight scales meticulously to build up the logical structure. We are hooked on the topic from the beginning and enjoy every single word.&lt;/p&gt;
&lt;p&gt;We cannot interpret other people without knowing our own culture. We should explore our own culture first and open our emotional borders to others after. Meyer gives us different insights into different cultures. This helps us to create empathy and, therefore, boosts our understanding of each other. Meyer drives us into a better life in a borderless digital world. We can achieve both high productivity and clear communication goals easier in both international business and personal life. Anyone who would like to discover empathy should read this book and enjoy peace.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/books/the-culture-map/culture-map-cover.png&quot; alt=&quot;The Culture Map Book&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/books/high-productivity-and-clear-communication-in-different-cultures/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>14 Lessons I learned in 10 Years</title><link>https://candost.blog/14-lessons-i-learned-in-10-years/</link><guid isPermaLink="true">https://candost.blog/14-lessons-i-learned-in-10-years/</guid><description>Technical skills are easy, yet soft ones are harder. I learned a lot of lessons from my failures, experiences, and successes. Here is my shortlist.</description><pubDate>Sat, 15 Feb 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s been ten years since I started coding. I’ve always wanted to stay in the steep acceleration part of the &lt;a href=&quot;https://www.researchgate.net/figure/The-learning-curve-With-the-introduction-and-implementation-of-a-new-technique-high_fig2_237994914&quot;&gt;learning curve&lt;/a&gt;. When I look back, I recognize that learning the technical part was simpler than all the other things. After the realization, I wanted to write the lessons I learned from my mistakes. Some of them are life lessons, but all of them apply to the software development world.&lt;/p&gt;
&lt;h2&gt;1. The team is the most valuable thing at work&lt;/h2&gt;
&lt;p&gt;From university to company projects, the team is the crucial part. I’ve seen a lot of projects fail, be postponed, or be delayed because of bad team organization. When there is good interaction in the team, the technical side runs smoothly. Clear communication brings openness and intelligibility.&lt;/p&gt;
&lt;h2&gt;2. Perspective is the key&lt;/h2&gt;
&lt;p&gt;Think in as many aspects as you can. When you are not happy with some situation, try to approach it from another angle. If you’re not satisfied with the company’s decision, try to emphasize and approach from the managers’ view. When you’re having problems with your teammates, put yourself in their shoes. Analyze their needs. Ask yourself, “Why does this person want this?”&lt;/p&gt;
&lt;h2&gt;3. The software development game is all about trade-offs&lt;/h2&gt;
&lt;p&gt;There is no such thing as perfect. Whatever the system you’re developing, you’ll face dilemmas. Analyze all possible views. Choose the ones you can surrender. But never go without considering them. Try to find the ideal way.&lt;/p&gt;
&lt;h2&gt;4. Love the problem, not your solution&lt;/h2&gt;
&lt;p&gt;When you love the solution, you usually try to apply it to unsuitable problems. But when you love the problem, you become open-minded to any resolution.&lt;/p&gt;
&lt;h2&gt;5. Always ask for feedback&lt;/h2&gt;
&lt;p&gt;You cannot learn from your mistakes unless there is a clear indication that it’s a mistake. So, it would be best if you had feedback. Ask for it and be specific. General questions bring broad answers. Use open questions instead of closed ones. Ask, “How do I deal with criticism?” instead of asking, “Do you think I accept criticism?” It challenges others to think intensely. If you choose the second approach, you’ll get “Yes/No” and miss the factual thought. People prefer to be lazy; nudge them to think more.&lt;/p&gt;
&lt;h2&gt;6. Criticize the work, not the person&lt;/h2&gt;
&lt;p&gt;When you focus on the person, you will face defense. Your criticism will never reach its destination. Therefore, concentrate on the work. Abstract your thoughts and steer them toward the job, behavior, situation, etc., not toward the person.&lt;/p&gt;
&lt;h2&gt;7. Pick your battles wisely&lt;/h2&gt;
&lt;p&gt;You will not be able to win all the fights. There are places where you have to sacrifice. Also, if you fight for everything, you’ll not get your work done. So, &lt;a href=&quot;https://idioms.thefreedictionary.com/choose+your+battles&quot;&gt;choose the battles&lt;/a&gt; which you truly believe it has greater importance or has a greater chance of success.&lt;/p&gt;
&lt;h2&gt;8. Compete with yourself, not with other people&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;“When you want to compete against everyone else, no one wants to help you. But when you compete against yourself, everyone wants to help you.” - Simon Sinek, Start With Why&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;9. Be humble and share your knowledge as much as you can&lt;/h2&gt;
&lt;p&gt;Create different mediums to share your knowledge. If you have no space for sharing, initiate one. It can be a new Slack channel, weekly meeting, company-wide monthly event, etc. &lt;a href=&quot;/managing-partially-distributed-teams/&quot;&gt;Build a community around knowledge sharing&lt;/a&gt;. While sharing wisdom, be humble, and do it for other people’s good. Don’t brag. Develop collective knowledge. It is way better than individual knowledge.&lt;/p&gt;
&lt;h2&gt;10. Don’t assume; always ask and confirm&lt;/h2&gt;
&lt;p&gt;People are different. They come from different backgrounds, &lt;a href=&quot;/books/high-productivity-and-clear-communication-in-different-cultures/&quot;&gt;cultures&lt;/a&gt;, and families. Everyone has a different communication characteristics. Don’t pretend to look like you understand them. Develop empathy. Don’t assume on behalf of other people. Assuming is one of the mistakes everyone makes. When you assume, you are never sure. Always ask your colleagues what they mean. Afterward, repeat what you heard to them. It is the best tactic and works like magic. Every small miscommunication will disappear.&lt;/p&gt;
&lt;h2&gt;11. Always go with the truth even if you’re alone and the road is full of pain and fear&lt;/h2&gt;
&lt;p&gt;While developing software, we also fall into the trap of doing workarounds. We try to cheat from time to time to find the quickest way. Especially laws and licenses are easy to cheat. And we think that no one can find out. I can assure you that someone will eventually find out. It will cost you more than the effort you spend now. So, follow the laws and ethics first; you won’t need to apologize or pay a huge cost.&lt;/p&gt;
&lt;h2&gt;12. Balance your work&lt;/h2&gt;
&lt;p&gt;Don’t overwork. Even if you have overtime compensation (which is rare), limit your working hours. Don’t do overtime. Your productivity starts suffering after consecutive overtime. It’s okay to do in urgent cases for a couple of days. But the longer you work, the worse it gets. Take long breaks. Take bulk vacations if you can. It will help to switch your focus away from work and help to slow down. A minimum of two weeks of vacation will do. During the vacation, turn off everything related to your work.&lt;/p&gt;
&lt;h2&gt;13. The more you care, the more you have cared&lt;/h2&gt;
&lt;p&gt;When you care about people, you’ll build robust relationships. If people feel that you care about them, they will be open and share more with you. After a while, you will realize that they also start to care about you.&lt;/p&gt;
&lt;h2&gt;14. Always be nice and mean it&lt;/h2&gt;
&lt;p&gt;Don’t pretend, be a nice person. Don’t be a jerk.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/14-lessons-i-learned-in-10-years/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/14-lessons-i-learned-in-10-years/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Managing Multiple AWS Environments with Terraform</title><link>https://candost.blog/managing-multiple-aws-environments-with-terraform/</link><guid isPermaLink="true">https://candost.blog/managing-multiple-aws-environments-with-terraform/</guid><description>Multiple environments like staging and production are standard and when we use it with AWS, we face the problem of managing access to them.</description><pubDate>Mon, 25 Mar 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Multiple environments like staging, production, and development are standard in the software development community. When we combine this approach with AWS usage, we come across a problem where we have to define a user for each environment. We either create a new IAM user separately under the same organization or use multiple organizations. There are two other approaches that we shouldn’t do at all, using an admin or creating one user for all.&lt;/p&gt;
&lt;p&gt;In my opinion, having one organization and using different users for different environments make more sense. Here, we’re going to take a look at how we are going to approach this process by using Terraform. Terraform is a tool for managing infrastructure. We can easily create, change and improve the infrastructure by code instead of using the AWS Console. AWS Console is incredible and simple, and it’s perfect for smaller projects. It has all the features we need. The reason why we use Terraform is we want to see the infrastructure resources in our repository. So, everyone understands which tools we’re using from AWS by only looking at the code.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Using Identity and Access Management (IAM), you can create and manage AWS users and groups, and use permissions to allow and deny their access to AWS resources. While IAM allows us to manage access to resources, Terraform has a Workspaces feature which is designed for our problem. Each workspace can be used as an environment in the project. We can add a new one, switch from one to another quickly. But how we’re going to use it? First, let’s take a look at how to create an IAM user without multiple environments/workspaces.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Creating Resources&lt;/h2&gt;
&lt;p&gt;After creating a new Terraform file named users.tf, we should define the resources (users) that we will use. We define an &lt;code&gt;iam_user&lt;/code&gt; variable and give a default name and description. And we define an &lt;code&gt;aws_iam_user&lt;/code&gt; resource for our defined user name.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;variable &quot;iam_user&quot; {
  default     = &quot;candost&quot;
  description = &quot;My AWS IAM user&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we define a &lt;code&gt;aws_iam_user&lt;/code&gt; resource for our defined user. In here we use the variable in the name field for our resource.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;resource &quot;aws_iam_user&quot; &quot;candost&quot; {
  name = &quot;${var.iam_user}&quot;
  path = &quot;/&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, we define a &lt;code&gt;aws_iam_user_policy&lt;/code&gt; to attach necessary resource permissions to our brand-new user. We give our user name in user property as &lt;code&gt;aws_iam_user.candost.name&lt;/code&gt;. This will fetch the name we defined with &lt;code&gt;user&lt;/code&gt; variable. We assume that we have defined a DynamoDB Table named &lt;em&gt;MyTable&lt;/em&gt;. I’ll explain the setup of that table later.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;resource &quot;aws_iam_user_policy&quot; &quot;candost_policy&quot; {
  name_prefix = &quot;${var.iam_user}&quot;
  user        = &quot;${aws_iam_user.candost.name}&quot;

  policy = &amp;lt;&amp;lt;EOF
{
  &quot;Version&quot;: &quot;2012-10-17&quot;,
  &quot;Statement&quot;: [
    {
      &quot;Effect&quot;: &quot;Allow&quot;,
      &quot;Action&quot;: &quot;dynamodb:*&quot;,
      &quot;Resource&quot;: [
        &quot;arn:aws:dynamodb:eu-west-1:113608568902:table/MyTable&quot;
      ]
    }
  ]
}
EOF
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Terraform Workspaces&lt;/h2&gt;
&lt;p&gt;Now, let’s add the environment. Terraform gives access to the current workspace with &lt;code&gt;${terraform.workspace}&lt;/code&gt; variable. We’ll append this to our resources. Here is the final version with multiple environments.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;variable &quot;iam_user&quot; {
  default     = &quot;candost&quot;
  description = &quot;My AWS IAM user&quot;
}

resource &quot;aws_iam_user&quot; &quot;candost&quot; {
  name = &quot;${var.iam_user}-${terraform.workspace}&quot;
  path = &quot;/&quot;
}

resource &quot;aws_iam_user_policy&quot; &quot;candost_policy&quot; {
  name_prefix = &quot;${var.iam_user}-${terraform.workspace}-&quot;
  user        = &quot;${aws_iam_user.candost.name}&quot;

  policy = &amp;lt;&amp;lt;EOF
{
  &quot;Version&quot;: &quot;2012-10-17&quot;,
  &quot;Statement&quot;: [
    {
      &quot;Effect&quot;: &quot;Allow&quot;,
      &quot;Action&quot;: &quot;dynamodb:*&quot;,
      &quot;Resource&quot;: [
        &quot;arn:aws:dynamodb:eu-west-1:113608568902:table/MyTable&quot;
      ]
    }
  ]
}
EOF
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As we can see, we changed nothing except combining the user name and the Terraform workspace. But they still access the same table. We need to separate that table too. Let’s take a look at how we add a resource for the DynamoDB table. We create a &lt;em&gt;database.tf&lt;/em&gt; file and put the following code in there.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;resource &quot;aws_dynamodb_table&quot; &quot;MyTable&quot; {
  name           = &quot;MyTable-${terraform.workspace}&quot;
  read_capacity  = 20
  write_capacity = 20
  hash_key       = &quot;myHashKey&quot;

  attribute {
    name = &quot;myHashKey&quot;
    type = &quot;S&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, we have a table code that will work with multiple environments, and it will help us to create different tables for different environments. &lt;strong&gt;So, one code will generate multiple environments setups.&lt;/strong&gt; Let’s update our policy for the new DynamoDB table resource and finish up. Here is the final version:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;variable &quot;iam_user&quot; {
  default     = &quot;candost&quot;
  description = &quot;My AWS IAM user&quot;
}

resource &quot;aws_iam_user&quot; &quot;candost&quot; {
  name = &quot;${var.iam_user}-${terraform.workspace}&quot;
  path = &quot;/&quot;
}

resource &quot;aws_iam_user_policy&quot; &quot;candost_policy&quot; {
  name_prefix = &quot;${var.iam_user}-${terraform.workspace}-&quot;
  user        = &quot;${aws_iam_user.candost.name}&quot;

  policy = &amp;lt;&amp;lt;EOF
{
  &quot;Version&quot;: &quot;2012-10-17&quot;,
  &quot;Statement&quot;: [
    {
      &quot;Effect&quot;: &quot;Allow&quot;,
      &quot;Action&quot;: &quot;dynamodb:*&quot;,
      &quot;Resource&quot;: [
        &quot;arn:aws:dynamodb:eu-west-1:113608568902:table/MyTable-${terraform.workspace}&quot;
      ]
    }
  ]
}
EOF
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, we can use the following commands to create a new workspace and apply our changes to AWS.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;terraform workspace new stage
terraform workspace select stage
terraform plan
terraform apply
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Terraform gives a lot of opportunities to manage infrastructure resources easily. Infrastructure as a code is a neat approach and allows developers to share the code, follow the changes easily and understand the current resources used inside the project.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/managing-multiple-aws-environments-with-terraform/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/managing-multiple-aws-environments-with-terraform/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Testability in iOS</title><link>https://candost.blog/testing-in-ios/</link><guid isPermaLink="true">https://candost.blog/testing-in-ios/</guid><description>Most of the developers have a hard time understanding the testing. Tests are often underrated and despised. What are the benefits of tests?</description><pubDate>Tue, 04 Dec 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tests are often a big discussion in the software development community. We hear a lot of people saying, “If you don’t write tests, you’re a bad developer,” or “If you don’t know how to write tests, you’re doing everything wrong,” or “Tests are good, but they are time-consuming.” However, I prefer saying&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“If you don’t write tests, that’s OK. Just try writing them, you’ll end up understanding the benefits and you’ll learn and think more about your architecture decisions which you made before coding.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I talked with many people and watched a lot of talks at meet-ups and conferences about all kinds of tests. After a while, I realized to believe that the common thought, “In iOS, you don’t need to write tests if you have a QA person.” This still kicks me in the back from time to time. But whether we think the same or we like writing tests or not, we should acknowledge the benefits. Believe me, when I saw the benefits in time, I changed my mind and started writing automated tests even though we have QA people.&lt;/p&gt;
&lt;h2&gt;OK. But still, why should we write tests&lt;/h2&gt;
&lt;p&gt;First, we should consider the workflow without tests and identify the (future) problems. Let’s think of the scenario where we have only one QA person and no automated tests. We need to consider every case before and during the coding. Just because of human nature, we tend to make mistakes. That’s why manual testing is buggy. There will be unwanted behavior. I hear you; you have great and hard-working QA people who test the builds. But small bugs tend to be missed, and they can be easily identifiable by automated tests.&lt;/p&gt;
&lt;p&gt;On the other hand, when we have automated tests, we tend to have fewer bugs. We create the test cases and fix the code to make the tests pass. Only thinking and writing these cases brings more benefits. They become a documentation of intent. It provides enough information to the new developers in the project. Therefore, during the onboarding process, tests flatten the learning curve.&lt;/p&gt;
&lt;p&gt;Writing less code is one of the things that most developers want. This is generally a strong argument against tests. But without tests, we end up spending more time finding bugs and fixing them. There isn’t an easy way to measure how much it affects. But the test-written projects tend to be more stable and solid. Even while adding the new feature, we can be comfortable. Because if our changes affect the other parts of the code, we will be notified by broken tests.&lt;/p&gt;
&lt;p&gt;Architectural decisions are made better with tests. We’ll talk about the architecture in later posts, but I just want to say that while writing tests, we end up thinking about our architectural approaches a lot. We start considering &lt;a href=&quot;https://www.wikiwand.com/en/Single_responsibility_principle&quot;&gt;single responsibility&lt;/a&gt; and &lt;a href=&quot;https://www.wikiwand.com/en/Dependency_inversion_principle&quot;&gt;dependency inversion&lt;/a&gt; principles to set up better architectures. Sometimes we need to &lt;a href=&quot;https://stackoverflow.com/a/2666006/1205160&quot;&gt;mock or stub&lt;/a&gt; services (and we generally do this by using &lt;code&gt;protocol&lt;/code&gt;s in Swift), and this helps to understand &lt;a href=&quot;https://developer.apple.com/videos/play/wwdc2015/408/&quot;&gt;Protocol Oriented Programming&lt;/a&gt;. So, unconsciously we start researching and learning more architectural approaches and design patterns.&lt;/p&gt;
&lt;p&gt;Lastly, tests make code reviews easy. If we already have a lot of tests, we are more confident that the change doesn’t affect the other parts of the code. And if we’re not really familiar with the content of the &lt;a href=&quot;https://www.atlassian.com/git/tutorials/making-a-pull-request&quot;&gt;pull&lt;/a&gt; (or &lt;a href=&quot;https://docs.gitlab.com/ee/user/project/merge_requests/&quot;&gt;merge&lt;/a&gt;) request, thanks to the tests, we understand that content with ease. I like the quote that Apple engineers say in &lt;a href=&quot;https://developer.apple.com/videos/play/wwdc2017/414/&quot;&gt;one WWDC17 session&lt;/a&gt;, “Code reviews for test code, not code reviews with test code.”&lt;/p&gt;
&lt;p&gt;Ok, let’s summarize here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manual tests are buggy, and they may cause unwanted behavior&lt;/li&gt;
&lt;li&gt;Automated tests are robust, and they provide self-documentation to the code&lt;/li&gt;
&lt;li&gt;Automated tests seem time-consuming at first, but they save more time in the long run&lt;/li&gt;
&lt;li&gt;Automated tests help us understand architectural approaches and teach a lot of things even without noticing.&lt;/li&gt;
&lt;li&gt;Automated tests make code reviews easier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Now we’re kind of convinced. So, what do we need to know?&lt;/h2&gt;
&lt;p&gt;There are tons of great online tutorials about writing tests for iOS apps (links are below). Here, we will focus on important points and some testing tips.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&quot;Design your code for testability&quot; - &lt;a href=&quot;https://youtu.be/amVstam84Xo?t=405&quot;&gt;John Sundell&lt;/a&gt;
As John says, we should ask ourselves one question: &lt;strong&gt;&quot;What makes code easy to test?&quot;&lt;/strong&gt;. When we ask this question, there are two things that come to mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;We shouldn’t overuse singletons.
Singletons are great, and Apple also uses them in important places like &lt;code&gt;UIScreen&lt;/code&gt;, &lt;code&gt;UIApplication&lt;/code&gt;. Since we have only one screen and only one application in run-time, this makes sense. But making an object global is not always necessary. We should keep the state of the object local instead and don’t let everyone change the state. So, we should think twice when we create a singleton.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We should use protocols and parameterization.
Instead of subclassing for mocking purposes, we should prefer protocols (&lt;a href=&quot;https://medium.com/commencis/reusability-and-composition-in-swift-6630fc199e16&quot;&gt;composition over inheritance&lt;/a&gt;). Protocols provide a more robust solution. When we subclass to create a mock for tests, Xcode doesn’t give any warning if we forget to add &lt;code&gt;override&lt;/code&gt; to a function. It is risky and also some classes cannot be subclassed (like &lt;code&gt;UIApplication&lt;/code&gt;). If we use protocols, we abstract the implementation, and we create a proper mock. Also, Xcode shows an error when we forget to implement one function while conforming to a protocol. Let’s take a look at an example.
Let’s say we want to create a &lt;code&gt;FileOpener&lt;/code&gt; and its only purpose is opening files if the URL is correct. We’ll use &lt;code&gt;UIApplication.canOpenURL(url:)&lt;/code&gt; method. And we’ll write tests for this.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class FileOpener {
  func open(identifier: String) {
    guard let url = URL(string: &quot;iosappscheme://open?id=\(identifier)&quot;) else {
        debugPrint(&quot;Failed to convert URL&quot;)
        return
    }
    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        debugPrint(&quot;Failed to open URL&quot;)
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This should work in the app. But in UITests, this will open another app, and our tests will be blocked. When we start thinking about John’s question (&quot;What makes code easy to test?&quot;), we realize that we should parameterize the function first. &lt;code&gt;UIApplication&lt;/code&gt; is a dependency in class. So, it’s better to inject it.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class FileOpener {
  let application: UIApplication
  init(application: UIApplication = UIApplication.shared) {
    self.application = application
  }

  func open(identifier: String) {
    let url = URL(string: &quot;iosappscheme://open?id=\(identifier)&quot;)
    if application.canOpenURL(url) {
      application.open(url, options: [:], completionHandler: nil)
    } else {
      debugPrint(&quot;Failed to load URL&quot;)
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As we see in the initializer, we used &lt;code&gt;UIApplication.shared&lt;/code&gt; in default parameter. This makes initializing the &lt;code&gt;DocumentOpener&lt;/code&gt; so much easier. But we still have a problem. We cannot mock &lt;code&gt;UIApplication&lt;/code&gt; because it’s a singleton. Now, we can get the power of protocols in Swift. Let’s implement a new protocol called &lt;code&gt;URLOpening&lt;/code&gt; and make &lt;code&gt;UIApplication&lt;/code&gt; to conform it.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  protocol URLOpening {
    func canOpenURL(_ url: URL) -&amp;gt; Bool
    func open(_ url: URL, options: [UIApplication.OpenExternalURLOptionsKey : Any], completionHandler completion: ((Bool) -&amp;gt; Void)?)
  }

  extension UIApplication: URLOpening {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, let’s adjust our &lt;code&gt;FileOpener&lt;/code&gt; and use the protocol as a parameter in the initializer.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class FileOpener {
  let urlOpener: URLOpening
  init(urlOpener: URLOpening = UIApplication.shared) {
    self.urlOpener = urlOpener
  }

  func open(identifier: String) {
    let url = URL(string: &quot;iosappscheme://open?id=\(identifier)&quot;)
    if urlOpener.canOpenURL(url) {
      urlOpener.open(url, options: [:], completionHandler: nil)
    } else {
      debugPrint(&quot;Failed to load URL&quot;)
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Thanks to Swift extensions, we don’t need to implement &lt;code&gt;URLOpening&lt;/code&gt; protocol in the &lt;code&gt;UIApplication&lt;/code&gt; extension, as we see above. Because we’re following the same method signature which &lt;code&gt;UIApplication&lt;/code&gt; already has. Now we have abstracted the implementation; we can create a new mock class and just conform to &lt;code&gt;URLOpening&lt;/code&gt; protocol. Thus, we’ll be able to use mocking while testing &lt;code&gt;FileOpener&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We should separate logic and effects and create clear boundaries for APIs
We should create frameworks and libraries to separate the logic. Using &lt;a href=&quot;https://www.wikiwand.com/en/Separation_of_concerns&quot;&gt;Separation of Concerns&lt;/a&gt;, we may extract business logic and algorithms. They can have their own tests. And whenever we need to change something, we will know our changes won’t affect the business logic if we designed the API boundaries well. Swift has powerful &lt;a href=&quot;https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html&quot;&gt;access control&lt;/a&gt;. We shouldn’t expose more information than needed to the outside of those frameworks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use pure functions
We should leverage functional style and reduce the effects of our functions. One function should always return the same output when given the same input. Also, it shouldn&apos;t have any side effects. (in functional programming, these functions are called ‘&lt;a href=&quot;https://www.wikiwand.com/en/Pure_function&quot;&gt;Pure function&lt;/a&gt;’). Pure functions are predictable, and they are easily testable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optimize App Launch for Testing
While running the tests, we see the simulator but wait for a couple of seconds. This is because the app is loading. Tests don’t start before &lt;code&gt;func application(_ application: didFinishLaunchingWithOptions options:) -&amp;gt; Bool&lt;/code&gt; returns. We generally do a lot of setup inside this method, like analytics and crash reporting setup. But we generally don’t need them during tests. So, we should avoid unnecessary work when the app is launched for tests. We can &lt;a href=&quot;https://medium.com/@derrickho_28266/xcode-custom-environment-variables-681b5b8674ec&quot;&gt;set a custom scheme environment variable&lt;/a&gt; and use it in &lt;code&gt;AppDelegate&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;func application(_ application: UIApplication, didFinishLaunchingWithOptions options: _) -&amp;gt; Bool {
  let isUnitTesting = ProcessInfo.processInfo.environment[&quot;IS_UNIT_TESTING&quot;] == &quot;1&quot;
  if isUnitTesting == false {
    // Do UI-related setup, which can be skipped when testing
  }
  return true
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Avoid too much mocking. Mocking is good while testing. But it might result in a lot of implementation details. Mocks provide predictability. Whenever we need really good predictability, we can define them. But even in this case, they should be as simple as possible, and they should be inline, not globally defined.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use correct expectations in tests and avoid ambiguous tests. We should use faster, callback-based expectations in unit tests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;XCTestExpectation&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;XCTNSNotificationExpectation&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;XCTKVOExpectation&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use the &lt;a href=&quot;https://www.swiftbysundell.com/daily-wwdc/faster-and-more-robust-tests-with-xcode-10&quot;&gt;parallel testing&lt;/a&gt; feature in Xcode 10. If you have a lot of tests, make them run in parallel. Xcode runs them with good optimization to reduce the test running time. Try to watch your test classes’ execution times. If one test class takes a huge time while the others are not, try splitting the class into several classes or find the reason why it takes so much time. This will accelerate the running of the tests.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Last Words&lt;/h2&gt;
&lt;p&gt;Covering the app code with tests is a neat way to be sure the app works properly. Not only should we set goals for test coverage, but we also should treat the tests with the same amount of care as our app. The quality of the test code is also really important to consider, even though the code is not shipping. Coding principles in the app code should also apply to the test code. And lastly, test code should support the evolution of our app, and they should grow together. Therefore, we should keep an eye on their growth with code coverage.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Further:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/videos/play/wwdc2017/414/&quot;&gt;Engineering for Testability - WWDC17&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=amVstam84Xo&quot;&gt;Writing Swift code with great testability - John Sundell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/videos/play/wwdc2018/417/&quot;&gt;Testing Tips &amp;amp; Tricks - WWDC18&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.swiftbysundell.com/posts/mocking-in-swift&quot;&gt;Mocking in Swift - Swift by Sundell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/videos/play/wwdc2015/408/&quot;&gt;Protocol Oriented Programming - WWDC15&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raywenderlich.com/709-ios-unit-testing-and-ui-testing-tutorial&quot;&gt;iOS Unit Testing and UI Testing Tutorial - Ray Wenderlich&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raywenderlich.com/5522-test-driven-development-tutorial-for-ios-getting-started&quot;&gt;Test-Driven Development Tutorial for iOS - Ray Wenderlich&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://indiestack.com/2018/02/xcodes-secret-performance-tests/&quot;&gt;Xcode’s Secret Performance Tests - Indie Stack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/testing-in-ios/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/testing-in-ios/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Concurrency in iOS</title><link>https://candost.blog/concurrency-in-ios/</link><guid isPermaLink="true">https://candost.blog/concurrency-in-ios/</guid><description>We face handling more than one operation at the same time. We want to shorten the waiting time even though it is not always necessary with the concurrency.</description><pubDate>Tue, 27 Nov 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After focusing on the &lt;a href=&quot;/ios-application-lifecycle/&quot;&gt;Application Lifecycle&lt;/a&gt; and &lt;a href=&quot;/view-lifecycle-in-ios/&quot;&gt;View Lifecycle&lt;/a&gt; in iOS, our next topic will be Networking. But before getting into details in networking, we should know one more thing.&lt;/p&gt;
&lt;p&gt;And this crucial thing is &lt;strong&gt;concurrency&lt;/strong&gt;. We face handling more than one operation at the same time in today’s world. We want to shorten users’ waiting time even though it’s not necessary. Displaying the loading for a long time or freezing the UI moves the user’s focus away and decreases the app usage from time to time. At the same time, keeping attention on the app became really hard. Therefore, instead of executing operations synchronously, one after another, we have to run them in parallel to have a better user experience.&lt;/p&gt;
&lt;h2&gt;Why do we need to know Concurrency really well?&lt;/h2&gt;
&lt;p&gt;These days, almost every app works with online data transfer (network requests and responses). Handling network operations properly is really important. Besides the app functionality, we don’t want to interrupt or block the user while using the app. Interruptions always result in a bad user experience. So, while we’re displaying any kind of UI, we mostly deal with the network requests concurrently. We can send a network request and wait for the response while displaying a loading animation. Concurrency is handled by different APIs in iOS. We’ll focus on basic Grand Central Dispatch (GCD) to understand concurrency.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the programming world, concurrency is a big topic and has a vital place. If you want to learn more about concurrency, &lt;a href=&quot;http://qr.ae/TUGShf&quot;&gt;this answer&lt;/a&gt; on Quora explains well.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Before talking about &lt;code&gt;DispatchQueue&lt;/code&gt;, we should understand the queues first. Because &lt;code&gt;DispatchQueue&lt;/code&gt; can run operations on different queues.&lt;/p&gt;
&lt;h2&gt;What exactly do we need to know about Queues?&lt;/h2&gt;
&lt;p&gt;There are two types of queues in iOS, the main queue and the others. We have only one main queue, but we can have more than one background queues that can run different operations on it. Background queues run on the thread pool according to their priorities. But the main queue runs on the main thread. All UI (user interface) updates have to run on the main thread. Therefore, we use the main queue for the UI.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/ns-for-ios-devs/Queues-Network%20Operations.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The most important thing here is having &lt;em&gt;only one main queue&lt;/em&gt;. The main queue should be used wisely. Since every UI update has to be done in the main queue, if we use the main queue for every other operation, we can freeze the UI operations. For example, if we send a network request on the main queue and update the UI according to the response, we will see the UI is not responsive until we get back the data. The hint is that we should use background queues as much as we can and try to leave the main queue empty for non-UI operations.&lt;/p&gt;
&lt;h2&gt;How do we use queues with a simple network request and GCD&lt;/h2&gt;
&lt;p&gt;Sending a network request is pretty straightforward. &lt;code&gt;URLSession&lt;/code&gt; is the most common way for a simple network request. We can send a request via &lt;code&gt;dataTask&lt;/code&gt; and get the response data with an error (if any) in a closure.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let url = URL(string: &quot;https://candost.blog/&quot;)
if let url = url {
  showLoadingIndicator() // UI Operation; has to run on the main queue
  let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
  if error != nil {
    showErrorAlert(error) // UI operation; has to run on the main queue!!
  } else {
    if let data = data {
      debugPrint(usableData) //JSONSerialization
    }
  }
  debugPrint(&quot;Completed&quot;)
}
task.resume()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Again, one of the most important things here is that thread handling. We talked about this one under the queues. In this example, we want to display an alert when we get an error from the server. But how can we solve the queue problem here? The lightweight and easiest way to run the UI operation method on the main queue is using Grand Central Dispatch (GCD).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DispatchQueue.main.sync {
  showErrorAlert(error)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So, while running this code, if an error happens, the app will switch to the main queue and execute the &lt;code&gt;showErrorAlert(error)&lt;/code&gt; line. In parallel, the code will continue on the background queue and print &lt;code&gt;Completed&lt;/code&gt; to the debug console.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/ns-for-ios-devs/send-receive-network.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Finally, we can see our example code with better user experience handling. The code below starts on the background queue, and when it needs to show a loading indicator on the screen, we switch to the main queue. The execution continues and starts the task. When we got the response, we were still in the background queue. If there is an error, we now switch to the main queue and display the alert.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DispatchQueue.global().async {
  let url = URL(string: &quot;https://candost.blog/&quot;)
  if let url = url {
    DispatchQueue.main.sync {
      showLoadingIndicator() // UI Operation; has to run on the main queue
    }
    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
      if error != nil {
        DispatchQueue.main.sync {
          showErrorAlert(error) // UI operation; has to run on the main queue!!
        }
      } else {
        if let data = data {
          debugPrint(usableData) //JSONSerialization
        }
      }
      debugPrint(&quot;Completed&quot;)
    }
    task.resume()
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s possible to be confused by the main thread vs the main queue and why they are not the same. There are one main thread and one main queue. If you’re curious about more details, you can &lt;a href=&quot;http://blog.benjamin-encz.de/post/main-queue-vs-main-thread/&quot;&gt;read this post&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What if we have a bit more complicated problem&lt;/h2&gt;
&lt;p&gt;We have talked about a simple network request and GCD. Whilst it’s important for many apps to handle more complicated tasks concurrently, GCD provides only an easy and pretty straightforward solution. We may need to cancel a concurrent operation or follow its state. GCD doesn’t provide a solution to these problems. That’s why we will get help from &lt;code&gt;Operation&lt;/code&gt; and &lt;code&gt;OperationQueue&lt;/code&gt;. &lt;code&gt;Operation&lt;/code&gt;s are chained by &lt;code&gt;OperationQueue&lt;/code&gt; and they can also be dependent on each other. For example, if we want to download food images after fetching the restaurant food inventory, we should add the fetch operation as a dependency to the download operation and put them in the same &lt;code&gt;OperationQueue&lt;/code&gt;. So, the download operation will wait for the fetch operation to finish.&lt;/p&gt;
&lt;p&gt;Let’s have a look at the basic &lt;code&gt;Operation&lt;/code&gt; example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class FetchRestaurantInventoryOperation: Operation {
  var restaurantData: RestaurantData
  var networkProvider: NetworkProvider

  // 1
  private var _executing = false {
    willSet {
      willChangeValue(forKey: &quot;isExecuting&quot;)
    }
    didSet {
      didChangeValue(forKey: &quot;isExecuting&quot;)
    }
  }

  // 1
  private var _finished = false {
    willSet {
      willChangeValue(forKey: &quot;isFinished&quot;)
    }

    didSet {
      didChangeValue(forKey: &quot;isFinished&quot;)
    }
  }


  init(restaurantData: RestaurantData, networkProvider: NetworkProvider) {
    self.restaurantData = restaurantData
    self.networkProvider = networkProvider
  }

  // 2
  override func main() {
    if isCancelled {
      self.finish(true)
      return
    }

    self.executing(true)
    self.networkProvider.fetchInventory() { jsonData in
      if let json = jsonData, !json.isEmpty {
        guard let serializedDictionary = try? JSONSerialization.jsonObject(with: json, options: []) as? [String: Any] else { return }
        self.restaurantData.setInventoryJSON(serializedDictionary)
        self.restaurantData.state = .downloaded
      } else {
        self.restaurantData.state = .failed
      }
      self.executing(false)
      self.finish(true)
    }
  }

  // 2
  override var isExecuting: Bool {
    return _executing
  }

  // 2
  override var isAsynchronous: Bool {
    return true
  }

  // 2
  override var isFinished: Bool {
    return _finished
  }

  // Helper methods
  func executing(_ executing: Bool) {
    _executing = executing
  }

  func finish(_ finished: Bool) {
    _finished = finished
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instead of getting into too many details about &lt;code&gt;Operation&lt;/code&gt; and &lt;code&gt;OperationQueue&lt;/code&gt;, let’s take a look at the important things which we should know:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An operation object is a &lt;em&gt;single-shot object&lt;/em&gt;. It’s &lt;strong&gt;not&lt;/strong&gt; reusable. When we use the operation object, it’s basically done. If we want to repeat the same operation, we need to create another instance from our custom operation class.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Operation&lt;/code&gt; is an abstract class that is associated with a single task. So, we cannot create new instances of &lt;code&gt;Operation&lt;/code&gt;. Instead, we can subclass it like in the example or use the system-wide defined ones (e.g., &lt;code&gt;BlockOperation&lt;/code&gt;). If an operation has a dependency, it is not considered ready until all of the dependencies are finished executing. When the last dependency is finished, the operation starts executing.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Operation&lt;/code&gt; is KVC and KVO compliant (we will talk about this later). So, we can watch the changes in operations by attaching observers. But we shouldn’t bind the operation to the UI elements. Because UI elements must execute on the main thread.&lt;/li&gt;
&lt;li&gt;While it’s safe to call the methods in &lt;code&gt;Operation&lt;/code&gt; from multiple threads, we should take care of the thread safety in overridden methods and custom implementation.&lt;/li&gt;
&lt;li&gt;If we are creating a non-concurrent operation, only overriding the &lt;code&gt;main()&lt;/code&gt; method is enough. But for concurrent operation, we need to override &lt;code&gt;start()&lt;/code&gt;, &lt;code&gt;isAsynchronous&lt;/code&gt;, &lt;code&gt;isExecuting&lt;/code&gt;, &lt;code&gt;isFinished&lt;/code&gt; at minimum. In the example, we have a concurrent operation. That’s why we have all the overridden methods and properties commented with the number &lt;code&gt;2&lt;/code&gt;. But we didn’t override &lt;code&gt;start()&lt;/code&gt; method. The reason is &lt;code&gt;start()&lt;/code&gt; method automatically calls the &lt;code&gt;main()&lt;/code&gt; method when invoked. While overriding the &lt;code&gt;isExecuting&lt;/code&gt; and &lt;code&gt;isFinished&lt;/code&gt; methods, we have to generate KVO notifications when the operation is finished or canceled. In the example, we can see these parts with the comment with the number &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In case we override &lt;code&gt;start()&lt;/code&gt; method, we should never call &lt;code&gt;super&lt;/code&gt; in the custom implementation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Last words&lt;/h2&gt;
&lt;p&gt;If we want to keep our apps responsive and run multiple processes in parallel easily, we have to understand concurrency and use our tools according to our needs. GCD gives us simplicity. But when we want to have advanced and custom operations like canceling the execution or reusing some parts of the code for concurrent operations, it is simply not enough. Using &lt;code&gt;Operation&lt;/code&gt;s and &lt;code&gt;OperationQueue&lt;/code&gt;s would be less painful in these cases. GCD and Operation are not the same things. Convenient use of both is key to creating robust and user-friendly iOS apps.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Further Reading:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/documentation/dispatch&quot;&gt;Apple Dispatch Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/documentation/foundation/operation&quot;&gt;Apple Operation Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raywenderlich.com/5370-grand-central-dispatch-tutorial-for-swift-4-part-1-2&quot;&gt;Learn more about Concurrency, Asynchronous vs. Synchronous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raywenderlich.com/5371-grand-central-dispatch-tutorial-for-swift-4-part-2-2&quot;&gt;Deep dive in Grand Central Dispatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nshipster.com/nsoperation/&quot;&gt;NSHipster - NSOperation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.raywenderlich.com/5293-operation-and-operationqueue-tutorial-in-swift&quot;&gt;Operation and OperationQueue Tutorial in Swift&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://agostini.tech/2017/07/30/understanding-operation-and-operationqueue-in-swift/&quot;&gt;Understanding Operation and Operation Queue in Swift&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/concurrency-in-ios/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/concurrency-in-ios/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>View Lifecycle in iOS</title><link>https://candost.blog/view-lifecycle-in-ios/</link><guid isPermaLink="true">https://candost.blog/view-lifecycle-in-ios/</guid><description>Truly understanding when the view is created, loaded, appeared, or destroyed helps us to understand our approach deeply while developing an iOS App.</description><pubDate>Sun, 18 Nov 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The next thing after learning &lt;a href=&quot;/ios-application-lifecycle/&quot;&gt;Application Lifecycle&lt;/a&gt;, the view lifecycle holds an essential position in every iOS developer’s life.&lt;/p&gt;
&lt;p&gt;Each view is created either using storyboards, xibs, or using a programmatic approach. Independent from the approach, truly understanding when the view is created, loaded, appeared, or destroyed helps us to understand our approach deeply while developing the screen designs, animations, and even business logic.&lt;/p&gt;
&lt;h2&gt;Ok, but why do we need to know&lt;/h2&gt;
&lt;p&gt;When we think about the &lt;a href=&quot;/ios-application-lifecycle/&quot;&gt;application lifecycle&lt;/a&gt;, we easily see that certain things happen as the application goes to the background, suspended, etc. Whenever the user interacts with the app, some specific action happens, and the app&apos;s state may change. However, the view&apos;s state may change with any user interaction or any change in the app&apos;s data.&lt;/p&gt;
&lt;p&gt;On the other hand, we might need to manipulate the user interface when there is a particular state transition in the view. For example, if we would like to use custom views and set them to &lt;code&gt;UIViewController&lt;/code&gt;&apos;s &lt;code&gt;view&lt;/code&gt;, we have to do it in a &lt;code&gt;loadView&lt;/code&gt; method. Or, if our design requires us to have minor differences between landscape and portrait mode, we must know when we can make this change in the code. Therefore, understanding all lifecycle methods not only helps us in code but also enables us to be more creative and implement an advanced user interface.&lt;/p&gt;
&lt;h2&gt;What do we need to know?&lt;/h2&gt;
&lt;p&gt;To use the view in proper positions, we must know when the view is created, loaded, appeared, changed, disappeared, and terminated. Subclasses of &lt;code&gt;UIViewController&lt;/code&gt; is responsible for managing the views (aka. &lt;code&gt;UIView&lt;/code&gt;s). View controller has one root view, which is a &lt;code&gt;UIView&lt;/code&gt; instance. The important thing here is how they work together.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;UIViewController&lt;/code&gt; handles all the magic behind &lt;code&gt;UIView&lt;/code&gt; while &lt;code&gt;UIView&lt;/code&gt; just represents the screen and some content to the user. &lt;code&gt;UIViewController&lt;/code&gt; tells the root &lt;code&gt;UIView&lt;/code&gt; object when to come to the screen. First, the view controller creates its root view and loads it. After loading, it tells the view to appear on the screen and disappear when necessary.&lt;/p&gt;
&lt;p&gt;Furthermore, a view controller might be a child of another view controller. So, the view controller&apos;s lifecycle not only cares about its root view but also includes the relationship with other view controllers, like whether it moved to the parent view controller or not.&lt;/p&gt;
&lt;p&gt;Lastly, the view controller’s root view (aka. &lt;code&gt;UIView&lt;/code&gt;) has its own content and lifecycle. The root view has subviews like buttons, labels, switches, or other &lt;code&gt;UIView&lt;/code&gt; subclasses. The lifecycle of the subviews is, in most cases, not considered by every developer. But there is one common case which is embedding a view controller into another. In this case, we need to imitate the lifecycle actions for both view controllers’ views and call proper methods when necessary.&lt;/p&gt;
&lt;h2&gt;How to get notified about lifecycle events&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;UIViewController&lt;/code&gt; has a lot of methods to inform us when some particular action happens. For example, we can override the &lt;code&gt;viewDidLoad&lt;/code&gt; method to do some actions right after loading the view. Or use the &lt;code&gt;loadView&lt;/code&gt; method to replace UIViewController’s root &lt;code&gt;UIView&lt;/code&gt; with our custom &lt;code&gt;UIView&lt;/code&gt; class.&lt;/p&gt;
&lt;p&gt;We’ll look at the relationships between the combination of views and view controllers to learn the current state. Instead of focusing too much on what each method does, we’ll look at what is important for each method and when to use them.&lt;/p&gt;
&lt;h3&gt;UIView - UIViewController Relationship&lt;/h3&gt;
&lt;h4&gt;loadView&lt;/h4&gt;
&lt;p&gt;This is where the root view of the view controller is loaded. The &lt;code&gt;view&lt;/code&gt; property of &lt;code&gt;UIViewController&lt;/code&gt; is &lt;code&gt;nil&lt;/code&gt; at the moment. We need to override this method if we want to create a custom view and set it to the &lt;code&gt;view&lt;/code&gt; property. If the Interface Builder is used to create the view and initialize the view controller, this method must not be overridden. Once we override this method, we have to initialize our custom view and set it to &lt;code&gt;view&lt;/code&gt; property of &lt;code&gt;UIViewController&lt;/code&gt; and never call &lt;code&gt;super.loadView&lt;/code&gt; because it creates the view by itself and assigns it to &lt;code&gt;view&lt;/code&gt;. Lastly, we shouldn’t call this method directly.&lt;/p&gt;
&lt;h4&gt;viewDidLoad&lt;/h4&gt;
&lt;p&gt;This is called only once after creating the view and loading it into memory. But the &lt;code&gt;bounds&lt;/code&gt; of the view is not defined yet. We generally override this method to initialize the objects which the view controller will use. We shouldn’t forget to call super when we override.&lt;/p&gt;
&lt;h4&gt;viewWillAppear&lt;/h4&gt;
&lt;p&gt;This method is called right before the view appears on the screen. When this is called, the view’s bounds are defined, but the orientation is not set yet. We need to be careful while using appear methods since they will be called every time the view comes to the screen. Similarly, we shouldn’t forget to call super.&lt;/p&gt;
&lt;h4&gt;viewDidAppear&lt;/h4&gt;
&lt;p&gt;This method is called right after the view is visible to the user. It’s a good place to start animations. Same as before, we shouldn’t forget to call super.&lt;/p&gt;
&lt;h4&gt;viewWillLayoutSubviews&lt;/h4&gt;
&lt;p&gt;This is the first place to learn the bounds of the view in the lifecycle. This is also called right before &lt;code&gt;layoutSubviews&lt;/code&gt; method is triggered in &lt;code&gt;UIView&lt;/code&gt;. This is also called when the subviews of the root view are loaded. For example, this is called when the cells of the collection view are loaded.&lt;/p&gt;
&lt;h4&gt;viewDidLayoutSubviews&lt;/h4&gt;
&lt;p&gt;This is called right after &lt;code&gt;layoutSubviews&lt;/code&gt; called. The subviews have been set, and size, position, and constraints are applied. &lt;code&gt;viewWillLayoutSubviews&lt;/code&gt; and &lt;code&gt;viewDidLayoutSubviews&lt;/code&gt; are also called when the orientation of the screen changes between portrait and landscape modes. So the key point is whenever the bounds of the view are updated, or the view layout is recalculated, both methods will be called. Similarly, we shouldn’t forget to call super at some point in these methods.&lt;/p&gt;
&lt;h4&gt;viewWillDisappear&lt;/h4&gt;
&lt;p&gt;This is called when the view is about to disappear from the screen. One thing we can do here is to save the user data to not lose anything important. Another thing we might be canceling is network requests. We can override this method also if we want to hand over first responder jobs to another view when the view disappears.&lt;/p&gt;
&lt;h4&gt;viewDidDisappear&lt;/h4&gt;
&lt;p&gt;This is called when the view is disappeared from the screen. The view is removed from the view hierarchy at the moment.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/ns-for-ios-devs/ios-complete-view-lifecycle.jpeg&quot; alt=&quot;Complete View Lifecycle&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We took a look at the most common relationship, view and view controller relationship which was also a default one implemented by UIKit. But the view controller not only gets in a relationship with a view but also with other view controllers like a child and parent.&lt;/p&gt;
&lt;h3&gt;UIViewController - UIViewController Relationship&lt;/h3&gt;
&lt;p&gt;Understanding this relationship and the lifecycle of the view controller is important if we embed one view controller into another. Because we might need to manually call some lifecycle methods to inform the system about the state, let’s have an example for adding and removing child view controllers.&lt;/p&gt;
&lt;h4&gt;Adding a ViewController as a child to Another ViewController&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;let childViewController = UIViewController()
let parentViewController = UIViewController()
parentViewController.addChild(childViewController)
parentViewController.view.addSubview(childViewController.view)


// Time to setup auto-layout constraints for childViewController.view
// Example:
//   NSLayoutConstraint.activate([
//       childViewController.view.topAnchor.constraint(equalTo: parentViewController.view.topAnchor)
//   ])


childViewController.didMove(toParent: parentViewController)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let’s examine what we are doing about the lifecycle. After creating view controllers, we add the child to the parent. This addition automatically calls &lt;code&gt;childViewController.willMove(toParent: parentViewController)&lt;/code&gt; for us. So, we don’t need to call it manually. Then, we need to add the child view controller’s view to the parent’s view to have a child-parent relationship for views. The system will load both views and will add one to another with our call &lt;code&gt;addSubview&lt;/code&gt;. Then we inform the system by calling &lt;code&gt;didMove(toParent:)&lt;/code&gt;. The system will handle the rest of displaying the view controller and calling the view controller’s necessary methods in its lifecycle like &lt;code&gt;viewDidLoad&lt;/code&gt;, &lt;code&gt;viewDidAppear&lt;/code&gt;, etc.&lt;/p&gt;
&lt;h4&gt;Removing the Child ViewController from the Parent ViewController&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;childViewController.willMove(toParent: nil)
childViewController.view.removeFromSuperview()
childViewController.removeFromParent()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While removing the child view controller from the parent, we have to call &lt;code&gt;willMove(toParent:)&lt;/code&gt; method with &lt;code&gt;nil&lt;/code&gt; to inform the system that the child view controller will be removed from the parent. Then, we remove its view and later itself from the parent. As we see, we don’t need to call &lt;code&gt;didMove(toParent:)&lt;/code&gt; method while we’re removing it. &lt;code&gt;removeFromParent&lt;/code&gt; method automatically calls that method for us.&lt;/p&gt;
&lt;p&gt;Additionally, we can override both &lt;code&gt;willMove(toParent:)&lt;/code&gt; and &lt;code&gt;didMove(toParent:)&lt;/code&gt;. If we need to know in a view controller that it’s been added as a child to another view controller, we can override these methods and implement our custom actions.&lt;/p&gt;
&lt;p&gt;Parent and child view controller relationships are common. It’s important to understand the lifecycle of both view controllers in order to call the necessary method at a certain point. If we forget to call one method, we might lead to some memory problems inside the app. Now, we came to the last point - the relationship between view and its subviews and lifecycle methods.&lt;/p&gt;
&lt;h3&gt;View - View (Subviews) Relationship&lt;/h3&gt;
&lt;p&gt;In this relationship, most of the lifecycle is handled automatically by the system and no need for calling some methods like parent and child view controllers relationship. For example, even if we try to call &lt;code&gt;willRemoveSubview&lt;/code&gt; method, it does nothing. The default implementation is empty. The system calls the below functions only to inform us when something is changed. There are not so many things to talk about. Learning that we can detect when the subview is added, the view is added as a subview or moved to the window opens up opportunities for implementing extra actions during those phases.&lt;/p&gt;
&lt;p&gt;Here are the mentioned lifecycle methods for &lt;code&gt;UIView&lt;/code&gt;:&lt;/p&gt;
&lt;h4&gt;didAddSubview(_:)&lt;/h4&gt;
&lt;h4&gt;willRemoveSubview(_:)&lt;/h4&gt;
&lt;h4&gt;willMove(toSuperView:)&lt;/h4&gt;
&lt;h4&gt;didMoveToSuperview()&lt;/h4&gt;
&lt;h4&gt;willMove(toWindow:)&lt;/h4&gt;
&lt;h4&gt;didMoveToWindow()&lt;/h4&gt;
&lt;p&gt;The only important thing to know here is &lt;code&gt;removeFromSuperview&lt;/code&gt; method. We can call this if we want to remove the view from its parent. Calling this method removes all constraints in the view and in its subtrees. We shouldn’t call this method inside the view’s &lt;code&gt;draw(_:)&lt;/code&gt; method.&lt;/p&gt;
&lt;h2&gt;Last Words&lt;/h2&gt;
&lt;p&gt;Only knowing one of the &lt;a href=&quot;/ios-application-lifecycle/&quot;&gt;application&lt;/a&gt;, view controller, and view lifecycles are not enough to understand the whole picture and develop a great overview of iOS applications. Grasping the use of lifecycle methods is important to take appropriate actions in certain places, especially working with custom implementations of UIKit classes. Now we know the lifecycles, we can truly understand what is going on behind the scenes in the system and intervene when necessary.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Further reading:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/@amyjoscelyn/the-life-cycle-of-a-view-c98f296fd84e&quot;&gt;The Lifecycle of a View&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/documentation/uikit/uiviewcontroller&quot;&gt;UIViewController Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html&quot;&gt;Implementing a Container View Controller&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/view-lifecycle-in-ios/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/view-lifecycle-in-ios/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>iOS Application Lifecycle</title><link>https://candost.blog/ios-application-lifecycle/</link><guid isPermaLink="true">https://candost.blog/ios-application-lifecycle/</guid><description>Every iOS developer needs to understand the possible states and lifecycle of an iOS application. Knowing when the state enables us to work behind the scenes.</description><pubDate>Sun, 11 Nov 2018 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Why do we need to know&lt;/h2&gt;
&lt;p&gt;Firstly, we should respond properly to the launch of the app. Some third-party libraries need set up in different states of the app. Also, we should prepare the app to work in the foreground. We might need to provide a different user experience. For instance, our app can require a password whenever it goes to the foreground. On the other hand, our app can upload images while the app is in the background, like Dropbox does. Even we might want to reopen from where the user left after the termination of the app. So, each feature requires different implementations in different app states. So, it can be critical to know the states and the transitions while providing a different and better user experience.&lt;/p&gt;
&lt;h2&gt;What do we need to know?&lt;/h2&gt;
&lt;p&gt;Here is a brief explanation of the states:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Not Running&lt;/strong&gt;&lt;/em&gt;: The app is not launched or terminated by the system.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/em&gt;: The app is in the background and still able to run code. But the duration of this state is determined by the OS, and code execution can be interrupted at any time. If the developer requests extra time to execute some code, the period can be longer. There are some situations in which the app can be launched directly into the background mode. For example, the app can start in background mode if the app starts downloading some content when the remote push notification is received.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Inactive&lt;/strong&gt;&lt;/em&gt;: It’s generally a transition state between active and background state to the launch of the app. For example, if we receive a phone call when the app is in the foreground, it goes into an inactive state.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Active&lt;/strong&gt;&lt;/em&gt;: The app is in the active state when it is in the foreground, and it’s able to receive events.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Suspended&lt;/strong&gt;&lt;/em&gt;: When the app is in the background state, the system suspends it and the app cannot execute any code. There isn’t any notification for the suspending event. The system automatically suspends the app.&lt;/p&gt;
&lt;h2&gt;How do we know when a state transition is happening&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;UIApplication&lt;/code&gt; is an object that represents our application. It sets up everything and starts the app running. &lt;code&gt;UIApplication&lt;/code&gt; object notifies us through &lt;code&gt;UIApplicationDelegate&lt;/code&gt;. While&lt;code&gt;UIApplication&lt;/code&gt; object is controlling the communication between the system and objects of the app and managing the event loop, we write our custom code in &lt;code&gt;UIApplicationDelegate&lt;/code&gt; object to deal with the launch of the app and transitions between states and many more things.&lt;/p&gt;
&lt;p&gt;So, let’s take a look at which methods are called in &lt;code&gt;UIApplicationDelegate&lt;/code&gt; and when we need to add code to each of them.&lt;/p&gt;
&lt;h3&gt;application(_ application:willFinishLaunchingWithOptions:)&lt;/h3&gt;
&lt;p&gt;When &lt;code&gt;willFinishLaunchingWithOptions&lt;/code&gt; called, we know that our app’s launch process has been started, main storyboard or nib file has been loaded but the app is still in an inactive state. If our app is launched for a specific reason, like a remote push notification or home screen shortcut, this information will be inside the &lt;code&gt;options&lt;/code&gt;. The important thing to know here is that the system might call for other &lt;code&gt;UIApplicationDelegate&lt;/code&gt; methods in these cases. For instance, if the app is called to open a URL, the system calls &lt;code&gt;application(_:open:options:)&lt;/code&gt; method. &lt;code&gt;options&lt;/code&gt; provide necessary information for us to react to these events properly. The other great example is the Twitter feed. We can see that whenever we terminate the Twitter iOS app and open it again, it resumes from where we left off. It doesn’t scroll to the top all the time. If we want to implement the same &lt;a href=&quot;https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforImplementingYourApp/StrategiesforImplementingYourApp.html#//apple_ref/doc/uid/TP40007072-CH5-SW2&quot;&gt;state-restoring feature&lt;/a&gt;, one of the required steps is to call the &lt;code&gt;makeKeyAndVisible()&lt;/code&gt; method of &lt;code&gt;UIWindow&lt;/code&gt; in &lt;code&gt;willFinishLaunchingWithOptions&lt;/code&gt; instead of calling it in &lt;code&gt;application(_ application:didFinishLaunchingWithOptions:)&lt;/code&gt; method. &lt;code&gt;makeKeyAndVisible&lt;/code&gt; method’s job is showing the window. But still when we call it, it will not make the window visible instantly. UIKit waits for &lt;code&gt;application(_ application:didFinishLaunchingWithOptions:)&lt;/code&gt; to finish first.&lt;/p&gt;
&lt;h3&gt;application(_ application:didFinishLaunchingWithOptions:)&lt;/h3&gt;
&lt;p&gt;This method is called when the launch process is almost done, and the app is almost ready. So, we have space to do some final tweaks in the launch process. The difference with the previous one is, this time the state is changed, either foreground or background. But the app’s window or any UI is not presented yet.&lt;/p&gt;
&lt;p&gt;When the app is launched via a URL, the system uses return values from these two methods and combines them to decide if the URL should be handled or not. If both of them returns &lt;code&gt;false&lt;/code&gt;, the URL won’t be handled.&lt;/p&gt;
&lt;h3&gt;applicationDidBecomeActive(_ application:)&lt;/h3&gt;
&lt;p&gt;This method is called when the app is transitioned from inactive state to active state. What is important here is the app also posts a &lt;code&gt;didBecomeActiveNotification&lt;/code&gt; to notify listeners. For instance, if we have a timer running to measure how much the user spent on a screen, we might restart the timer when this notification is posted. Also, we can resume any other tasks which are paused when the app becomes inactive. (For example, when a phone call comes)&lt;/p&gt;
&lt;h3&gt;applicationWillResignActive(_ application:)&lt;/h3&gt;
&lt;p&gt;This method is called when the app is about to transition from the active to inactive state. So, similar to the previous method, we might need to pause any task or timers. For example, if we’re developing a game, we should pause the game when this method is called. In addition, the app will post &lt;code&gt;willResignActiveNotification&lt;/code&gt; to inform listeners.&lt;/p&gt;
&lt;h3&gt;applicationDidEnterBackground(_ application:)&lt;/h3&gt;
&lt;p&gt;This is one of the important methods if we want to execute some code in the background. &lt;a href=&quot;https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622997-applicationdidenterbackground#discussion&quot;&gt;Apple says&lt;/a&gt; that we have approximately five seconds to complete this method. After that, the app will be terminated and purged from the memory. If we need additional time to execute background code, we need to call &lt;code&gt;beginBackgroundTask(expirationHandler:)&lt;/code&gt;. The crucial thing here is before this method exits, we need to finish up UI adjustments. For instance, the system takes a picture of the app when &lt;code&gt;applicationDidEnterBackground&lt;/code&gt; returned. So, if we have sensitive data on the screen, we need to hide or modify those views before the method returns. So, if our app is both trying to execute background code and update the UI, we should call &lt;code&gt;beginBackgroundTask(expirationHandler:)&lt;/code&gt; first to request more time and then run these tasks on a dispatch queue or another thread. Thus, our app both make the UI adjustments and run background task. Last but not least, the app also posts a &lt;code&gt;didEnterBackgroundNotification&lt;/code&gt; almost at the same time to inform listeners.&lt;/p&gt;
&lt;h3&gt;applicationWillEnterForeground(_ application:)&lt;/h3&gt;
&lt;p&gt;This method is called when the app is about to enter the foreground. This method is always followed by the &lt;code&gt;applicationDidBecomeActive(_ application)&lt;/code&gt; method.&lt;/p&gt;
&lt;h3&gt;applicationWillTerminate(_ application:)&lt;/h3&gt;
&lt;p&gt;This method is called when the app is about to be terminated. We have approximately five seconds to perform any task and return. After five seconds, the system might kill the whole process. The essential thing to know here is that when the user quits the app, this method is generally not called. If the app is running a background task and the system wants to terminate the app, this method may be called. As we see, there is no certainty in this method, sadly. Therefore, we shouldn’t perform any critical task in here, like saving user data.&lt;/p&gt;
&lt;p&gt;There is one more thing to mention about the app launch. When the app is launched, we need to prepare the UI as quickly as possible. We’ll talk about the threads and concurrency later. But one thing to know is every UI operation runs on the main thread. While implementing the above-mentioned methods, we need to run non-UI code asynchronously. So, we won’t block the main thread.&lt;/p&gt;
&lt;h2&gt;Last Words&lt;/h2&gt;
&lt;p&gt;We took a look at the fundamentals and essentials of the app lifecycle. I hope it gives a brief understanding of the application lifecycle and state transitions. We might need to adapt our apps to state transitions to provide a better user experience. Understanding the fundamentals of the states and transitions enables us to develop more robust apps.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Further:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/view-lifecycle-in-ios/&quot;&gt;View Lifecycle in iOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/concurrency-in-ios/&quot;&gt;Concurrency in iOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://qph.fs.quoracdn.net/main-qimg-473264d5d9f0ec16d57b8dffcc9824d8&quot;&gt;Graphical Representation of State Transitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH4-SW1&quot;&gt;Background Execution Programming Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/library/archive/documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008091&quot;&gt;Concurrency Programming Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/ios-application-lifecycle/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/ios-application-lifecycle/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Simple Linear Regression in Machine Learning</title><link>https://candost.blog/simple-linear-regression/</link><guid isPermaLink="true">https://candost.blog/simple-linear-regression/</guid><description>Linear Regression is a basic statistical method that applies a linear function to data and predicts a scalar value. But why do we use it?</description><pubDate>Sat, 06 Oct 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;/machine-learning-introduction/&quot;&gt;In the first post&lt;/a&gt;, we took a look at the types of machine learning (ML) algorithms. The first one was supervised learning. When we think of the word, &lt;em&gt;supervise&lt;/em&gt;, we guess that we’ll use data that is identified and separated properly (we know what result we get when we give specific input) to create a model. Some examples of supervised learning can be house prediction problems, understanding a handwritten text, and spam mail detection. There are various algorithms in supervised learning. But as the first thing in supervised learning, we’ll start with Linear Regression.&lt;/p&gt;
&lt;p&gt;Linear Regression (LR) is a basic statistical method that applies a linear function to data and predicts a &lt;em&gt;&lt;strong&gt;scalar&lt;/strong&gt;&lt;/em&gt; value. A commonly used example of this method is predicting house prices.&lt;/p&gt;
&lt;h3&gt;Why do we use Linear Regression?&lt;/h3&gt;
&lt;p&gt;First, we want to predict in a better way by looking at the data and approaching it in a statistical way. Second, when there is a change in our feature, we want to know what the outcome will be. Lastly, to summarize the data. Instead of dealing with all the data, we want to create a linear function to define a correlation between feature and output.&lt;/p&gt;
&lt;p&gt;As a simple example of a linear function, we’ll use the following equation:&lt;/p&gt;
&lt;p&gt;(y = w * x + b)&lt;/p&gt;
&lt;p&gt;Let’s split this equation into parts and check them one by one. &lt;em&gt;w&lt;/em&gt; is called a weight/parameter. &lt;em&gt;x&lt;/em&gt; is the input/feature, and &lt;em&gt;b&lt;/em&gt; is the bias.&lt;/p&gt;
&lt;h3&gt;Parameters&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Parameters&lt;/strong&gt;&lt;/em&gt; are the values that control the behavior of the system. In machine learning, they are mostly called weights because the value of the parameters affects the system. So, an increase in the specific part of the weight vector increases the effect of that part on the prediction. And also, a decrease in a specific part of the weight vector decreases the effect of that part on the prediction. When the amount of the weight value is huge, it has a greater effect on the prediction. If it’s zero, there is no effect.&lt;/p&gt;
&lt;h3&gt;Inputs/Features&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Inputs&lt;/strong&gt;&lt;/em&gt; or generally called &lt;em&gt;&lt;strong&gt;features&lt;/strong&gt;&lt;/em&gt; in ML, are the values represented by &lt;em&gt;x&lt;/em&gt; in our equation. Features are the direct affecting values in our function. For example, if we would like to predict house prices, our features can be the number of rooms, size of the house, and age. We’ll predict the price of a house by looking into those features with help from our parameters.&lt;/p&gt;
&lt;h3&gt;Bias&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Bias&lt;/strong&gt;&lt;/em&gt; is generally included in the definition of parameters. This is another value we would like to estimate. We can think of this value as the representation of our estimates when all features are equal to zero. In ML, we would like to learn weights and bias so-called parameters of our model (for now, linear regression function).&lt;/p&gt;
&lt;p&gt;There are two types of Linear Regression, simple (univariate) and multiple (multivariate). We’ll define the general rules and strategy of linear regression, mainly under linear regression, for simplicity now. Then, we’ll focus on the multiple linear regression based on the learnings in here. In simple linear regression, we have only one feature. We can think the price of the house is only dependent on the size of the house. So, we only care about one feature. This is why it’s called simple.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/simple-linear-regression.png&quot; alt=&quot;Data Set&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The red dots in the graph above represents our data set. Let’s guess some parameters and biases and draw our linear line into our data set like above. This seems like a pretty good guess when you think about the whole data. But we will have errors shown with gray vertical lines in the graph. Those errors are our cost of not being able to fit all the data. So, every approach will come with a cost, and we’ll measure our prediction’s performance according to the cost.&lt;/p&gt;
&lt;h2&gt;Cost/Error Function (measuring the performance)&lt;/h2&gt;
&lt;p&gt;As we said, we are using the cost function to measure the performance of the model. But how do we calculate the error in general? As stated in the graph as gray vertical lines, the difference between the actual value and the predicted value gives the error. By calculating the error, we can measure the accuracy of our prediction function. After finding the error, our main idea will change, and we’ll try to choose the parameter (w) and bias (b) values so that our cost will be minimum. Calculating the error comes from the simple mathematical approach; of calculating the distance between two points. Therefore, we’ll use mean squared error.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$$L(\hat{y}-y) = \frac{1}{m}\sum (\hat{y}-y)^2_i=\frac{1}{m}\left \| \hat{y}-y \right \|^2_2$$
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can see in the formula that we subtract the actual value from the predicted value. And we take squares to get rid of negativity. Lastly, we take the average of our error in the whole of our data set. So, this measures the error. When the y^ and &lt;em&gt;y&lt;/em&gt; are equal, the error will be 0. When the Euclidian distance between the predicted value and the actual value increases, the error increases as well.&lt;/p&gt;
&lt;h3&gt;Last Words&lt;/h3&gt;
&lt;p&gt;Now, we have our model (or hypothesis), and we have a way of measuring how well it fits into the data. Next, we need to estimate parameters &lt;em&gt;w&lt;/em&gt; and &lt;em&gt;b&lt;/em&gt; to decrease the cost. Machine learning and deep learning are based on minimizing the cost with different approaches. We hear the terms curve fitting and global minimum in the curve many times. It comes from the error function. As we saw above, the error function takes squares to get rid of negativity. So, if we try to draw the graph of the error function, it will be in a curve shape (in a simple linear regression case, parabolic). Finding the minimum point of a curve is the main idea.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Further:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/linear-regression-python-implementation/&quot;&gt;Linear Regression Python Implementation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Linear_regression&quot;&gt;Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/simple-linear-regression/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/simple-linear-regression/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Importance of Feedback</title><link>https://candost.blog/importance-of-the-feedback/</link><guid isPermaLink="true">https://candost.blog/importance-of-the-feedback/</guid><description>Feedback is defined as a reaction after a behavior or statement. But what does it really mean for us?</description><pubDate>Fri, 24 Aug 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Feedback is defined as a reaction after a behavior or statement. It’s mostly confused with criticism. Criticism is defined as the analysis and judgment of the merits and faults. It is easily recognizable that criticism is based on analysis, and feedback is based on reaction. Although both feedback and criticism have positive and negative examples, it would be wrong to put them in the same position.&lt;/p&gt;
&lt;p&gt;There might be different reasons for the public to be open to criticism or not. For example, Turkish society (in general) is not really comfortable with criticism. But when the feedback is taken on the personal level correctly, I believe we can break the prejudice for criticism also. Because feedback is actually based on being criticized. Receiving feedback for the behavior, statement or work not only improves the personality but also helps society to take a step further and be open-minded. Actually, feedback mechanisms are widely used in different fields, and they have become a part of us.&lt;/p&gt;
&lt;p&gt;Feedback often occupies the agenda in both work and school. We get feedback from the grades and talks with the professors in school and, similarly, by salary and performance review meetings at work. Until we find another good way to improve ourselves, feedback is one of the &lt;strong&gt;most important&lt;/strong&gt; and &lt;strong&gt;effective&lt;/strong&gt; things to improve our performance.&lt;/p&gt;
&lt;p&gt;Conversely, in online life, we tend to share our best moments with everyone. While this is totally natural and (most of the time) directs us to a somewhat happy life, we constantly lack feedback on social occasions. Do we prefer to have some feedback cycle with our friends or just avoid the bad things and focus on the good stuff? The latter is preferred. While explaining personal emotions (even the good ones), our brain does a lot of work. Language and emotional parts of the brain are different. Therefore, talking about emotions is really hard. Even sometimes, we find ourselves in a situation in which we cannot explain how we feel at the moment. So, while having these difficulties, how can we explain to others the feelings which we have for them? Here is how I try to give feedback to my friends and try to receive some of them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Feedback is based on trust. Build trust!&lt;/li&gt;
&lt;li&gt;Be open. Acknowledge the feedbacks are for your good!&lt;/li&gt;
&lt;li&gt;Be nice and kind all the time.&lt;/li&gt;
&lt;li&gt;Be available. Always reserve a spot for feedback on the busy (or empty) schedule.&lt;/li&gt;
&lt;li&gt;Try to understand what causes the real problem to work on it.&lt;/li&gt;
&lt;li&gt;Repeat the understanding of the condition to confirm you are on the same page.&lt;/li&gt;
&lt;li&gt;Always be grateful for the feedback.&lt;/li&gt;
&lt;li&gt;Schedule a follow-up event about the process.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This process might look cumbersome. But most of the parts happen without notice. For instance, if you try to be nice and open, you will understand the grounds of the problem easily. Also, you can eliminate the last point, but I highly suggest not. Because there is no way to follow the progress of how you’re doing.&lt;/p&gt;
&lt;p&gt;If we cannot build trust and be nice, it’s easy to seem like a person who is not confident. This leads to more personal problems, especially for introverts. It’s already hard for introverted people to build trust. Hence, it’s inevitable to get into a cycle of being diffident and not getting any feedback. So, even though it seems hard to build trust, it’s actually easier when everyone is on the same page at work (and wants to get something done) and at school (fully learning something new).&lt;/p&gt;
&lt;p&gt;Obviously, our face-to-face relationships are getting weaker every day. Hence, long relationships are getting harder. People tend to meet first online and become really good friends or a couple. But when they meet face-to-face, they might not feel comfortable enough like they used to while talking online. While direct conversation is hard, how can we talk about feedback? Sometimes, we don’t need to &lt;strong&gt;directly&lt;/strong&gt; say the feedback.&lt;/p&gt;
&lt;p&gt;Understanding feedback from feelings is a tough topic. My flatmate and I had one simple rule, “Whenever you feel uncomfortable about something, say it.” This saved us from keeping the bad feelings inside and letting them grow. Now, he is one of my best friends, and feedbacks are still a constant part of our friendship.&lt;/p&gt;
&lt;p&gt;Besides relationships, most of the time, there is no feedback while learning something online. If you’re following online course materials, you will seek to get some more detailed information about how you’re doing. It is really hard to find a teacher/mentor to examine your progress while learning online. I spent months following courses on &lt;a href=&quot;http://www.coursera.org/&quot;&gt;Coursera&lt;/a&gt;, and missing feedback was my constant feeling. Even if they have a good grading system and discussion forums where I can ask questions, it’s really hard to see how my progress was. I didn’t feel that I had learned all the aspects of the topics. I know that those courses are just the beginning, but I lost my belief in online courses in general. Besides the title and related advantages, getting a bachelor, master, or Ph.D. degree means having constant feedback. Otherwise, almost all course materials are &lt;a href=&quot;http://www.openculture.com/freeonlinecourses&quot;&gt;available online&lt;/a&gt;. Even though everyone can watch the same lectures with master students, you have to work harder to be on the same level when there is a lack of feedback.&lt;/p&gt;
&lt;p&gt;After all, I must admit that giving feedback is as hard as receiving feedback. People often feel shame or act shy. Even if they are not, saying negative things about someone else is troublesome. But I believe we can break this by building trust and being open and nice. These can lead us to have a better life and understand the real problems. Therefore, we can easily start working on them. &lt;strong&gt;When we make mistakes and don’t learn from them, so, what are those mistakes for?&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/importance-of-the-feedback/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/importance-of-the-feedback/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Firebase Predictions</title><link>https://candost.blog/firebase-predictions/</link><guid isPermaLink="true">https://candost.blog/firebase-predictions/</guid><description>Google announced Firebase Predictions in Firebase Dev Summit in Amsterdam this year.</description><pubDate>Sun, 10 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Google announced Firebase Predictions in Firebase Dev Summit in Amsterdam this year. This is maybe the most important announcement of the summit. It enables businesses to predict user behavior depending on previously collected data. This way, we can guess what users might do next and offer discounts, and promote features to keep them engaged. Until Firebase Predictions, we had to do this job by exporting our user’s behavior-tracking data and applying some machine-learning techniques to predict what users may do in the future. By releasing this tool into the Firebase ecosystem, Google takes over this responsibility and gets all data we have from Google Analytics for Firebase. It trains the data and predicts the future motion of the user depending on the defined goals. OK, sounds great! But…&lt;/p&gt;
&lt;h2&gt;How much data does it use?&lt;/h2&gt;
&lt;p&gt;It uses Google Analytics for Firebase as a data source and takes the last 100 days of user activity. It trains and evaluates/holds out the data and generates predictions for the next 7 days. Also, it calculates the accuracy of predicted values for the last 14 days.&lt;/p&gt;
&lt;h2&gt;How useful is it for product owners/project managers?&lt;/h2&gt;
&lt;p&gt;Looking at user analytics data helps to track how the project is going. Defining KPIs and following them is the most important part of the project. Because KPIs enable people to see if a project achieves key business objectives. On the other side, machine learning algorithms are widely used to predict user interactions and improve business goals. Firebase Predictions are likely to help to achieve these goals without spending a lot of resources. It has predictions for churn and spending by default. For instance, if your project uses a freemium model, you can predict which users are likely not to spend money. So, you can improve your conversion rate by focusing on these users by offering them some discounts or extra advantages.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/8e7bad6a-2a73-4bd6-ab8f-60eb22abf849_1920x1080.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Offer extra lives to your unhappy users to increase engagement. (Source: Firebase)&lt;/p&gt;
&lt;p&gt;On the engagement side, Firebase Predictions’ &lt;a href=&quot;https://www.wikiwand.com/en/Churn_rate&quot;&gt;churn value&lt;/a&gt; can help to see which users are likely to stop using the app. For example, in mobile applications, push notifications are widely used as a reminder to users about some content inside the app. This serves well in a lot of cases. Just imagine, if we knew the users who are likely to delete the app before they delete, what can we do to keep them inside? Instead of random guesses with push notifications, we can get benefit by understanding the user behavior and taking actions according to solid predictions.&lt;/p&gt;
&lt;h2&gt;Which services can we integrate with Firebase Predictions?&lt;/h2&gt;
&lt;p&gt;Firebase gives the capability to combine its tools like &lt;a href=&quot;https://firebase.google.com/docs/remote-config/&quot;&gt;Remote Config&lt;/a&gt; with Predictions. Remote Config is another Firebase service that lets us change the behavior and appearance without forcing the user to update the app. A combination of Predictions with Remote Config is an awesome start. This means we can change the app according to user behavior predictions while on live. Another use case is integrating Predictions with &lt;a href=&quot;https://firebase.google.com/docs/cloud-messaging/&quot;&gt;Firebase Cloud Messaging&lt;/a&gt;. Cloud Messaging is a tool allowing app owners to send push notifications to their users. The last thing is A/B testing. Firebase announced the A/B testing tool on the same day. Using predictions and A/B testing together is something that everyone should absolutely try.&lt;/p&gt;
&lt;h2&gt;How to start using Firebase Predictions?&lt;/h2&gt;
&lt;p&gt;First, Firebase Predictions uses Analytics events that correlate to predictions. It means that you have to use Firebase Analytics as an event tracker. If you’re already using Analytics, you need to enable &lt;a href=&quot;https://support.google.com/firebase/answer/6383877#manage&quot;&gt;Analytics Data Sharing&lt;/a&gt;. Then you’ll be able to enable Predictions for the project.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/33f7969e-abdd-4f77-9792-10b7f865da88_1578x638.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;After enabling, you’ll see the default predictions and an explanation of the preparation process. It says that it can take 24 hours, but also it can take more time, according to your data.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/3c476ce8-8ce2-4bda-8241-247bef8ab692_1327x898.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At the end of the table, you’ll see the + button for creating custom predictions based on analytics events. When you want to create a custom prediction, you just need to name it and connect the event in the opening popup.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/7660d2b8-5620-4718-ae49-c54241265a5b_583x519.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You have created a new Firebase Prediction. But there is one more thing that you should know, risk tolerance level.&lt;/p&gt;
&lt;h2&gt;What is the risk tolerance level?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;When predicting user behavior, there is always a degree of uncertainty that requires a trade-off: you must decide whether to include fewer users in a predicted group for higher overall accuracy or to include more users for lower overall accuracy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/b8c98d0d-809b-40d3-b39d-838d2412e3b3_650x884.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Targeting users based on risk tolerance level&lt;/h2&gt;
&lt;p&gt;By defining tolerance level, you tell Firebase Predictions how tolerant you’re about uncertainty. If you increase your tolerance level, you’ll be saying that you’re willing to take the risk about predictions. For instance, if you’re going to offer some free content for users, you may want to be more precise about predictions and choose a low level of tolerance. Otherwise, you can lose money for nothing. But if you’re planning to offer some small discounts, you might have some tolerance but not too much.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/b1dbb5bd-e232-495d-9cb2-b0f37b71ff22_768x449.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When the risk tolerance level increases, the accuracy of predictions will decrease. Firebase has 3 risk tolerance levels: high, medium, and low. High-risk tolerance level targets more users with the lowest level of accuracy. Low tolerance level targets fewer users with the highest level of accuracy available. The middle level is somewhere in between the two of them, targeting a moderate level of users with a moderate level of accuracy. You need to choose risk tolerance levels for each prediction. Our next step will be dependent on the use case and decision. We will take a look at the integration of Predictions with other tools. Let’s dive in one by one.&lt;/p&gt;
&lt;h2&gt;Remote Config with Firebase Predictions&lt;/h2&gt;
&lt;p&gt;The usage of Remote Config inside the apps really affects how to use Firebase Predictions. If you’re already using Remote Config, you can adjust your values according to the predictions. If you’re not using Remote Config, please check &lt;a href=&quot;https://firebase.google.com/docs/remote-config/&quot;&gt;the documentation&lt;/a&gt; first for the setup. In remote config, we have to add a new condition or edit current ones to use prediction. When we add a new condition, we need to add the ‘App’ as the first application condition for the value. This app has to be the one with enabled Firebase Predictions. Secondly, we need to click “AND,” and choose a prediction value from the dropdown list and select the risk tolerance group; then, pressing the ‘Create Condition’ button will create the condition for us. Now, we can start using this condition in our Remote Config values.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/27ca433d-5084-49e1-b63b-b26a26d8d3a7_1384x696.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One of the examples of predicted remote config values is using them in the games. When we want to sell packages and adjust their content according to user willingness to pay, we can increase our revenue. Another example can be changing the appearance of share buttons inside our apps. If users are not likely to share the content in the app, we can prepare a good UI to convince them to share.&lt;/p&gt;
&lt;h2&gt;A/B Testing with Firebase Predictions&lt;/h2&gt;
&lt;p&gt;These two new features are perfect for each other. A combination of them opens a lot of doors for every business. Creating a new A/B test experiment is easy. First, go to the Remote Config section in the Firebase Console. You’ll see the A/B Testing button in the upper right corner. When you click it, you’ll see three sections Running, Draft, and Completed. Click Create Experiment button. It’ll start the creating experiment process. Name the experiment and choose your Firebase Predictions enabled app like in Remote Config. After this, you’ll be able to see prediction values. You can choose one of them and continue the process. I won’t get into more details about all the A/B testing processes in Firebase. Because it’s another blog post subject on its own.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/65808e33-830f-4775-a732-6af28afbac6f_1384x1156.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here is an example from the presentation about Firebase Predictions combined with A/B testing.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/db6cba70-852a-4799-bb91-612504d765e1_2000x1095.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In this test, they choose High-Risk Tolerance for &lt;strong&gt;spend&lt;/strong&gt; prediction. So, when targeted users are likely to spend money, they change the appearance of the application by introducing different paid packages.&lt;/p&gt;
&lt;h2&gt;Notifications with Firebase Predictions&lt;/h2&gt;
&lt;p&gt;Lastly, we can integrate Firebase Cloud Messaging with Firebase Predictions. If you’re not using Firebase Cloud Messaging, you can take a look at &lt;a href=&quot;https://firebase.google.com/docs/cloud-messaging/&quot;&gt;the documentation&lt;/a&gt;. When you enter Notifications in Firebase Console, you can click on the New Message button. In the opening screen, enter your analytics event name in the “Message label” section. Choose “User segment” from the Target section and do the same as we did for A/B testing. Then, choose the app in which you enabled Firebase Predictions in the target conditions. And add another condition for prediction. Choose the prediction value and risk tolerance level in there.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/notifications-with-firebase-predictions.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can adjust other settings of notifications in the console. One thing to mention here, as we’re not able to send push notifications for user segments via Firebase SDKs, this feature is only available in Firebase Console.&lt;/p&gt;
&lt;h2&gt;Final Words&lt;/h2&gt;
&lt;p&gt;Machine learning algorithms have been in use for decades, but interest is drastically increased in the last years. The hard part of applying machine learning algorithms to businesses arises from the complexity and collecting data. Even if every business collects data from users, they are not able to use machine learning algorithms to predict the future actions of their users. The introduction of Firebase Predictions seems like a solution to this problem. Google Analytics is already a leader in the analytics world, and Google Analytics for Firebase is becoming a standard in the mobile world. Google takes a big step to help all businesses by applying machine learning algorithms on big chunks of precious analytics data. We’ll see together how it’s going to achieve its goal.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/firebase-predictions/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/firebase-predictions/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>iOS Developer Productivity Kit</title><link>https://candost.blog/ios-developer-productivity-kit/</link><guid isPermaLink="true">https://candost.blog/ios-developer-productivity-kit/</guid><description>We use some tools and also some do customizations on them to increase our productivity. Every tech stack has different needs, thus, a different set of tools.</description><pubDate>Sun, 10 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We use some tools, and also some do customizations on them to increase our productivity. Every tech stack has different needs, therefore, a different set of tools. iOS, macOS, watchOS, and tvOS developers are stuck in Xcode. Hence, we need to improve our productivity by customizing Xcode and using some external tools. This post is mostly about Xcode, and I’ll mention some other tools that I’ve been using for some time and am happy with them.&lt;/p&gt;
&lt;p&gt;Let’s start with Xcode.&lt;/p&gt;
&lt;h2&gt;Xcode&lt;/h2&gt;
&lt;h3&gt;Default Xcode Shortcuts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;When the project grows, searching time for the file that we’re currently coding in &lt;em&gt;Project Navigator&lt;/em&gt; increases. The day I learned the ⌘⇧J shortcut to jump to the current file in navigation, I had a smile on my face.&lt;/li&gt;
&lt;li&gt;Who doesn’t love to work with &lt;em&gt;Assistant Editor&lt;/em&gt; in Xcode? Some of us feel disturbed when we reach for the mouse while coding. So, moving the focus between Assistant and Main Editors as well as tabs has a shortcut ⌘J. It shows you a window where you can choose the focused editor by arrows. But there is one more shortcut which I find more useful is ⌃`. This allows you to move your focus directly to the text editor.&lt;/li&gt;
&lt;li&gt;Sometimes I found myself copying and pasting a block of code a couple of lines up and down. Recently, I learned there are two shortcuts that most developers don’t use (at least, I didn’t see anyone using them lately). For moving the line up ⌥⌘[ and moving the line down ⌥⌘]&lt;/li&gt;
&lt;li&gt;Everyone knows ⌘⇧O to open the file search bar in Xcode. If you’re working with Objective-C and Swift in the same project, you can search in Swift Generated Headers in this search. When the search bar is open, press⌘G to enable Swift-generated headers. It’ll generate headers in Swift for Objective-C files.&lt;/li&gt;
&lt;li&gt;Let’s take a look at these shortcuts for opening/closing parts in Xcode 12.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/ios-dev-productivity-kit/Pasted%20image%2020230722214113.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;During debugging, when we stop the running code with a breakpoint, we can use ⌘⌃Y to &lt;em&gt;Step Over&lt;/em&gt; as well as ⌘Y to enable/disable all breakpoints.&lt;/p&gt;
&lt;h3&gt;Customized Shortcuts&lt;/h3&gt;
&lt;p&gt;Let’s focus on creating our own shortcuts. Most of us even don’t know that we can customize shortcuts in Xcode. Refactoring code is easier than ever with Xcode 9. And I’m not only talking about a new renaming feature. I’m talking about the Refactor menu.&lt;/p&gt;
&lt;h4&gt;How?&lt;/h4&gt;
&lt;p&gt;First, open &lt;em&gt;Properties&lt;/em&gt; -like most macOS apps- using ⌘. Switch to the &lt;em&gt;Key Bindings&lt;/em&gt; section for navigation. Choose &lt;em&gt;All&lt;/em&gt; Submenu. Now, you can see all shortcuts in there.&lt;/p&gt;
&lt;h4&gt;Customize&lt;/h4&gt;
&lt;p&gt;Below you can see all the customized shortcuts that I’ve been using for some time. Some of them conflict with Xcode default shortcuts, and I decided to remove the default ones because I never use them. You’ll also see some empty ones. Those are the ones I’m not using, conflicting or pressing by mistake all the time, like &lt;em&gt;Print&lt;/em&gt; in the beginning.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/ios-dev-productivity-kit/Pasted%20image%2020230722214132.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You probably noticed that I changed the &lt;em&gt;Rename&lt;/em&gt; shortcut to use the same key combinations with other refactor methods.&lt;/p&gt;
&lt;p&gt;In Xcode 12, here are the default Refactor shortcuts:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/ios-dev-productivity-kit/Pasted%20image%2020230722214139.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Debugger&lt;/h3&gt;
&lt;p&gt;I won’t get into details of LLDB debugger commands. I just want to suggest &lt;a href=&quot;https://www.objc.io/issues/19-debugging/lldb-debugging/&quot;&gt;a good tutorial&lt;/a&gt; on how to use the commands and &lt;a href=&quot;https://www.nesono.com/blog/lldb-cheat-sheet/&quot;&gt;one great cheat sheet for LLDB commands&lt;/a&gt;. One thing I want to mention is that if you get the following error while trying to access frame or similar things&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;error: property ‘frame not found on object of type ‘UIView *’ error: 1 errors parsing the expression&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;you should write &lt;code&gt;expr import UIKit&lt;/code&gt; in the LLDB command line. One way to execute this automatically is to create an auto-continue breakpoint in AppDelegate and add this command to the &lt;em&gt;Debugger Command&lt;/em&gt; action.&lt;/p&gt;
&lt;h2&gt;Other Tools and Frameworks&lt;/h2&gt;
&lt;h3&gt;Alfred&lt;/h3&gt;
&lt;p&gt;I’ve replaced &lt;em&gt;Spotlight Search&lt;/em&gt; with Alfred on my Mac, and I’m really happy with all the features it has. Alfred has a &lt;strong&gt;Clipboard&lt;/strong&gt; and &lt;strong&gt;Snippets&lt;/strong&gt; features that I’m using all day long while coding. I’ve created some snippets according to my current iOS application development stack. For example, we’re using MVVM architecture, and I have boilerplate code snippets for ViewModel, View, and ViewController that I can easily use. You can reach my Alfred Snippets for Swift from &lt;a href=&quot;https://github.com/candostdagdeviren/Productivity/blob/master/Swift.alfredsnippets&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Command Line Tools &amp;amp; Aliases&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I like using Git from the command line instead of programs like SourceTree. I’ve been using &lt;strong&gt;&lt;a href=&quot;https://jonas.github.io/tig/&quot;&gt;Tig&lt;/a&gt;&lt;/strong&gt; for that, and I’m really happy so far. It’s easy &amp;amp; fast. Learning the tool can take some time, but after you get used to it, you’ll see how easy to use Git.&lt;/li&gt;
&lt;li&gt;Also, we’re using a branching model from &lt;a href=&quot;http://nvie.com/posts/a-successful-git-branching-model/&quot;&gt;Vincent Driessen&lt;/a&gt; at work. Of course, it has a tool that makes this usage easier. It’s called &lt;strong&gt;&lt;a href=&quot;https://github.com/nvie/gitflow&quot;&gt;gitflow&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Lastly, I’m using &lt;strong&gt;&lt;a href=&quot;https://github.com/robbyrussell/oh-my-zsh/&quot;&gt;oh-my-zsh&lt;/a&gt;&lt;/strong&gt; with some plugins (git zsh-autosuggestions docker git-flow tig swiftpm sublime osx history dotenv). You can choose the plugins that are suitable for your tech stack.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Third-Party Libraries&lt;/h3&gt;
&lt;p&gt;I just want to mention some libraries that can save you time, literally.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/JohnSundell/TestDrive&quot;&gt;TestDrive&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href=&quot;https://github.com/realm/SwiftLint/&quot;&gt;SwiftLint&lt;/a&gt;, &lt;a href=&quot;https://github.com/danger/danger&quot;&gt;Danger&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have another &lt;strong&gt;&lt;a href=&quot;/using-swiftlint-and-danger-for-swift-best-practices&quot;&gt;blog post&lt;/a&gt;&lt;/strong&gt; about using SwiftLint and Danger; check it out.&lt;/p&gt;
&lt;h3&gt;Last But Not Least - OS-wide shortcuts&lt;/h3&gt;
&lt;p&gt;⌘⌥⎋ - Force Quit&lt;/p&gt;
&lt;p&gt;⌘` - Change the window for the same application&lt;/p&gt;
&lt;h2&gt;Final words&lt;/h2&gt;
&lt;p&gt;Time is the most important thing in our lives. Increase your productivity. Work efficiently. Use one tip or all. Actually, customize those tips for yourself. If you know cool shortcuts or other tools that boost your productivity, share them with me in the comments!&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Symbols&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Option - ⌥&lt;/li&gt;
&lt;li&gt;Command - ⌘&lt;/li&gt;
&lt;li&gt;Shift - ⇧&lt;/li&gt;
&lt;li&gt;Esc - ⎋&lt;/li&gt;
&lt;li&gt;Ctrl - ⌃&lt;/li&gt;
&lt;li&gt;Enter - ⏎&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/ios-developer-productivity-kit/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/ios-developer-productivity-kit/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Machine Learning Introduction</title><link>https://candost.blog/machine-learning-introduction/</link><guid isPermaLink="true">https://candost.blog/machine-learning-introduction/</guid><description>The fundamentals of machine learning require some knowledge of linear algebra and calculus. This barrier frightens people and keeps them away from machine learning with curiosity.</description><pubDate>Thu, 09 Nov 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Machine learning (ML) has been an interesting topic for a lot of people since &lt;a href=&quot;http://ieeexplore.ieee.org/document/5392560/?reload=true&quot;&gt;1959&lt;/a&gt;. Despite the interest, people are afraid to start learning. Because of the fundamentals of machine learning, it requires some knowledge of linear algebra and calculus. This barrier frightens people and keeps them away from ML with curiosity. I was one of them until the last couple of weeks. But my fear was not about the basics of linear algebra and calculus as I learned the fundamentals of them when I got a computer engineering degree. I was afraid of more advanced mathematical techniques that I also learned in university and forgot them all.&lt;/p&gt;
&lt;p&gt;After years of staying away, I decided to give it a shot and started the Machine Learning course in Coursera. I was lost in the first 6–7 weeks. I couldn’t understand most of it even if I passed quizzes and completed programming assignments with help from other students and forums. I was feeling incompetent. The reason for this is my fear was with me all the time. But one day, I was talking with my friend about this, and he said it’s completely normal that I don’t understand. This is the nature of learning. He finished his words with, “Keep pushing, and eventually, the blur on your eyes will disappear.” I pushed a bit more, and one weekend, my blurred eyes were cleaned, and what I saw was beautiful. I was not inadequate. That felt good. Yet here, I’m starting to write the things that I’ve learned.&lt;/p&gt;
&lt;p&gt;I am happy that I narrated my story.😌 Now, let’s start with defining machine learning.&lt;/p&gt;
&lt;h2&gt;Defining and understanding machine learning&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Machine Learning is a field of computer science that gives computers the ability to learn without being explicitly programmed. (&lt;a href=&quot;https://en.wikipedia.org/wiki/Machine_learning&quot;&gt;Wikipedia&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Machine learning was born during the early development of artificial intelligence and pattern recognition. Like all the other technologies, it grew into the industry with the help of businesses. There is one widely used formal definition of machine learning algorithms:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E.” — Tom. M. Mitchell&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The definition states that our program has to learn from our data and should improve its performance. As a classical example, if we want to predict house prices, first, we can feed our algorithm with the data like current prices according to the area of a house, # of bedrooms, etc. From the data, the algorithm learns and improves its guesses by reducing the errors for predictions. We can measure the performance by running the algorithm using new input data with known results and taking a look at the error rate. Our aim here will be to reduce the error rate.&lt;/p&gt;
&lt;h2&gt;Types of Machine Learning Problems and Tasks&lt;/h2&gt;
&lt;h3&gt;Supervised Learning&lt;/h3&gt;
&lt;p&gt;This type of ML algorithm works with the teacher model. It means that we have a dataset with inputs and output values (better naming, labeled data). We define a method to get known outputs for the inputs we have. As we improve our method by using all input-output pairs (this is called training), we can predict output values for new input data. This is called supervised learning. We learn the model using the training data, and we test the model with unseen test data. So, we work both with input and output data. One of the best examples of supervised learning is predicting house prices, as I mentioned above.&lt;/p&gt;
&lt;h3&gt;Unsupervised Learning&lt;/h3&gt;
&lt;p&gt;Unsupervised learning algorithms are used when we have only input data and no corresponding output values. There are no correct answers, therefore no teacher. These algorithms will be able to find hidden structures or relationships between different inputs. One of the best use cases for unsupervised learning algorithms is clustering problems.&lt;/p&gt;
&lt;h3&gt;Semi-Supervised Learning&lt;/h3&gt;
&lt;p&gt;These algorithms are used where there is a huge amount of input data but only a small amount of output (labeled) data. These problems sit in the middle of supervised and unsupervised learning. Therefore, supervised and unsupervised learning techniques are used together. One of the best examples of this is identifying objects in photos. Some photos are labeled as apples and computers, but most of them are not labeled.&lt;/p&gt;
&lt;h3&gt;Reinforcement Learning&lt;/h3&gt;
&lt;p&gt;Reinforcement Learning is influenced by behavioral psychology with a rewarding system. We can think this is like playing with a dog. We have a dog (terminologically called: agent), and we have a park (environment) where he can do whatever he wants. Whenever the dog gets back to you with a stick, you reward him with a portion of food. After a while, the dog will start to have better approaches to finding other sticks around. So, he will learn from the reward system. This approach in the dog’s head is called reinforcement learning. We have an agent, environment, and reward. The difference between supervised learning is in the output data. In reinforcement learning, when the dog is walking around, he doesn’t know whether he will get a reward or not. He may never get a reward at all. But whenever he finds it, he has learned to win. So, output data may come sometime later. In supervised learning, we know the output beforehand and make predictions by looking at them.&lt;/p&gt;
&lt;p&gt;After the introduction of machine learning, I would like to continue diving deep into Supervised Learning and understand regression and classification problems and algorithms.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.coursera.org/learn/machine-learning/&quot;&gt;Andre Ng’s Course in Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://machinelearningmastery.com/&quot;&gt;Machine Learning Mastery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/user/sentdex/&quot;&gt;YouTube-sentdex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/machine-learning-introduction/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/machine-learning-introduction/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Generics in Swift</title><link>https://candost.blog/generics-in-swift/</link><guid isPermaLink="true">https://candost.blog/generics-in-swift/</guid><description>As one of the most powerful features in Swift, Generics can be tricky. A lot of people have trouble understanding and using them, especially application developers.</description><pubDate>Mon, 23 Oct 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As one of the most powerful features in Swift, Generics can be tricky. A lot of people have trouble understanding and using them, especially application developers. Generics are most suitable for libraries, frameworks, and SDKs. In this post, I’ll try something different than other tutorials. We’ll open a restaurant and get permission from SwiftyCity City Council. For the sake of integrity, I’ll try to keep things under four subjects.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Generic Functions and Generic Types&lt;/li&gt;
&lt;li&gt;Protocols with Associated Types&lt;/li&gt;
&lt;li&gt;Generic Where Clauses&lt;/li&gt;
&lt;li&gt;Generic Subscripts&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here we go!&lt;/p&gt;
&lt;h2&gt;Generic Functions and Generic Types&lt;/h2&gt;
&lt;h3&gt;Opening a Swift Restaurant&lt;/h3&gt;
&lt;p&gt;Let’s set up a new restaurant. While setting up, instead of focusing only on our restaurant construction, we’ll also take a look at the legal part, the city council’s permission. Furthermore, we will focus on our own business to make it functional and profitable.&lt;/p&gt;
&lt;p&gt;First, what does a company look like to The Council? A company should have some basic functionalities.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protocol Company {
  func buy(product: Product, money: Money)
  func sell(product: Product.Type, money: Money) -&amp;gt; Product?
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;buy&lt;/code&gt; function adds the product to the inventory, and it takes money out of the company’s vault. On the other hand, &lt;code&gt;sell&lt;/code&gt; function gets the product type, creates/finds the product, and returns it in exchange for money.&lt;/p&gt;
&lt;h3&gt;Generic Functions&lt;/h3&gt;
&lt;p&gt;In this protocol, &lt;code&gt;Product&lt;/code&gt; being in &lt;strong&gt;actual type&lt;/strong&gt; doesn’t sound right. Fitting every real product into &lt;code&gt;Product&lt;/code&gt; type is not possible. Each product has different functionalities, properties, and so on. Using an &lt;strong&gt;actual type&lt;/strong&gt; in these kinds of functions is a really bad idea. Let’s turn back to The Council. All over the world, whatever each company does, requires having to buy and sell capability. So, The Council has to find a &lt;strong&gt;generic&lt;/strong&gt; solution for these two functions and make them work for every company. They can improve these functions using &lt;strong&gt;Generics&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protocol Company {
  func buy&amp;lt;T&amp;gt;(product: T, with money: Money)
  func sell&amp;lt;T&amp;gt;(product: T.Type, for money: Money) -&amp;gt; T?
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;let penneArrabiata = swiftRestaurant.sell(product: PenneArrabiata.Self,
                                          for: Money(value:7.0, currency: .dollar))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The compiler replaces &lt;code&gt;T&lt;/code&gt; with &lt;code&gt;PenneArrabiata&lt;/code&gt;’s type during compilation time. When this method gets called at runtime, it will already have an &lt;strong&gt;actual type&lt;/strong&gt; (&lt;code&gt;PenneArrabiata&lt;/code&gt;) instead of a &lt;strong&gt;placeholder type&lt;/strong&gt;. But there’s another problem. We can’t just buy and sell any type here; there needs to be something to define what we can legally buy and sell. This is where &lt;strong&gt;type constraints&lt;/strong&gt; come in. The Council has another protocol named &lt;code&gt;LegallyTradable&lt;/code&gt;. It just checks and marks products that we can buy and sell legally. The Council forces us to apply this protocol to all trading operations. The Council will iterate over every product and adopt all suitable products to this protocol. So, we have to put &lt;strong&gt;type constraints&lt;/strong&gt; to our generic functions to limit our functions’ usage to only allowed products.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protocol Company {
  func buy&amp;lt;T: LegallyTradable&amp;gt;(product: T, with money: Money)
  func sell&amp;lt;T: LegallyTradable&amp;gt;(product: T.Type, for money: Money) -&amp;gt; T?
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, we can use these functions with inner peace. Basically, we put a constraint on our &lt;strong&gt;placeholder type&lt;/strong&gt; &lt;code&gt;T&lt;/code&gt; by saying “Only products which conform to &lt;code&gt;LegallyTradable&lt;/code&gt; can be parameters of our &lt;code&gt;Company&lt;/code&gt; protocol’s functions”. This constraint is called &lt;strong&gt;protocol as a constraint&lt;/strong&gt; in Swift. If one product is not conforming to this protocol, it can’t be used as a parameter in this function.&lt;/p&gt;
&lt;h3&gt;Generic Types&lt;/h3&gt;
&lt;p&gt;Let’s move the focus to our restaurant. We got our permission and are ready to focus on restaurant management. We hired a great manager, and she wants to set up a system to keep track of every item in our inventory separately. In our restaurant, we have a wonderful pasta menu and our customers are going to love all kinds of pasta. That’s why we need a huge place to store pasta. We created a list of pasta packages and whenever chefs use a package, they remove it from the list. Also, whenever the restaurant buys a pasta package, we’ll add it to our list. Lastly, our manager will order new packages if there are fewer than three packages on the list. Here is our &lt;code&gt;PastaPackageList&lt;/code&gt; struct:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;struct PastaPackageList {
  var packages: [PastaPackage]

  mutating func add(package: PastaPackage) {
    packages.append(item)
  }

  mutating func remove() -&amp;gt; PastaPackage {
    return packages.removeLast()
  }

  func isCapacityLow() -&amp;gt; Bool {
    return packages.count &amp;lt; 3
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;struct InventoryList&amp;lt;T&amp;gt; {
  var items: [T]

  mutating func add(item: T) {
    items.append(item)
  }

  mutating func remove() -&amp;gt; T {
    return items.removeLast()
  }

  func isCapacityLow() -&amp;gt; Bool {
    return items.count &amp;lt; 3
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This &lt;strong&gt;generic type&lt;/strong&gt; gives us the ability to create separate inventory lists for each item in our inventory using the same implementation.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var pastaInventory = InventoryList&amp;lt;PastaPackage&amp;gt;(items: [])
pastaInventory.add(item: PastaPackage())
var tomatoSauceInventory = InventoryList&amp;lt;TomatoSauce&amp;gt;(items: [])
var flourSackInventory = InventoryList&amp;lt;FlourSack&amp;gt;(items: [])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Another advantage of generic types is that whenever our manager needs some extra information, like the first item in our inventory, we can write &lt;strong&gt;extensions&lt;/strong&gt; to add the functionality. Swift allows us to write an &lt;strong&gt;extension&lt;/strong&gt; for structs, classes, and protocols. While extending the generic type, we don’t need to provide &lt;strong&gt;type parameter&lt;/strong&gt; as we do when defining structs. Yet, we can still use placeholder type in the extension. Let’s implement our manager’s request to understand better.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;extension InventoryList { // We define it without any type parameters
  var topItem: T? {
    return items.last
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;InventoryList&lt;/code&gt;’s existing type parameter &lt;code&gt;T&lt;/code&gt; is used to indicate the type of &lt;code&gt;topItem&lt;/code&gt; without defining the &lt;strong&gt;type parameter&lt;/strong&gt; again. Now we have inventory lists for all products we have. We still don’t have storage because every restaurant should apply to The Council to get permission to store goods for long periods. So, let’s move our focus to The Council.&lt;/p&gt;
&lt;h2&gt;Protocols with Associated Types&lt;/h2&gt;
&lt;p&gt;We went to the city council again to get permission to store food. The Council stipulates some rules that we have to obey. For instance, every restaurant with storage should have their storage clean and put certain foods away from each other. Also, The Council wants to check restaurants’ current inventory whenever they want. They provide a protocol to which every store owner should conform. Again, this protocol cannot be specific to the restaurant. Because storage items can change for different types of shops and also for restaurants. In Swift, generic protocols are implemented with &lt;strong&gt;associated types&lt;/strong&gt;. Let’s have a look at the Storage protocol that came from the city council.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protocol Storage {
  associatedtype Item
  var items: [Item] { set get }
  mutating func add(item: Item)
  var size: Int { get }
  mutating func remove() -&amp;gt; Item
  func showCurrentInventory() -&amp;gt; [Item]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;Storage&lt;/code&gt; protocol doesn’t specify how the items in the storage should be stored or what type they are allowed to be. Any shop or restaurant that conforms to &lt;code&gt;Storage&lt;/code&gt; protocol must be able to specify the type of values it stores. It has to ensure that the correct type of items is added to and removed from storage. Also, it has to be able to show the current inventory completely. So, for our storage, we can conform &lt;code&gt;Storage&lt;/code&gt; protocol like the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;struct SwiftRestaurantStorage: Storage {
  typealias Item = Food // Optional
  var items = [Food]()
  var size: Int { return 100 }
  mutating func add(item: Food) { ... }
  mutating func remove() -&amp;gt; Food { ... }
  func showCurrentInventory() -&amp;gt; [Food] { ... }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We conformed to The Council’s &lt;code&gt;Storage&lt;/code&gt; protocol. From now on, the associated type &lt;code&gt;Item&lt;/code&gt; will be replaced with our &lt;code&gt;Food&lt;/code&gt; type. Our restaurant’s storage is all available for &lt;code&gt;Food&lt;/code&gt;. Associated type &lt;code&gt;Item&lt;/code&gt; is just a &lt;strong&gt;placeholder type&lt;/strong&gt; in protocols. We define the type with &lt;code&gt;typealias&lt;/code&gt; keyword. But pointing out this keyword is optional in Swift. Even if we don’t use &lt;code&gt;typealias&lt;/code&gt; keyword it’ll still compile as long as we use our &lt;code&gt;Food&lt;/code&gt; type in all places that &lt;code&gt;Item&lt;/code&gt; uses in the protocol. Swift automatically handles this.&lt;/p&gt;
&lt;h3&gt;Constraining an Associated Type with Type Annotation&lt;/h3&gt;
&lt;p&gt;Like in real life, The Council always comes up with new rules and forces you to obey them. After a while, The Council modifies their &lt;code&gt;Storage&lt;/code&gt; protocol. They announce that they won’t allow every item in the &lt;code&gt;Storage&lt;/code&gt;. Every &lt;em&gt;Item&lt;/em&gt; &lt;strong&gt;must conform&lt;/strong&gt; to &lt;em&gt;StorableItem&lt;/em&gt; protocol to be sure they are suitable for storage. In other words, they &lt;strong&gt;constrained the associated type&lt;/strong&gt; &lt;code&gt;Item&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protocol Storage {
  associatedtype Item: StorableItem // Constrained associated type
  var items: [Item] { set get }
  var size: Int { get }
  mutating func add(item: Item)
  mutating func remove() -&amp;gt; Item
  func showCurrentInventory() -&amp;gt; [Item]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using this method, The Council constrained the type for the current associated type. Anyone who conforms to &lt;code&gt;Storage&lt;/code&gt; protocol now has to use type aliases that conform to &lt;code&gt;StorableItem&lt;/code&gt; protocol.&lt;/p&gt;
&lt;h2&gt;Generic Where Clauses&lt;/h2&gt;
&lt;h3&gt;Generic Types with a Generic Where Clause&lt;/h3&gt;
&lt;p&gt;Let’s go back to the beginning of the post and take a look at the &lt;code&gt;Money&lt;/code&gt; type in our &lt;code&gt;Company&lt;/code&gt; protocol. As we are all talking about protocols, the money parameter of buy and sell functions was actually a protocol.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protocol Money {
  associatedtype Currency
  var currency: Currency { get }
  var amount: Float { get }
  func sum&amp;lt;M: Money&amp;gt;(with money: M) -&amp;gt; M where M.Currency == Currency
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Again, after a while, The Council hit back to us by saying that they decided to have another rule. From now on, trading is only allowed with some currencies. Before that, we could use every kind of money in the type of &lt;code&gt;Money&lt;/code&gt;. Instead of defining a new money types for every currency, they decided to use &lt;code&gt;Money&lt;/code&gt; protocol and changed the buy and sell functions as follows.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protocol Company {
  func buy&amp;lt;T: LegallyTradable, M: Money&amp;gt;(product: T.Type, with money: M) -&amp;gt; T? where M.Currency: TradeCurrency
  func sell&amp;lt;T: LegallyTradable, M: Money&amp;gt;(product: T, for money: M) where M.Currency: TradeCurrency
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The difference between &lt;strong&gt;where clause&lt;/strong&gt; and &lt;strong&gt;type constraint&lt;/strong&gt; is where clauses are used to &lt;strong&gt;define requirements in associated type&lt;/strong&gt;. In other words, we are not constraining the associated type inside the protocol. Instead, we’re constraining it while using the protocol.&lt;/p&gt;
&lt;h3&gt;Extension with a Generic Where Clause&lt;/h3&gt;
&lt;p&gt;Other usages of where clauses are in extensions. For instance, when The Council needs to print the money in a good format like “xxx EUR”, they can add an extension to &lt;code&gt;Money&lt;/code&gt; with limiting its &lt;code&gt;Currency&lt;/code&gt; to &lt;code&gt;Euro&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;extension Money where Currency == Euro {
  func printAmount() {
    print(&quot;\(amount) EUR&quot;)
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Generic where clause&lt;/strong&gt; lets us add a new requirement to &lt;code&gt;Money&lt;/code&gt; extension so that the extension adds the &lt;code&gt;printAmount()&lt;/code&gt; method only when the &lt;code&gt;Currency&lt;/code&gt; is &lt;code&gt;Euro&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Associated Types with a Generic Where Clause&lt;/h3&gt;
&lt;p&gt;Our beloved council makes some improvements in &lt;code&gt;Storage&lt;/code&gt; protocol. They want to iterate over each item and control them when they want to inspect if everything is OK. The controlling process is going to be different for each &lt;code&gt;Item&lt;/code&gt;. Because of that, the council just provides an iteration feature for &lt;code&gt;Storage&lt;/code&gt; by adding an &lt;code&gt;Iterator&lt;/code&gt; associated type.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;protocol Storage {
  associatedtype Item: StorableItem
  var items: [Item] { set get }
  var size: Int { get }
  mutating func add(item: Item)
  mutating func remove() -&amp;gt; Item
  func showCurrentInventory() -&amp;gt; [Item]

  associatedtype Iterator: IteratorProtocol where Iterator.Element == Item
  func makeIterator() -&amp;gt; Iterator
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;Iterator&lt;/code&gt; protocol has an associated type named &lt;code&gt;Element&lt;/code&gt; and here we add a requirement by saying the type of &lt;code&gt;Element&lt;/code&gt; must be equal to the type of &lt;code&gt;Item&lt;/code&gt; in the &lt;code&gt;Storage&lt;/code&gt; protocol.&lt;/p&gt;
&lt;h2&gt;Generic Subscripts&lt;/h2&gt;
&lt;p&gt;It seems like requests from the manager and council are endless. Also, we’re here to materialize their wishes. So, our manager came to us saying that she wanted to access storage items using &lt;code&gt;Sequence&lt;/code&gt; without accessing all items. Basically, the manager wants syntax sugar.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;extension Storage {
  subscript&amp;lt;Indices: Sequence&amp;gt;(indices: Indices) -&amp;gt; [Item] where Indices.Iterator.Element == Int {
    var result = [Item]()
    for index in indices {
      result.append(self.items[index])
    }
    return result
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In Swift 4, subscripts can be generic, and we can use generic where clauses. In our usage, &lt;code&gt;indices&lt;/code&gt; parameter has to conform &lt;code&gt;Sequence&lt;/code&gt; protocol. &lt;a href=&quot;https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Generics.html&quot;&gt;From Apple doc&lt;/a&gt;, “The generic &lt;code&gt;where&lt;/code&gt; clause requires that the iterator for the sequence must traverse over elements of type &lt;code&gt;Int&lt;/code&gt;.” This ensures that the indices in the sequence are the same type as the indices used in storage.&lt;/p&gt;
&lt;h2&gt;Final Words&lt;/h2&gt;
&lt;p&gt;We made our restaurant fully functional. Our manager and The Council seem to be happy. As we can see from our journey, generics are really powerful. We can satisfy extensive requirements with ease using generics once we get the concept. Generics are widely used in the Swift standard library. For instance, &lt;a href=&quot;https://developer.apple.com/documentation/swift/array&quot;&gt;Array&lt;/a&gt; and &lt;a href=&quot;https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html#//apple_ref/doc/uid/TP40014097-CH8-ID113&quot;&gt;Dictionary&lt;/a&gt; types are both generic collections. If you want to learn more and dive deep, you can always take a look at these classes and how they are implemented. &lt;a href=&quot;https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Generics.html&quot;&gt;Swift Language Doc&lt;/a&gt; also provides an extensive explanation for generics. Lastly, Swift language has a &lt;a href=&quot;https://github.com/apple/swift/blob/master/docs/GenericsManifesto.md&quot;&gt;Generic Manifesto&lt;/a&gt;, which explains the features and future direction of generics. I suggest you take a look at all documents to understand current usage and future plans.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/generics-in-swift/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/generics-in-swift/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Vapor 2 - What to do after &apos;Hello World&apos; Example</title><link>https://candost.blog/vapor-2-what-to-do-after-hello-world-example/</link><guid isPermaLink="true">https://candost.blog/vapor-2-what-to-do-after-hello-world-example/</guid><description>When Apple announced Server APIs and working group, it made me think to switch to Swift for server-side development.</description><pubDate>Sun, 09 Jul 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I was using Javascript and wasn’t happy with the language. Even if it has a lot of features and cool things, it’s not type-safe. This doesn’t feel right to me. In fact, I lost myself in the code a couple of months ago while trying to understand one undefined error.&lt;/p&gt;
&lt;p&gt;Javascript is a big world, and there are millions of ways to do &lt;a href=&quot;https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f&quot;&gt;one thing&lt;/a&gt;. So, I decided to give Swift a shot for server-side development. I tried Kitura &lt;a href=&quot;/new-horizons-with-server-side-swift/&quot;&gt;at first&lt;/a&gt;. Because naming was similar to Express.js and Koa.js. After some time, I realized naming is not the issue at that moment. While all frameworks getting better, Kitura has a lot of missing features even now. But I learned a lot of things while working with Kitura, though. Then, I decided to go with Vapor. It’s more complete and it looks like it’s ready for production.&lt;/p&gt;
&lt;p&gt;In this article, I speak about creating a backend API for a small and beautiful iOS game called &lt;a href=&quot;https://appsto.re/de/48TAhb.i&quot;&gt;Kaucuk&lt;/a&gt;. As an iOS developer with a small amount of backend experience, I’ll try to focus on getting things ready for production. I won’t focus on the web frontend side and also the basics of Vapor. You can check out the &lt;a href=&quot;https://legacy.docs.vapor.codes/2.0/&quot;&gt;documentation&lt;/a&gt; for basics.&lt;/p&gt;
&lt;h2&gt;Here we go&lt;/h2&gt;
&lt;p&gt;There are some examples, and tutorials for setting up and creating an endpoint for Hello, World!” message. Most of the time I lose myself after this point. Don’t know what to do and what to research. Because from this point it starts to be specific for a use case. But there are a number of things that you should know/learn. I’ll focus on them one by one by explaining what we did.&lt;/p&gt;
&lt;h3&gt;Database Preparation&lt;/h3&gt;
&lt;p&gt;We decided to go for MongoDB. Vapor has a Mongo provider to handle Mongo setup easily. We’ll set up MongoDB and connect to our API.&lt;/p&gt;
&lt;p&gt;Install MongoDB on Mac with &lt;em&gt;brew install mongodb&lt;/em&gt; command and start it with &lt;em&gt;brew services start&lt;/em&gt; mongodb. When it’s completed, connect to the admin board with Mongo admin. Then, create user with &lt;code&gt;db.createUser({ user: &quot;admin&quot;, pwd: &quot;password&quot;, roles: [&quot;root&quot;] })&lt;/code&gt; command and exit from the admin board with Ctrl+C. Run &lt;em&gt;mongod&lt;/em&gt; command in the terminal. This will run the database on your local. Now, we need to put these configurations in the &lt;em&gt;Config&lt;/em&gt; folder in our Vapor app. I’ll explain what is Config and why we did this later. Create a new file named &lt;em&gt;mongo.json&lt;/em&gt; under the &lt;em&gt;Config&lt;/em&gt; folder and put the following JSON in there. (This config is only for development)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;url&quot;: &quot;mongodb://admin:password@127.0.0.1:27017/vapor_db&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Our database is ready. Let’s take a look at our models.&lt;/p&gt;
&lt;h2&gt;Models&lt;/h2&gt;
&lt;p&gt;Models are pretty straightforward. Import &lt;em&gt;FluentProvider&lt;/em&gt; and conform to Model protocol. Add &lt;em&gt;Storage&lt;/em&gt; as property. It’ll handle all &lt;em&gt;id and exists&lt;/em&gt; thingies in the model. The only tweak here is for me to conforming &lt;em&gt;JSONRepresentable&lt;/em&gt; protocol and implement the custom JSON responses for the model. Because, if you want to return the id in the response, you have to use it. Also sometimes you just want a custom JSON response to fit your client’s style.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Vapor
import Fluent
import FluentProvider
import Foundation

final class User: Model {
  let storage = Storage()
  var name: String

  var exists: Bool = false

  init(name: String) {
    self.name = name
  }

  init(row: Row) throws {
    name = try row.get(&quot;name&quot;)
  }

  func makeRow() throws -&amp;gt; Row {
    var row = Row()
    try row.set(&quot;name&quot;, name)
    return row
  }
}

extension User: JSONRepresentable {
  func makeJSON() throws -&amp;gt; JSON {
    var json = JSON()
    try json.set(&quot;id&quot;, id?.string)
    try json.set(&quot;name&quot;, name)
    return json
  }
}

extension User: Timestampable { }
extension User: Preparation {
  static func prepare(_ database: Database) throws {
    try database.create(self) { builder in
      builder.id()
      builder.string(&quot;name&quot;)
    }
  }

  static func revert(_ database: Database) throws {
    try database.delete(self)
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Controllers&lt;/h2&gt;
&lt;p&gt;This is where all logic goes in. The controller basically manages requests and prepares responses properly. While preparing the response, we can send a query to the database, a network request to another system or just do logical operations. But we should be careful to not have massive controllers. Let’s take a look at the basic usage.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;final class UserController {
  func all(request: Request) throws -&amp;gt; ResponseRepresentable {
    let allUsers = try User.all()
    return try allUsers.makeJSON()
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;First, we get all users. It uses Fluent’s &lt;a href=&quot;https://github.com/vapor/fluent/blob/cc2e9ef2723ed8ca3633396b0c344816077d9539/Sources/Fluent/Entity/Entity.swift#L134&quot;&gt;all()&lt;/a&gt; method. It returns all users as &lt;em&gt;User&lt;/em&gt; array. Then we try to make it JSON and return it. We’re going to connect this function to /all endpoint like the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let userController = UserController()
drop.get(&quot;all&quot;, handler: userController.all)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is the easiest endpoint. Let’s take a look at a more advanced one. In Kaucuk, we decided to keep our users’ highest scores only. In that case, our endpoint should update the user and return it back. We have a PATCH request to update one part of the user model. We search our user by identifier, update its score and save it back to the database.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;func updateScore(request: Request) throws -&amp;gt; ResponseRepresentable {
  let id = try request.parameters.next(String.self)
  guard let json = request.json,
        let score = json[&quot;score&quot;]?.int else {
    throw Abort(.badRequest)
  }

  guard let user = try User.find(id) else {
    throw Abort(.notFound)
  }
  let newUser = user
  do {
    if score &amp;gt; newUser.score {
      newUser.score = score
      try newUser.save()
      return try newUser.makeJSON()
    }
  } catch {
    return Response(status: .failedDependency)
  }

  do {
    return try newUser.makeJSON()
  } catch {
    return Response(status: .internalServerError)
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can connect this controller method to an endpoint like the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let userController = UserController()
users.patch(&quot;&quot;, String.parameter, &quot;score&quot;, handler: userController.updateScore)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;ResourceRepresentable Protocol&lt;/h3&gt;
&lt;p&gt;I should mention ResourceRepresentable protocol here. As the name explains it makes the controller representable and easily usable without adding every endpoint one by one to &lt;code&gt;Droplet&lt;/code&gt;. It automatically integrates controller methods to the router.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;final class UserController {
  func index(_ req: Request) throws -&amp;gt; ResponseRepresentable {
    return try User.all().makeJSON()
  }

  func show(_ req: Request) -&amp;gt; ResponseRepresentable {
    let user = try req.parameters.next(User.self)
    return user
  }
}
extension UserController: ResourceRepresentable {
  func makeResource() -&amp;gt; Resource&amp;lt;User&amp;gt; {
    return Resource(
      index: index,
      show: show
    )
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;UserController&lt;/em&gt; has two methods as an example. &lt;em&gt;index&lt;/em&gt; method returns all users and shows returns to the user you want. Instead of connecting these methods to endpoints one by one like this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let users = UserController()
drop.get(&quot;users&quot;, handler: users.index)
drop.get(&quot;users&quot;, User.self, handler: users.show)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;using &lt;em&gt;ResourceRepresentable&lt;/em&gt; protocol, we can add our controller methods to the endpoints easily by addingcontroller as a resource only.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let users = UserController()
drop.resource(&quot;users&quot;, users)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can find more details &lt;a href=&quot;https://docs.vapor.codes/basics/controllers/?h=controller&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Routing with collections&lt;/h2&gt;
&lt;p&gt;Everything looks nice for a small project with a few APIs. But when your app is getting bigger, you’ll need more APIs and want to group them and route them accordingly. This is what collections are for. In Kaucuk, we have operations on a score, like getting top 10 scores, fetching user position in highest scores, etc.. But we don’t have a score model and we don’t want to add everything to &lt;em&gt;UserController&lt;/em&gt;. So, we decided to create another controller and put score logic in there. Everything in that controller is under /scores the URL path. Therefore, we have a custom &lt;em&gt;RouteCollection&lt;/em&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;final class ScoreCollection: RouteCollection {
  func build(_ builder: RouteBuilder) throws {
    let scores = builder.grouped(&quot;scores&quot;)
    let scoreController = ScoreController()
    scores.get(&quot;top&quot;, handler: scoreController.top10)
    scores.get(&quot;position&quot;, String.parameter, handler: scoreController.position)
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;grouped&lt;/em&gt; method in line 3 returns configured &lt;em&gt;RouteBuilder&lt;/em&gt; object and it allows us to make different groups consist of other groups. This can lead to more things. For example, if you prefer to handle versioning with URL paths, creating the collection for API versions makes it easy to handle. Just create a collection for the version. If you want to increase the API version with the support of the old version, create another one, create new or use existing endpoints and add them to it. Bind these two collections to your &lt;em&gt;Droplet&lt;/em&gt;. It’s done, your API will be backward compatible.&lt;/p&gt;
&lt;p&gt;Let’s get back to our example. Binding collection to &lt;em&gt;Droplet&lt;/em&gt; is really easy.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let scoreCollection = ScoreCollection()
try drop.collection(scoreCollection)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So far, we have pretty much everything we need. We have the database setup, CRUD operations on the database, working endpoints, and routing. For now, this should work without any problem. But it’s not production ready. Production-ready code needs some usage constraints, security layers, production configuration of underlying systems (for us it&apos;s the database), and so on. Now, let’s start with adding extra layers to our endpoints with middleware.&lt;/p&gt;
&lt;h2&gt;Middleware&lt;/h2&gt;
&lt;p&gt;Middleware is a place where every request and response passes through. When they pass, we can manipulate almost everything and let them pass or reject. When a client makes a request, it comes to middleware first before going into any logical or database operations. Also, depending on the middleware implementation, responses go to the middleware after underlying operations. OK, good. But what are the cases that we can use? For example, our backend server works with only JSON requests and responses. We don’t support XML or any other format. So before letting the request get in, we have to select JSON contents only and reject all unsupported formats beforehand. We can tell our client that we’re working only with JSON using the Content-Type header. If the client request’s content is different from JSON, we’ll reject it. How does that look in the code?&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;final class RequestVerificationMiddleware: Middleware {
  func respond(to request: Request, chainingTo next: Responder) throws -&amp;gt; Response {
    if let contentType = request.headers[&quot;Content-Type&quot;],
       contentType != &quot;application/json&quot; {
      throw Abort(.badRequest,
                  reason: &quot;Server only accepts JSON content&quot;)
    }
    return try next.respond(to: request)
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;RequestVerificationMiddleware&lt;/em&gt;, verifies all requests that come to our server. If the request has &lt;em&gt;Content-Type&lt;/em&gt; header, it has to be &lt;em&gt;application/json.&lt;/em&gt; If it passes the check, we send it to the next &lt;em&gt;Responder&lt;/em&gt; object. If there is another middleware, the request will go to that one. Otherwise, it’ll directly go to the underlying operations. We can manipulate the request however we want. For example, we can forbid all DELETE operations without an Authentication header.&lt;/p&gt;
&lt;p&gt;Middleware can manipulate also the response. Middleware protocol’s only method (&lt;em&gt;respond&lt;/em&gt;) returns a &lt;em&gt;Response&lt;/em&gt; object. For example, we can put information headers to the response or restructure the response to handle only one thing.&lt;/p&gt;
&lt;p&gt;We created our custom middleware above. We need to add it to our &lt;em&gt;Config&lt;/em&gt; object with one line.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;config.addConfigurable(middleware: RequestVerificationMiddleware.init,
                       name: &quot;request-verification&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After that, we need to add the middleware’s name to the &lt;em&gt;droplet.json&lt;/em&gt; file. I’ll explain this file and the &lt;em&gt;Config&lt;/em&gt; object in a moment.&lt;/p&gt;
&lt;h2&gt;Application Configuration&lt;/h2&gt;
&lt;p&gt;This is the place where Vapor handles applications’ all configurations. All configurations for &lt;em&gt;Droplet&lt;/em&gt; (our application) are managed by &lt;em&gt;Config&lt;/em&gt; object and JSON files. All &lt;em&gt;Droplet&lt;/em&gt; methods are constants. We cannot change the properties of the &lt;em&gt;Droplet&lt;/em&gt; after initialization. That’s why we have a &lt;em&gt;Config&lt;/em&gt; object. &lt;em&gt;Config&lt;/em&gt; object basically includes our middleware, preparations for models, and providers. Configuration generally takes two steps. First, we add a configuration to the &lt;em&gt;Config&lt;/em&gt; object and then to the JSON file. Let’s take a look one by one.&lt;/p&gt;
&lt;p&gt;We’ll start with our database. We set up our MongoDB at the beginning of the post, but we didn’t configure our app to use this database. We have &lt;em&gt;&lt;a href=&quot;https://github.com/vapor-community/mongo-provider&quot;&gt;MongoProvider&lt;/a&gt;&lt;/em&gt; as a community package. It allows us to use Mongo in our Vapor project. Adding it to the &lt;em&gt;Config&lt;/em&gt; requires only one line after importing &lt;em&gt;MongoProvider.&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let config = try Config()
try config.addProvider(MongoProvider.Provider.self)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, &lt;em&gt;MongoProvider&lt;/em&gt; works with Mongo driver. (If you are using the same, don’t forget to create &lt;em&gt;mongo.json&lt;/em&gt; as I mentioned at the beginning. Otherwise, the app will crash) We then added this driver to &lt;em&gt;fluent.json&lt;/em&gt; file. &lt;em&gt;fluent.json&lt;/em&gt; file allows us to configure the Fluent package to have better communication with the database. Also, we are using ids in a type of UUID in the database. There are more options available in &lt;em&gt;fluent.json&lt;/em&gt; that we’re not using like pagination for the database. Here is our simple &lt;em&gt;fluent.json&lt;/em&gt; file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;idType&quot;: &quot;uuid&quot;,
  &quot;driver&quot;: &quot;mongo&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It’s time to talk about the middleware integration to our &lt;em&gt;droplet.json&lt;/em&gt; file that I mentioned above. Whenever we add a new middleware, we have to add its name to our &lt;em&gt;droplet.json&lt;/em&gt; file. This file and the &lt;em&gt;Config&lt;/em&gt; object work together to configure our application. This approach allows us to create different configurations for development, testing, and production. In Kaucuk, we created folders for each of these configurations under the Config folder in the project and put different &lt;em&gt;droplet.json&lt;/em&gt; files under them. But how Vapor knows where to look when we have multiple files with the same name? Vapor has a priority for Config files. It takes a look at CLI (Command Line Interface) first. Then, it’ll take a look at the &lt;em&gt;secrets&lt;/em&gt; folder. If it cannot find the necessary files, it’ll take a look at our environment configuration folders. If the files don’t exist, it’ll take a look at the main Config directory. Thanks to Vapor’s this approach, we achieved different middleware orders, different logging, and different database setup for each configuration. But what is there in this file? Here is our &lt;em&gt;droplet.json&lt;/em&gt; for development configuration.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;server&quot;: &quot;engine&quot;,
  &quot;client&quot;: &quot;engine&quot;,
  &quot;console&quot;: &quot;terminal&quot;,
  &quot;log&quot;: &quot;dev-console&quot;,
  &quot;hash&quot;: &quot;dev-crypto&quot;,
  &quot;cipher&quot;: &quot;dev-crypto&quot;,
  &quot;middleware&quot;: [&quot;error&quot;, &quot;request-verification&quot;]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The order of the middlewares in the JSON array represents the actual running order. As you can see, we have a middleware for logs named dev-console. In this logging, we pretty much log everything in a good format. In the equivalent file for production config, of course, we don’t log everything.&lt;/p&gt;
&lt;p&gt;This configuration approach brings a lot of advantages. If you are an iOS developer and have no experience on the backend development, you won’t lose your mind while researching how to configure your project for different environments. Vapor is guiding us through an easy and understandable path.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Until now, we have covered database setup, the logic of the app, routing, middleware, and application configuration. We should be ready for deploying our app for production. The remaining things are setting up a database on the cloud and deploying our application to the cloud. Currently, we’re using mLab in Kaucuk as a Mongo database and Heroku for deploying our application. You can benefit from &lt;a href=&quot;https://medium.com/@xcadaverx/full-stack-swift-deploying-a-vapor-app-4a190bc0a8d&quot;&gt;this post&lt;/a&gt; for setting up mLab and Heroku for your backend API.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Further&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;If you want to deploy your app to AWS, check &lt;a href=&quot;https://medium.com/swiftybeaver-blog/deployment-of-a-vapor-app-to-aws-ec2-f577eaa6c38c&quot;&gt;this post&lt;/a&gt; out. You can also learn other things like setting up &lt;em&gt;systemd&lt;/em&gt; which is a tool to restart your app when it crashes.&lt;/li&gt;
&lt;li&gt;If you want to use Docker and deploy wherever you want you can check &lt;a href=&quot;https://medium.com/@LarsJK/easy-server-side-swift-with-docker-4c297feeeeb5&quot;&gt;this post&lt;/a&gt; out for setting up Docker for your server-side Swift app.&lt;/li&gt;
&lt;li&gt;If you want to use DigitalOcean and MySQL, check &lt;a href=&quot;https://medium.com/@pumplerod/server-side-swift-vapor-mysql-and-nginx-with-ssl-cert-running-on-ubuntu-instance-from-e59f50f450e2&quot;&gt;this post&lt;/a&gt; out to learn all about setting up the process.&lt;/li&gt;
&lt;li&gt;Also, Amazon has a Quick Start Reference for setting up Swift Web applications on the AWS cloud which you can access from &lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2016/11/swift-web-applications-on-the-aws-cloud-quick-start-reference-deployment/&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/vapor-2-what-to-do-after-hello-world-example/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/vapor-2-what-to-do-after-hello-world-example/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Migration from Vapor 1 to Vapor 2</title><link>https://candost.blog/migrating-from-vapor-1-to-vapor-2/</link><guid isPermaLink="true">https://candost.blog/migrating-from-vapor-1-to-vapor-2/</guid><description>Migration Guide from Vapor 1 to Vapor 2</description><pubDate>Sun, 21 May 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Vapor 2 is released 🚀🎉 This is a big breaking change, but a good one. We have a small server-side project which is developed with Vapor. When Vapor 2 was released, we directly took a look at what changed. We were a bit 😍 and a bit😩. Vapor 2 has fewer lines of code, the performance is better, and has a lot of new cool features. But on the other side, there is too much change that we had to adopt. As a beginner to the server side and Vapor, it took quite some time. We took some notes while migrating to version 2. First, let me introduce the basic components that I’ll talk about. We’re using MongoDB as a database. We have two custom middlewares which are for verifying requests and setting up response headers. We use custom Routing with &lt;code&gt;RouteCollection&lt;/code&gt;. That’s all.&lt;/p&gt;
&lt;p&gt;Let’s start migrating! 💪🏽&lt;/p&gt;
&lt;p&gt;We started with the &lt;em&gt;Package.swift&lt;/em&gt; file. We were using Vapor 1.5.0 and VaporMongo 1.1.0&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dependencies: [
  .Package(url: &quot;https://github.com/vapor/vapor.git&quot;, majorVersion: 1, minor: 5),
  .Package(url: &quot;https://github.com/vapor/mongo-provider.git&quot;, majorVersion: 1, minor: 1)
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, we’re using &lt;strong&gt;Vapor 2.0&lt;/strong&gt; and &lt;strong&gt;MongoProvider 2.0.0&lt;/strong&gt; (was named VaporMongo before). MongoProvider comes with &lt;strong&gt;FluentProvider&lt;/strong&gt; which is the new package. “The Fluent provider package adds Fluent to project and adds some additional, Vapor-specific conveniences like HTTP conformances.”&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dependencies: [
  .Package(url: &quot;https://github.com/vapor/vapor.git&quot;, majorVersion: 2),
  .Package(url: &quot;https://github.com/vapor/mongo-provider.git&quot;, majorVersion: 2)
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then the moment came. Ran &lt;code&gt;vapor clean &amp;amp;&amp;amp; vapor build&lt;/code&gt; command and BAM! Tons of errors. 😩 There are a lot of things to do.&lt;/p&gt;
&lt;h2&gt;Model&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;Model&lt;/code&gt; protocol has moved to the &lt;code&gt;FluentProvider&lt;/code&gt; package. We had to import &lt;code&gt;FluentProvider&lt;/code&gt; to our &lt;code&gt;Model&lt;/code&gt; files. In &lt;code&gt;Model&lt;/code&gt;, &lt;code&gt;query()&lt;/code&gt; method was changed to &lt;code&gt;makeQuery()&lt;/code&gt;. So, we were using &lt;code&gt;User.query()&lt;/code&gt; and we changed it to &lt;code&gt;User.makeQuery()&lt;/code&gt; to run custom queries on the User model. The other entity methods like &lt;code&gt;all&lt;/code&gt;, &lt;code&gt;find&lt;/code&gt;, &lt;code&gt;chunk&lt;/code&gt;, &lt;code&gt;count&lt;/code&gt; are still the same.&lt;/p&gt;
&lt;p&gt;Fluent models now require &lt;code&gt;Storable&lt;/code&gt; protocol conformance for database operations. This protocol requires only one property that handles &lt;code&gt;id&lt;/code&gt; and &lt;code&gt;exists&lt;/code&gt; properties’ jobs. We don’t need to handle these properties manually anymore. We put let storage = Storage() as a property of every model. Instead of &lt;code&gt;Node&lt;/code&gt; struct and &lt;code&gt;NodeConvertible&lt;/code&gt; protocol, we now have &lt;code&gt;Row&lt;/code&gt; struct and &lt;code&gt;RowConvertible&lt;/code&gt; protocol. It has two new methods one for initializing the model and the other for making a row. Even though I don’t get the idea of a Row in databases like MongoDB, the implementation looks better now. So, we had &lt;code&gt;NodeConvertible&lt;/code&gt; implementations before like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;init(node: Node, in context: Context) throws {
  id = try node.extract(&quot;_id&quot;) // Trick for MongoDB database
  name = try node.extract(&quot;name&quot;)
  score = try node.extract(&quot;score&quot;)
}

func makeNode(context: Context) throws -&amp;gt; Node {
  return try Node(node: [
    &quot;_id&quot;: id, // Trick for MongoDB database
    &quot;name&quot;: name,
    &quot;score&quot;: score
    ])
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We migrated to &lt;code&gt;RowConvertible&lt;/code&gt; and changed our code to following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;init(row: Row) throws {
  name = try row.get(&quot;name&quot;&quot;)&quot;
  score = try row.get(&quot;score&quot;)
}

func makeRow() throws -&amp;gt; Row {
  var row = Row()
  try row.set(&quot;name&quot;, name)
  try row.set(&quot;score&quot;, score)
  return row
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, we need to send &lt;code&gt;id&lt;/code&gt;s in the response body. We had to conform &lt;code&gt;JSONRepresentable&lt;/code&gt; protocol and create custom &lt;code&gt;JSON&lt;/code&gt; for our models.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;extension User: JSONRepresentable {
  func makeJSON() throws -&amp;gt; JSON {
    var json = JSON()
    try json.set(&quot;id&quot;, id?.string)
    try json.set(&quot;name&quot;, name)
    try json.set(&quot;score&quot;, score)
    return json
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you still need &lt;code&gt;NodeConvertible&lt;/code&gt;, &lt;code&gt;NodeRepresentable&lt;/code&gt; protocol’s function syntax has been changed.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;func makeNode(context: Context) throws -&amp;gt; Node&lt;/code&gt; migrated to this: &lt;code&gt;func makeNode(in context: Context?) throws -&amp;gt; Node&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;RouteCollection protocol&lt;/h2&gt;
&lt;p&gt;The only change in &lt;code&gt;RouterCollection&lt;/code&gt; protocol is the method definition.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class OurCoolCollection: RouteCollection {
  typealias Wrapped = HTTP.Responder
  func build&amp;lt;Builder: RouteBuilder&amp;gt;(_ builder: Builder) where Builder.Value == Responder { ... }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;migrated to&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class OurCoolCollection: RouteCollection {
  func build(_ builder: RouteBuilder) throws { ... }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Also &lt;code&gt;drop.collection(OurCoolCollection())&lt;/code&gt; is now throwable.&lt;/p&gt;
&lt;h2&gt;Request Parameters&lt;/h2&gt;
&lt;p&gt;Because of technical limitations, we had a limit for the request parameters before. Now, there is no limit because the implementation is totally changed. There is a new &lt;code&gt;Parameterizable&lt;/code&gt; protocol. Anything that conforms to &lt;code&gt;Entity&lt;/code&gt; protocol, can conform &lt;code&gt;Parameterizable&lt;/code&gt; without any extra work. So, every Fluent model can be &lt;code&gt;Parameterizable&lt;/code&gt; easily with only conforming like &lt;code&gt;extension User: Parameterizable { }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;. In our custom collection, the implementation of endpoints was like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let users = builder.grouped(&quot;user&quot;)
let userController = UserController()
users.post(&quot;&quot;, User.self, handler: userController.create)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;with only one change, it became like this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let users = builder.grouped(&quot;user&quot;)
let userController = UserController()
users.post(&quot;&quot;, handler: userController.create)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And the implementation of &lt;code&gt;create&lt;/code&gt; function in the controller was like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;func create(request: Request, user: User) throws -&amp;gt; ResponseRepresentable
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instead of the function parameters, we can get all request parameters directly from the request. So, the syntax of the function became like following&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;func create(request: Request) throws -&amp;gt; ResponseRepresentable {
  let user = try request.parameters.next(User.self)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;String&lt;/code&gt; and &lt;code&gt;Int&lt;/code&gt; data types automatically conform &lt;code&gt;Parameterizable&lt;/code&gt; protocol. It means that we can use them as parameters. We also have an endpoint that only requires the id of the User as a String in the request. In Vapor 2, the new implementation is like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;func someFunction(request: Request) throws -&amp;gt; ResponseRepresentable {
  let id = try request.parameters.next(String.self)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and in the &lt;code&gt;get&lt;/code&gt; function, we just called &lt;code&gt;.parameter&lt;/code&gt; property of &lt;code&gt;Parameterizable&lt;/code&gt; protocol.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;users.get(&quot;someEndpoint&quot;, String.parameter,
          handler: userController.someFunction)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Droplet &amp;amp; Configuration&lt;/h2&gt;
&lt;p&gt;All of the Droplet parameters are now constants. Changing them after initialization is not allowed anymore. Vapor 2 has a new Config concept in which we can set up our Droplet’s configurations like middlewares, providers, preparations, etc. Droplet has two initialization methods. We used &lt;code&gt;init(_ config: Config)&lt;/code&gt;. Creating the configuration and setting it up separately looks cleaner.&lt;/p&gt;
&lt;p&gt;Our Droplet was written in Vapor 1 and it was something like that:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let drop = Droplet()
drop.middleware.insert(try CORSMiddleware(configuration: drop.config), at: 0)
drop.middleware.append(DummyMiddleware())
drop.middleware.append(SomeMiddleware())
drop.collection(OurCoolCollection())
try drop.addProvider(VaporMongo.Provider.self)
drop.preparations.append(User.self)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, we first created the config with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let config = try Config()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;next, we added middleware to config&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;config.addConfigurable(middleware: DummyMiddleware(), name: &quot;dummy&quot;)
config.addConfigurable(middleware: SomeMiddleware(), name: &quot;some&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;lastly, we added these middlewares to our &lt;code&gt;droplet.json&lt;/code&gt; file. Vapor 2 puts the middlewares in order according to &lt;code&gt;droplet.json&lt;/code&gt;. For example, if you want your &lt;code&gt;AwesomeMiddleware&lt;/code&gt; to run at first, add it to the top of the middlewares array at the &lt;code&gt;droplet.json&lt;/code&gt; file. After adding the middlewares to the &lt;code&gt;droplet.json&lt;/code&gt;, it became like this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;server&quot;: &quot;engine&quot;,
  &quot;client&quot;: &quot;engine&quot;,
  &quot;console&quot;: &quot;terminal&quot;,
  &quot;log&quot;: &quot;console&quot;,
  &quot;hash&quot;: &quot;crypto&quot;,
  &quot;cipher&quot;: &quot;crypto&quot;,
  &quot;middleware&quot;: [&quot;cors&quot;, &quot;abort&quot;, &quot;type-safe&quot;, &quot;date&quot;, &quot;dummy&quot;, &quot;some&quot;]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As mentioned before, we now have the new &lt;code&gt;FluentProvider&lt;/code&gt;. We had to add &lt;code&gt;fluent.json&lt;/code&gt; for under the Config folder. Otherwise, it crashes the app when we run it. Vapor allows you to define the &lt;code&gt;idType&lt;/code&gt; for the database as UUID format in JSON file instead of creating manually in every model. Also, we have to define our &lt;code&gt;driver&lt;/code&gt; in here. We’re using &lt;code&gt;MongoProvider&lt;/code&gt; and because of that, our database &lt;code&gt;driver&lt;/code&gt; is &lt;code&gt;mongo&lt;/code&gt;. We added this provider with only one line&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;try config.addProvider(MongoProvider.Provider.self)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and we defined a &lt;code&gt;fluent.json&lt;/code&gt; file like&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;idType&quot;: &quot;uuid&quot;,
  &quot;driver&quot;: &quot;mongo&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let’s look at preparations quickly. There is no extra work like Provider. We just added them to the config.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;config.preparations.append(User.self)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now, we can initialize our &lt;code&gt;Droplet&lt;/code&gt; with the configuration in one line, that’s all.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;let drop = try Droplet(config)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Our &lt;code&gt;Config&lt;/code&gt; is not done yet. It seems &lt;code&gt;hash&lt;/code&gt; and &lt;code&gt;cipher&lt;/code&gt; have mandatory keys right now. So, we had to change our &lt;code&gt;crypto.json&lt;/code&gt; file. Both of them now require three keys, &lt;code&gt;method&lt;/code&gt;, &lt;code&gt;encoding&lt;/code&gt;, and &lt;code&gt;key&lt;/code&gt;. Our &lt;code&gt;crypto.json&lt;/code&gt; file was like a dummy one before&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;hash&quot;: {
    &quot;method&quot;: &quot;sha256&quot;,
    &quot;key&quot;: &quot;password&quot;
  },
  &quot;cipher&quot;: {
    &quot;method&quot;: &quot;chacha20&quot;,
    &quot;key&quot;: &quot;passwordpasswordpasswordpassword&quot;,
    &quot;iv&quot;: &quot;password&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, it looks smarter&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;hash&quot;: {
    &quot;method&quot;: &quot;sha256&quot;,
    &quot;encoding&quot;: &quot;hex&quot;,
    &quot;key&quot;: &quot;FjavUZaqfjjMg4q6722XXY3H4Yvmm39YorHQJ2uslPU&quot;=
  },
  &quot;cipher&quot;: {
    &quot;method&quot;: &quot;aes256&quot;,
    &quot;key&quot;: &quot;pHhMTJkxkykYn6cJu8fmtVUHkIx/61BTM5tYEwPsYa0=&quot;,
    &quot;encoding&quot;: &quot;base64&quot;,
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The last thing for the config was the &lt;code&gt;url&lt;/code&gt;. It’s mandatory in &lt;code&gt;mongo.json&lt;/code&gt; for &lt;code&gt;MongoProvider&lt;/code&gt; configuration. Even if we gave host, port, username, password, and database parameters in the JSON file, it insistently asked for the &lt;code&gt;url&lt;/code&gt; key. So, we just added &lt;code&gt;url&lt;/code&gt; key to &lt;code&gt;mongo.json&lt;/code&gt; file in the following format. The key point is, &lt;code&gt;MongoKitten&lt;/code&gt; requires this &lt;code&gt;url&lt;/code&gt; in a certain format. It has to start with &lt;code&gt;mongodb://&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&quot;url&quot;: &quot;mongodb://user:password@127.0.0.1:27017/test_db&quot;&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Abort&lt;/h2&gt;
&lt;p&gt;Abort is not an enum anymore. It has converted to a struct with three parameters.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var status: Status { get }
var reason: String { get }
var metadata: Node? { get }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We were using the &lt;code&gt;Abort&lt;/code&gt; like following&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;throw Abort.custom(status: .badRequest,
                   message: &quot;Why is this error happening? Because: \(error)&quot;)
throw Abort.notFound
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and it is migrated to cleaner implementation&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;throw Abort(.badRequest,
            reason: &quot;Why is this error happening? Because: \(error)&quot;)
throw Abort(.notFound)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;servers.json file is simplified and renamed to server.json. Basic server.json can be found in the documentation like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;//&quot;: &quot;The $PORT:8080 call tells the json file to see if there&quot;,
  &quot;//&quot;: &quot;is any value at the &apos;PORT&apos; environment variable.&quot;,
  &quot;//&quot;: &quot;If there is no value there, it will fallback to &apos;8080&apos;&quot;,
  &quot;port&quot;: &quot;$PORT:8080&quot;,

  &quot;host&quot;: &quot;0.0.0.0&quot;,

  &quot;//&quot;: &quot;It&apos;s very rare that a server manages its own TLS.&quot;,
  &quot;//&quot;: &quot;More commonly, vapor is served behind a proxy like nginx.&quot;,
  &quot;securityLayer&quot;: &quot;none&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Last words&lt;/h2&gt;
&lt;p&gt;Adoption to the latest versions with breaking changes is generally hard. But when it comes to performance, clean code, and other new features, walking around with the old version becomes redundant. Some people declare this as living on the edge. Although I agree with this on some level, I generally try to use the latest versions when they came out. But I always give it a try with some trial projects, not directly on production code.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Further:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://legacy.docs.vapor.codes/2.0/&quot;&gt;Vapor 2 New Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.steampress.io/blog/posts/migrating-to-vapor-2/&quot;&gt;Steampress.io Vapor 2 Migration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/vapor/vapor/releases/tag/2.0.0&quot;&gt;Vapor Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/vapor/migrator/blob/master/notes/vapor-diff.md&quot;&gt;Vapor Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/migrating-from-vapor-1-to-vapor-2/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/migrating-from-vapor-1-to-vapor-2/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Using SwiftLint and Danger for Swift Best Practices</title><link>https://candost.blog/using-swiftlint-and-danger-for-swift-best-practices/</link><guid isPermaLink="true">https://candost.blog/using-swiftlint-and-danger-for-swift-best-practices/</guid><description>Swift is a very flexible language, therefore, easy to misuse. Applying best practices in Swift lint is important.</description><pubDate>Sun, 30 Apr 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Apple’s Swift is becoming more and more popular amongst the developer community. Most of us already started adapting our projects to this folk. While adopting, we may not be as careful as we should be as Swift is a very flexible language, and it’s really easy to misuse it. Especially coming from an Objective-C culture, applying best practices becomes really important.&lt;/p&gt;
&lt;p&gt;After reading &lt;a href=&quot;https://medium.com/nsistanbul/swifty-tips-%EF%B8%8F-8564553ba3ec&quot;&gt;Swifty Tips from Göksel&lt;/a&gt;, I realized a couple of his tips could be checked automatically with &lt;strong&gt;&lt;a href=&quot;http://bit.ly/2pszEcm&quot;&gt;SwiftLint&lt;/a&gt;&lt;/strong&gt;. Also, we’re lazy people, and we tend to forget to check our code before merging to master. Just here, &lt;strong&gt;&lt;a href=&quot;http://bit.ly/2pJ2DLY&quot;&gt;Danger&lt;/a&gt;&lt;/strong&gt; comes to the stage with shiny clothes and points out we’re doing something dangerous.&lt;/p&gt;
&lt;p&gt;Sounds interesting...🤔 But what are these tools, actually?&lt;/p&gt;
&lt;h2&gt;SwiftLint 💪🏽&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://bit.ly/2pszEcm&quot;&gt;SwiftLint&lt;/a&gt; is an open-source tool to enforce Swift&apos;s style and conventions. It is developed by Realm. You can set your coding style rules and force them during development. SwiftLint has a command-line tool, Xcode plugin, AppCode, and Atom integration. So it always fits your development environment. It’ll show you warnings and/or errors if you violate the linting rules.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/ns-for-ios-devs/Pasted%20image%2020230722221510.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can take a look at the setup guide and tutorial &lt;a href=&quot;http://bit.ly/2oJGIUS&quot;&gt;here&lt;/a&gt;. After installation, you’ll have some rules by default. For example, it warns when you use private IBOutlet or force unwrapping in optionals.&lt;/p&gt;
&lt;p&gt;Let’s take a look at Göksel’s &lt;a href=&quot;http://bit.ly/2oTbJkg&quot;&gt;tips&lt;/a&gt;. He says, “Never use implicitly unwrap optionals.” SwiftLint provides this by default exactly how he describes it. SwiftLint will warn you when you implicitly unwrap an optional, except if it’s IBOutlet. The other one is “Avoiding _ misuse.” SwiftLint is smart enough to point you out when you’re not using your bound optionals.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if let _ = Foo.optionalValue { } // Trigers a warning
if case .some(let _) = self {} // Triggers a warning
if foo() { let _ = bar() } // Not triggers a warning
if foo() { _ = bar() } // Not triggers a warning
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In addition to applying best practices individually, we want to make the codebase consistent. Make it easier to apply custom rules. These rules should fit best practices, though. Configuring linting is handled from the &lt;em&gt;.swiftlint.yml&lt;/em&gt; file. This file sits in the project’s main path. We can enable, disable or write custom rules in this YML file. Let’s take a look at some examples.&lt;/p&gt;
&lt;p&gt;First things first, writing a big function is generally a bad sign. If your function is getting bigger, it means that you should split &lt;a href=&quot;http://bit.ly/2qqFzxT&quot;&gt;the responsibility&lt;/a&gt;. Add the following code piece to your &lt;em&gt;.swiftlint.yml&lt;/em&gt; file. This warns developers to have functions less than 200 lines. If the programmer reaches 300, SwiftLint generates an error. Remember, you can ignore warnings but not errors. 😉&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function_body_length:
 - 200 # warning
 - 300 # error
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Almost every project has dependencies or code pieces that are not possible to change. These code pieces should not be linted at all. For example, if a project uses CocoaPods as a dependency manager, it’ll have a Pods folder that keeps all dependency files. We need to exclude this folder from the linting process. As you can see below, it’s so easy.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;excluded:
  - Pods
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you saw from the examples, what gives the extra boost to SwiftLint is flexibility. Sometimes you have to break the rules in special lines or files. These situations are handled in SwiftLint with special comments. You can use the following to adjust rules in these cases.&lt;/p&gt;
&lt;p&gt;Add this comment to disable the rule in the file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;//swiftlint:disable rule_name
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add this comment to disable the rule in the following line:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;//swiftlint:disable:next rule_name
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add this comment to disable the rule in the previous line:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;//swiftlint:disable:previous rule_name
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can get the list of all rules by running &lt;code&gt;swiftlint rules&lt;/code&gt; command in the terminal.😏&lt;/p&gt;
&lt;p&gt;Finally, we finalized our rules, and now we can code in peace. But even in some cases, you have to be more careful than just applying your linting rules. This is where Danger comes into place.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S.:&lt;/strong&gt; You can find my predefined &lt;em&gt;.swiftlint.yml&lt;/em&gt; file &lt;a href=&quot;http://bit.ly/2pswdlX&quot;&gt;here&lt;/a&gt;😉.&lt;/p&gt;
&lt;h2&gt;Danger ⚡️&lt;/h2&gt;
&lt;p&gt;Every project/piece of code has its own specific flow. When the project grows, maintaining and adding new features become harder. Error-prone increases. Having coding guidelines and applying best practices are generally not enough. We are human; we make mistakes. &lt;a href=&quot;http://bit.ly/2pJ2DLY&quot;&gt;Danger&lt;/a&gt; can catch basic errors and let us think of the harder problems. For example, it can catch common typos or generated file changes that you shouldn’t change by yourself. It can also force you to write tests if you write more than 20 lines of code. The rules are in your hands, as same as SwiftLint.&lt;/p&gt;
&lt;p&gt;The Danger is a Ruby gem that runs in CI during the pull request/merge request process. It leaves messages and comments or even fails your CI build when your rules are violated. Danger can run on several CI tools and can chat on GitHub, Bitbucket, and GitLab.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/ns-for-ios-devs/Pasted%20image%2020230722221526.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For &lt;a href=&quot;http://bit.ly/2qqFzxT&quot;&gt;single responsibility&lt;/a&gt; and easier code review, developers shouldn’t open big pull requests. If a pull request has more than 600 lines of code, there should be a warning to split the pull request. Danger can provide this with a single line of configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;warn Big PR, consider splitting into smaller if git.lines_of_code &amp;gt; 600
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What else? If you’re working with the Test-After development process, you can easily forget to write tests. On the other hand, there should be an automated way for “You forgot to add tests” comments. In general, if you change more than 20 lines of code, you should write tests. The number of lines depends on your decision, but you got the idea. Let’s take a look at how we can achieve this with Danger:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Let&apos;s check if there are any changes in the project folder
has_app_changes = !git.modified_files.grep(/ProjectName/).empty?

## Then, we should check if tests are updated
has_test_changes = !git.modified_files.grep(/ProjectNameTests/).empty?

## Finally, let&apos;s combine them and put extra condition 
## for changed number of lines of code
if has_app_changes &amp;amp;&amp;amp; !has_test_changes &amp;amp;&amp;amp; git.lines_of_code &amp;gt; 20
  fail(&quot;Tests were not updated&quot;, sticky: false)
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The Danger is suitable for every kind of project. It provides a broad range of configurations to several languages by plugins. In Swift&apos;s case, Ash Furrow developed &lt;a href=&quot;http://bit.ly/2pvYyd2&quot;&gt;a plugin&lt;/a&gt; for SwiftLint. Thanks to this plugin, we can have SwiftLint warnings as inline comments in the pull request. You can see the installation guide &lt;a href=&quot;http://bit.ly/2pvYyd2&quot;&gt;here&lt;/a&gt;. After installation, you’ll need to add the following lines to the end of your &lt;em&gt;Dangerfile&lt;/em&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;swiftlint.lint_files
swiftlint.lint_files inline_mode: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Dangerfile&lt;/em&gt; ensures your development guidelines are applied to your code. It makes you more confident. In the long run, warnings teach you to be more careful. There is a reference guide &lt;a href=&quot;http://bit.ly/2oCQ9pd&quot;&gt;here&lt;/a&gt; to give you a more detailed view of Danger’s capabilities.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You don’t have to configure CI. It’s possible to run Danger on your local machine with &lt;code&gt;danger local&lt;/code&gt; command.&lt;/p&gt;
&lt;p&gt;If &lt;code&gt;danger local&lt;/code&gt; command doesn’t run across the last open PR, you can always use the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;danger pr https://YOUR_PR_URL --dangerfile=YOUR_DANGERFILE_PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;P.S.:&lt;/strong&gt; You can find my predefined &lt;em&gt;Dangerfile&lt;/em&gt; &lt;a href=&quot;http://bit.ly/2oT8Z6s&quot;&gt;here&lt;/a&gt;😉.&lt;/p&gt;
&lt;h2&gt;Bonus: SwiftLint with Git Hook&lt;/h2&gt;
&lt;p&gt;If you’re working with different text editors or IDEs that SwiftLint doesn’t support, you can only use command-line tools to lint your code. This is an extra step, and it’s easy to forget. Good thing we can automate this. The hook feature in Git is another place to automate things. Basically, Git hooks are scripts where Git executes before or after events such as commit, push, and receive. We can run SwiftLint in one of these scripts. Personally, I’m using SwiftLint in the pre-commit hook while I’m writing Swift in Sublime Text.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S.:&lt;/strong&gt; You can find my full pre-commit hook &lt;a href=&quot;http://bit.ly/2oWmiE8&quot;&gt;here&lt;/a&gt;😉. If you want to use the same, just place the file above under .git/hooks folder inside your project. (You’ll see sample hook scripts in there. Place it among them.) You can also use it as a different hook. You can take a look at the list of available hooks and more information &lt;a href=&quot;http://do.co/2qfn4x3&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The End 😌&lt;/h2&gt;
&lt;p&gt;Let Danger and SwiftLint handle the trivial stuff for you. From now on, you can skip basic problems and focus on more complicated things during code review. SwiftLint and Danger ensure that everything is in place as you want. Wanna try?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/using-swiftlint-and-danger-for-swift-best-practices/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/using-swiftlint-and-danger-for-swift-best-practices/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Unit Tests in Server-Side Swift API</title><link>https://candost.blog/unit-tests-in-server-side-swift/</link><guid isPermaLink="true">https://candost.blog/unit-tests-in-server-side-swift/</guid><description>Why do we need to reshape our module to make it testable?</description><pubDate>Tue, 21 Mar 2017 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Swift accepts only one executable file for the app. We need to split the app and library to make it testable. Because testing requires a separate executable file.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;main.swift&lt;/code&gt; file is the main executable for app. &lt;code&gt;LinuxMain.swift&lt;/code&gt; file is the main executable for tests.&lt;/li&gt;
&lt;li&gt;To split them, we’ll create two targets. One target is the library which will consist of all our code. The other one is the app which will be dependent on the library.&lt;/li&gt;
&lt;li&gt;Do not forget to add the ~Tests suffix for your test folders and test files.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LinuxMain.swift&lt;/code&gt; file must be under the &lt;code&gt;Tests&lt;/code&gt; directory.&lt;/li&gt;
&lt;li&gt;Create a static variable inside test classes and use it as a parameter while calling &lt;code&gt;testCase()&lt;/code&gt; method in &lt;code&gt;LinuxMain.swift&lt;/code&gt; file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Restructuring the Project&lt;/h2&gt;
&lt;p&gt;After &lt;a href=&quot;/new-horizons-with-server-side-swift/&quot;&gt;the first post&lt;/a&gt;, we should have an executable Swift Backend API. In this post, we’ll restructure and reconfigure our beloved tiny module for tests and Dockerize it. First, one question comes to our minds: &lt;strong&gt;Why do we need to reshape our module to make it testable?&lt;/strong&gt; Because we have the executable module right now (which is the API), and &lt;strong&gt;Swift doesn’t accept more than one main executable&lt;/strong&gt;. At this point, to execute tests, we need a separate executable .swift file for tests. From this point, we’ll move &lt;code&gt;main.swift&lt;/code&gt; as a separate module and call it an app. The logic and all other stuff will be in our library module. You can see the latest folder structure on the right side. There are some points that we need to handle while separating our app and library. First, &lt;strong&gt;top-level expressions are not allowed except&lt;/strong&gt; for &lt;strong&gt;&lt;code&gt;main.swift&lt;/code&gt;&lt;/strong&gt; file. It means that we can call methods or expressions outside of &lt;strong&gt;class, struct, enum, etc.&lt;/strong&gt; only in &lt;code&gt;main.swift&lt;/code&gt; file like our current version:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// main.swift
import Kitura
import HeliumLogger
import CouchDB

HeliumLogger.use()

let connProperties = ConnectionProperties(
    host: &quot;127.0.0.1&quot;,  // httpd address
    port: 5984,         // httpd port
    secured: false,     // https or http
    username: &quot;candost&quot;,      // admin username
    password: &quot;password&quot;       // admin password
)

let db = Database(connProperties: connProperties, dbName: &quot;kitura_test_db&quot;)
let databaseInteraction = DatabaseInteraction(db: db)
let app = MainRouter(db: databaseInteraction)

Kitura.addHTTPServer(onPort: 8090, with: app.router)

Kitura.run()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After separating our Lib and App, we don’t have access to imported modules (in this case, Kitura, HeliumLogger, and CouchDB) and custom-created data structures (like MainRouter, DatabaseInteraction, etc.). So, we’ll move all this code into a function in a new data structure (class or struct). In this case, it’s good practice to name this file the same as our module, &lt;code&gt;SwiftBackend.swift&lt;/code&gt;. After moving all code inside the &lt;code&gt;main.swift&lt;/code&gt; file, our &lt;code&gt;SwiftBackend.swift&lt;/code&gt; file becomes like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// SwiftBackend.swift
import Kitura
import HeliumLogger
import CouchDB

public class SwiftBackend {
  public static func run() {
    HeliumLogger.use()

    let connProperties = ConnectionProperties(
        host: &quot;127.0.0.1&quot;,  // httpd address
        port: 5984,         // httpd port
        secured: false,     // https or http
        username: &quot;candost&quot;,      // admin username
        password: &quot;password&quot;       // admin password
    )

    let db = Database(connProperties: connProperties, dbName: &quot;kitura_test_db&quot;)
    let databaseInteraction = DatabaseInteraction(db: db)
    let app = MainRouter(db: databaseInteraction)

    Kitura.addHTTPServer(onPort: 8090, with: app.router)

    Kitura.run()

  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, we all need to do is creating this &lt;code&gt;SwiftBackend&lt;/code&gt; class inside our &lt;code&gt;main.swift&lt;/code&gt; file in the App module and call the method &lt;code&gt;run&lt;/code&gt;. Just don’t forget to import &lt;code&gt;SwiftBackendLib&lt;/code&gt; to access &lt;code&gt;SwiftBackend&lt;/code&gt; class. Here is the latest version of &lt;code&gt;main.swift&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// main.swift
import SwiftBackendLib

SwiftBackend.run()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;OK, we have 2 different modules &lt;code&gt;SwiftBackendLib&lt;/code&gt; and &lt;code&gt;SwiftBackendApp&lt;/code&gt;. Lastly, &lt;strong&gt;we need to create these modules as targets&lt;/strong&gt; in our &lt;code&gt;Package.swift&lt;/code&gt; file and &lt;strong&gt;add our library as a dependency for the app target&lt;/strong&gt;. In the end, it should be like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Package.swift
import PackageDescription

let package = Package(
    name: &quot;SwiftBackend&quot;,
    targets: [
      Target(name: &quot;SwiftBackendLib&quot;),
      Target(name: &quot;SwiftBackendApp&quot;, dependencies: [&quot;SwiftBackendLib&quot;])
    ],
    dependencies: [
        .Package(url: &quot;https://github.com/IBM-Swift/Kitura.git&quot;, majorVersion: 1, minor: 4),
        .Package(url: &quot;https://github.com/IBM-Swift/HeliumLogger.git&quot;, majorVersion: 1, minor: 4),
        .Package(url: &quot;https://github.com/IBM-Swift/Kitura-CouchDB.git&quot;, majorVersion: 1, minor: 4)
    ]
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We’re ready to start writing tests.&lt;/p&gt;
&lt;h2&gt;Creating &amp;amp; Running Unit Tests&lt;/h2&gt;
&lt;p&gt;Our restructuring is done. We can start testing. Mainly, there are a few rules for tests. As you can see in our folder structure above, inside the &lt;strong&gt;Test&lt;/strong&gt; folder, we have &lt;strong&gt;SwiftBackendLibTests&lt;/strong&gt;. The first thing here is whenever you create a folder under the &lt;strong&gt;Test&lt;/strong&gt; directory, you have to add the &lt;strong&gt;~Tests&lt;/strong&gt; suffix to your folder name. Second, &lt;code&gt;LinuxMain.swift&lt;/code&gt; file is the executable file for Tests. This is the &lt;strong&gt;main reason&lt;/strong&gt; why we have to separate the library and the app in the first place. So, we have to place &lt;code&gt;LinuxMain.swift&lt;/code&gt; file directly under the Tests directory. Finally, we can start writing some tests. Here is an example of a basic test file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// UserTests.swift
import XCTest
@testable import SwiftBackendLib

class UserTests: XCTestCase {

    static var allTests : [(String, (UserTests) -&amp;gt; () throws -&amp;gt; Void)] {
        return [
                (&quot;testAsserts&quot;, testAsserts)
            ]
    }

    override func setUp() {
        super.setUp()
    }

    func testAsserts() {
        XCTAssertEqual(1234, 1234, &quot;Message shown when assert fails&quot;)
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, we have &lt;code&gt;allTests&lt;/code&gt; variable which is &lt;code&gt;static&lt;/code&gt;. This is the way you can call tests from your &lt;code&gt;LinuxMain.swift&lt;/code&gt; file. As you can see in &lt;code&gt;LinuxMain.swift&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// LinuxMain.swift
import XCTest
@testable import SwiftBackendLib

XCTMain([
    testCase(UserTests.allTests)
])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We’re using this static variable as a &lt;code&gt;testCase&lt;/code&gt; parameter. This will run all tests inside the test file. So, when you add new test methods, do not forget to include them in the static variable &lt;code&gt;return&lt;/code&gt; state. When you create new test classes, do not forget to add the ~Tests suffix and add &lt;code&gt;testCase&lt;/code&gt; a method to &lt;code&gt;LinuxMain.swift&lt;/code&gt; file with a static variable parameter. ## Dockerizing&lt;/p&gt;
&lt;p&gt;I’ll not explain how to set up Docker. There are great guides that explain everything in steps. I assume you already have a running Docker Machine. Here is the basic Dockerfile to run this API using Docker. It means that you can deploy almost anywhere you want (if it supports Docker).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FROM ibmcom/swift-ubuntu:latest
ADD . /app
WORKDIR /app
EXPOSE 8090
USER root
RUN swift build
CMD [&quot;.build/debug/SwiftBackendApp&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let’s see what is going on in this Dockerfile. We’re using &lt;code&gt;ibmcom/swift-ubuntu:latest&lt;/code&gt; image as a base image. This will fulfill our needs while running. If there is no setup for Swift, it’ll install the required Linux packages to make it run. After that, we copy all of our current directories (all files) to the under &lt;code&gt;/app&lt;/code&gt; directory and make &lt;code&gt;/app&lt;/code&gt; directory our working directory. &lt;code&gt;EXPOSE 8090&lt;/code&gt; command exposes the 8090 port for our app. So our app will be accessible via port number 8090. Then, we set our current user as a &lt;code&gt;root&lt;/code&gt; user to run everything with root access. Finally, everything is ready, and we can build and run our server API. &lt;code&gt;RUN swift build&lt;/code&gt; runs the &lt;code&gt;swift build&lt;/code&gt; command, and it creates executable files. The last line of the Dockerfile just executes this executable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; In here, we’re using debug executable. If you want to use release configuration, you can change &lt;code&gt;RUN&lt;/code&gt; command to &lt;code&gt;swift build -c release&lt;/code&gt;. This will create an executable for release configuration. Then, you can use command &lt;code&gt;.build/release/SwiftBackendApp&lt;/code&gt; in the last line.&lt;/p&gt;
&lt;p&gt;You can run the API executable in your local with command &lt;code&gt;docker run -p 8090:8090 swiftbackend&lt;/code&gt;. This should start running, and you can start sending requests to your Docker Machine&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Here we go. Finally, we have a working Swift Server API. I tried to explain all steps I did. I spent a lot of time making this app testable. I didn’t know that folder structure and naming really mattered for running tests with Swift. If you had some troubles that I didn’t mention here, please add them as comments.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/unit-tests-in-server-side-swift/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/unit-tests-in-server-side-swift/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>New Horizons with Server-Side Swift</title><link>https://candost.blog/new-horizons-with-server-side-swift/</link><guid isPermaLink="true">https://candost.blog/new-horizons-with-server-side-swift/</guid><description>After hearing a lot about the great performance of Swift in the backend, I decided to give it a try. And here comes my first experiences step by step.</description><pubDate>Sun, 05 Feb 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After deciding to join more conferences this year, the very first one was &lt;strong&gt;&lt;a href=&quot;https://www.dotswift.io/&quot;&gt;dotSwift&lt;/a&gt;&lt;/strong&gt;. It was held in a great old theater in Paris. It was a half-day conference, but it was better than I guessed. There were good talks about backend development in Swift. After hearing a lot about that and the great performance of Swift, I decided to give it a try. And here comes my first experience, step by step.&lt;/p&gt;
&lt;p&gt;There are two major frameworks for the backend in Swift, &lt;a href=&quot;https://github.com/IBM-Swift/Kitura&quot;&gt;Kitura&lt;/a&gt; and &lt;a href=&quot;https://github.com/vapor/vapor&quot;&gt;Vapor&lt;/a&gt;. I choose Kitura first. Because Kitura’s methods naming was close to the ones that I knew from Node.js. I felt more comfortable about understanding what each method does.&lt;/p&gt;
&lt;p&gt;First, setting up the environment was easy because I have Mac and I’m actively developing iOS applications. So, Xcode and other stuff were already set up.&lt;/p&gt;
&lt;p&gt;Creating a Swift backend project means creating a new Swift package with the single line command &lt;code&gt;swift package init&lt;/code&gt;. This creates a structured new package. But packages are not executable, and I needed an executable project to run my backend. Creating &lt;code&gt;main.swift&lt;/code&gt; file under the Sources directory gave me this ability to me. At this point, my current folder structure was like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SwiftBackend
  .gitignore
  Package.swift
  |--Sources
  main.swift
  |--Tests
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, it was time to arrange &lt;code&gt;Package.swift&lt;/code&gt; and add Kitura. Here is the &lt;code&gt;Package.swift&lt;/code&gt; file with Kitura added as a dependency:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import PackageDescription

let package = Package(
  name: &quot;SwiftBackend&quot;,
  dependencies: [
    .Package(url: &quot;https://github.com/IBM-Swift/Kitura.git&quot;, majorVersion: 1, minor: 4)
  ]
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;swift build&lt;/code&gt; command installs the dependencies and builds the project. After adding a new dependency, it’s always logical to build the project and see if it works.&lt;/p&gt;
&lt;p&gt;The next step is setting up an endpoint. The basic example in Kitura’s tutorial is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Kitura

let router = Router()
router.get(&quot;/&quot;) { request, response, next in
  response.send(&quot;Hello, World!&quot;)
  next()
}
Kitura.addHTTPServer(onPort: 8090, with: router)
Kitura.run()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I added this code to &lt;code&gt;main.swift&lt;/code&gt; file. When I ran the project locally, I should have seen Hello, World! when I enter &lt;code&gt;localhost:8090&lt;/code&gt; via browser (or make a get request via Postman etc.). To run this project, first, I needed to build it via &lt;code&gt;swift build&lt;/code&gt; and this command created the executable for me under &lt;code&gt;.build/debug/SwiftBackend&lt;/code&gt; . I’ve just run the executable by typing the command line &lt;code&gt;.build/debug/SwiftBackend&lt;/code&gt;. At this point, I was able to send a request and see &lt;strong&gt;“Hello, World!”&lt;/strong&gt; text in the browser. But in the console, I didn’t see any logs about these requests.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/IBM-Swift/HeliumLogger&quot;&gt;&lt;code&gt;HeliumLogger&lt;/code&gt;&lt;/a&gt; came in at that point. It’s a logger component which available as a separate Swift module. I added this module to &lt;code&gt;Package.swift&lt;/code&gt; file by adding it as a new dependency. At this point, my &lt;code&gt;Package.swift&lt;/code&gt; file was like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import PackageDescription

let package = Package(
  name: &quot;SwiftBackend&quot;,
  dependencies: [
    .Package(url: &quot;https://github.com/IBM-Swift/Kitura.git&quot;, majorVersion: 1, minor: 4),
    .Package(url: &quot;https://github.com/IBM-Swift/HeliumLogger.git&quot;, majorVersion: 1, minor: 4)
  ]
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And I ran the swift build command again to install &lt;code&gt;HeliumLogger&lt;/code&gt;. After that, I needed to import &lt;code&gt;HeliumLogger&lt;/code&gt; and use it in &lt;code&gt;main.swift&lt;/code&gt; file. It was just one line. My &lt;code&gt;main.swift&lt;/code&gt; file became like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Kitura
import HeliumLogger

HeliumLogger.use()

let router = Router()
router.get(&quot;/&quot;) { request, response, next in
  response.send(&quot;Hello, World!&quot;)
  next()
}
Kitura.addHTTPServer(onPort: 8090, with: router)
Kitura.run()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After building and running the project again, I was able to see the request logs in the console.&lt;/p&gt;
&lt;p&gt;As the next step, I wanted to connect the database to my backend API. I used CouchDB because there is a &lt;a href=&quot;https://github.com/IBM-Swift/Kitura-CouchDB&quot;&gt;Kitura-CouchDB&lt;/a&gt; package.&lt;/p&gt;
&lt;p&gt;After adding the CouchDB package to my &lt;code&gt;Package.swift&lt;/code&gt; file, it became like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import PackageDescription

let package = Package(
  name: &quot;SwiftBackend&quot;,
  dependencies: [
    .Package(url: &quot;https://github.com/IBM-Swift/Kitura.git&quot;, majorVersion: 1, minor: 4),
    .Package(url: &quot;https://github.com/IBM-Swift/HeliumLogger.git&quot;, majorVersion: 1, minor: 4),
    .Package(url: &quot;https://github.com/IBM-Swift/Kitura-CouchDB.git&quot;, majorVersion: 1, minor: 4)
  ]
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Again, I ran the command &lt;code&gt;swift build&lt;/code&gt; to install a new package.&lt;/p&gt;
&lt;p&gt;While implementing database operations, I wanted to create a structure to not do everything in &lt;code&gt;main.swift&lt;/code&gt; file. First, I created a &lt;code&gt;User&lt;/code&gt; struct as a model object. My main purpose for database operations was to add this &lt;code&gt;User&lt;/code&gt; object to the CouchDB database as a document. Easy model, easy operation. So &lt;code&gt;User&lt;/code&gt; struct was like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Foundation

public struct User {
  let name: String
  let identifier: String
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So, as I said, my main purpose was to add a document to the CouchDB database. I created a &lt;code&gt;DatabaseInteraction&lt;/code&gt; struct with one method to achieve that goal. My plan was to add all database operations to this struct. Here is the &lt;code&gt;DatabaseInteraction&lt;/code&gt; struct:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Foundation
import CouchDB
import SwiftyJSON

public struct DatabaseInteraction {
  var db: Database
  public init(db: Database) {
    self.db = db
  }

func addNewUser(_ user: User, handler: @escaping (String?, String?, JSON?, NSError?) -&amp;gt; ()) {
    let userDict: [String: Any] = [
      &quot;name&quot;: user.name,
      &quot;identifier&quot;: user.identifier
    ]
    let userJSON = JSON(userDict)
    db.create(userJSON) {  (id, revision, doc, error) in
      if let error = error {
        handler(nil, nil, nil, error)
        return
      } else {
        handler(id, revision, doc, nil)
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also separated HTTP request methods into routers. First, I created &lt;code&gt;UserRouter&lt;/code&gt; to handle HTTP requests for users and I only wrote one post method to get user data in the body.&lt;code&gt;UserRouter&lt;/code&gt; class is like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Foundation
import Kitura
import CouchDB
import SwiftyJSON

public class UserRouter {
  var db: DatabaseInteraction

  public init(db: DatabaseInteraction) {
    self.db = db
  }

  public func bindAll(to router: Router) {
    addCreateUser(to: router)
  }

  private func addCreateUser(to router: Router) {
    router.post(&quot;/user/&quot;, handler: { req, res, next in
      guard let parsedBody = req.body else {
        res.status(.badRequest)
        next()
        return
      }
      switch(parsedBody) {
        case .json(let jsonBody):
          let name = jsonBody[&quot;name&quot;].string ??
          let user = User(name: name, identifier: &quot;\(name.characters.count)&quot;)
          self.db.addNewUser(user) { (id, revision, doc, error) in
            if let error = error {
              res.status(.internalServerError)
              next()
            } else {
              res.status(.OK)
              if let doc = doc {
                res.send(json: doc)
              } else {
                res.send(&quot;Something is wrong in the doc&quot;)
              }
              next()
            }
          }
        default:
          res.status(.badRequest)
          next()
      }
    })
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After that, I created the main router to manage separate routing operations from here. Here is the &lt;code&gt;BackendRouter&lt;/code&gt; as the main router object:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Foundation
import Kitura

public class BackendRouter {
  public let router = Router()
  var db: DatabaseInteraction
  public init(db: DatabaseInteraction) {
    self.db = db
    router.get(&quot;/status&quot;) { req, res, callNextHandler in
      res.status(.OK).send(&quot;Everything is working&quot;)
      callNextHandler()
    }

    router.all(&quot;*&quot;, middleware: BodyParser())
    self.routeToUser()
  }

  func routeToUser() {
    let user = UserRouter(db: self.db)
    user.bindAll(to: self.router)
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, I connected all of them in the &lt;code&gt;main.swift&lt;/code&gt; file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import Kitura
import HeliumLogger
import CouchDB

HeliumLogger.use()

let connProperties = ConnectionProperties(
    host: &quot;127.0.0.1&quot;,  // httpd address
    port: 5984,         // httpd port
    secured: false,     // https or http
    username: &quot;admin&quot;,  // admin username
    password: &quot;password&quot;// admin password
)

let db = Database(connProperties: connProperties, dbName: &quot;swift_backend_test_db&quot;)
let databaseInteraction = DatabaseInteraction(db: db)
let app = MainRouter(db: databaseInteraction)

Kitura.addHTTPServer(onPort: 8090, with: app.router)
Kitura.run()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So, let’s see how the overall folder structure looks right now.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SwiftBackend
  .gitignore
  |--Sources
    BackendRouter.swift
    DatabaseInteraction.swift
    main.swift
    User.swift
    UserRouter.swift
  |--Tests
  Package.swift
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After all coding, it was time to build the API and send a request via Postman. I got success after some trials. (Note: Be careful about connection properties and escaping closures). Of course, there are a lot of things to improve in code. But all these codes were intended to create a working backend API developed with Swift.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;/unit-tests-in-server-side-swift/&quot;&gt;In the next post&lt;/a&gt;, I made this project testable and Dockerized. There are some points to be careful while making it testable.&lt;/p&gt;
&lt;p&gt;As a final step, I’ll try to upload it to the cloud. But my first impression was really good. I should say that I am convinced to work on the backend side of Swift. It’s pretty easy. I’m working with SublimeText instead of Xcode. Thus, I can understand each line I wrote without auto-completion. If you’re working with Swift, you should definitely try to create some backend APIs with Swift.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/new-horizons-with-server-side-swift/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/new-horizons-with-server-side-swift/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Using Firebase Cloud Messaging for Remote Notifications in iOS</title><link>https://candost.blog/using-firebase-cloud-messaging-for-remote-notifications-in-ios/</link><guid isPermaLink="true">https://candost.blog/using-firebase-cloud-messaging-for-remote-notifications-in-ios/</guid><description>Firebase gives you the tools and infrastructure you need to build better apps and grow successful businesses. It provides several features divided into three groups develop, grow and earn.</description><pubDate>Sat, 05 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let’s talk about Firebase a little bit first.&lt;/p&gt;
&lt;p&gt;On the Firebase website, it says, “Firebase gives you the tools and infrastructure you need to build better apps and grow successful businesses.”. It provides several features divided into three groups &lt;strong&gt;develop&lt;/strong&gt;, &lt;strong&gt;grow,&lt;/strong&gt; and &lt;strong&gt;earn,&lt;/strong&gt; and all of them are connected to Analytics. It doesn’t matter which feature you are using; you’ll get Analytics for free. Features inside Grow and Earn groups are completely free. Actually, only 4 of the 15 features in total are paid. You can check them out &lt;a href=&quot;https://firebase.google.com/features/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/Pasted%20image%2020230722223051.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Firebase Cloud Messaging (FCM)&lt;/h2&gt;
&lt;p&gt;Cloud Messaging is one of the cool free features of Firebase. It’s easy to fire push notifications from the server to FCM, and it handles the rest for iOS, Android, and the Web. I will skip the setup in this post. You can follow the well-written &lt;a href=&quot;https://firebase.google.com/docs/cloud-messaging/ios/client&quot;&gt;setup guide&lt;/a&gt; and add Firebase to your project.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/posts/firebase/Pasted%20image%2020230722223102.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can connect to Firebase Cloud Messaging via Firebase Console or an app server. Firebase Console is pretty easy, but it’s a manual job. I’ll cover the app server side in this post. There are &lt;strong&gt;three&lt;/strong&gt; ways to send notifications via Firebase. You can send notifications to &lt;strong&gt;one device&lt;/strong&gt; or &lt;strong&gt;device groups,&lt;/strong&gt; or &lt;strong&gt;topics&lt;/strong&gt;. I would like to send notifications to all devices of a specific user, and I don’t want to store tokens. I’ll skip sending notifications to only one device way in here. Also, device groups are used for grouping one user’s all devices. In this way, you can send notifications to all devices of one user. So, both of them require storing tokens. Firebase suggests using device groups if you need to send messages to multiple devices per user. But as I said, I don’t want to store tokens. So I’m going to focus on only topics in this post. If you prefer storing tokens and dealing with them, you can use two other ways.&lt;/p&gt;
&lt;p&gt;What is a &lt;strong&gt;topic&lt;/strong&gt;? The topic is based on publish/subscribe model. Each device can subscribe to different topics. The server sends a request to topics. FCM handles the rest, and all subscribed devices get notifications. Such an easy and powerful way. But as with every service, it has pros and cons. Topics are not optimized for fast delivery. So there can be latency between sending notifications and receiving them. Topics are optimized for throughput.&lt;/p&gt;
&lt;h2&gt;Real-Life Scenarios&lt;/h2&gt;
&lt;p&gt;We have a microservice that creates push payloads when it receives an event. Our lovely pusher has no idea about client devices and doesn’t have any storage. When a new event occurs on underlying systems, it gets notified. Then it sends notifications to mobile platforms.&lt;/p&gt;
&lt;p&gt;Our pusher sends an HTPP request to FCM. You can learn more about the server implementation of FCM &lt;a href=&quot;https://firebase.google.com/docs/cloud-messaging/server&quot;&gt;here&lt;/a&gt;. Our basic request structure is like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=SERVER_API_KEY

{
  &quot;condition&quot;: &quot;&apos;condition1&apos; in topics &amp;amp;amp;&amp;amp;amp; &apos;condition2&apos; in topics&quot;,
  &quot;notification&quot;: {
      &quot;category&quot;: &quot;notification_category&quot;,
      &quot;title_loc_key&quot;: &quot;notification_title&quot;,
      &quot;body_loc_key&quot;: &quot;notification_body&quot;,
      &quot;badge&quot;: 1
  },
  &quot;data&quot;: {
    &quot;data_type&quot;: &quot;notification_data_type&quot;,
    &quot;data_id&quot;: &quot;111111&quot;,
    &quot;data_detail&quot;: &quot;FOO&quot;,
    &quot;data_detail_body&quot;: &quot;BAR&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This request sends proper structure to APNs via FCM. You can learn more about notification payload keys and their value types more from &lt;a href=&quot;https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support&quot;&gt;here&lt;/a&gt;. Also, you can put your extra information to process in your app in the “data” section. In the request, you’ll see the &lt;strong&gt;condition&lt;/strong&gt; key. It’s used to send push notifications to &lt;strong&gt;topics&lt;/strong&gt;. Every condition is a topic here. This request sends notifications to devices that subscribed to &lt;em&gt;condition1&lt;/em&gt; and &lt;em&gt;condition2&lt;/em&gt;. We can use different conditions there. For instance, we can use &lt;strong&gt;&lt;code&gt;||&lt;/code&gt;&lt;/strong&gt; instead of &lt;strong&gt;&amp;amp;&amp;amp;&lt;/strong&gt;. In that case, FCM sends notifications to devices that subscribe to &lt;em&gt;condition1&lt;/em&gt; or &lt;em&gt;condition2&lt;/em&gt;. It’s possible to combine topics and create complex conditions like &lt;em&gt;condition1 &amp;amp;&amp;amp; (condition2 &lt;code&gt;||&lt;/code&gt; condition3)&lt;/em&gt;. The only limitation is only one operator is allowed at a high level. It’s not possible to create conditions like &lt;em&gt;condition1 &amp;amp;&amp;amp; condition1 &amp;amp;&amp;amp; condition3&lt;/em&gt;; it has to be grouped.&lt;/p&gt;
&lt;p&gt;We have enough information about the server and FCM. Let’s move to the iOS side. (I won’t get into the notification handling. It’s completely another topic.)&lt;/p&gt;
&lt;p&gt;FCM makes everything so much easier on the iOS side. There are a couple of things to do. After creating your APNs certificates and completing the necessary steps in the setup guide, you should configure your app for FCM. To do that, add this line &lt;code&gt;FIRApp.configure()&lt;/code&gt; in your &lt;code&gt;AppDelegate&lt;/code&gt;’s &lt;code&gt;application:didFinishLaunchingWithOptions:&lt;/code&gt; method. This method configures your app using &lt;code&gt;GoogleService-Info.plist&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;Firebase uses method-swizzling to map the APNs token to the FCM registration token. Also, for capturing analytics about delivery information of messages. I prefer disabling swizzling and handling these steps by myself. To disable swizzling, you need to set &lt;code&gt;FirebaseAppDelegateProxyEnabled&lt;/code&gt; key to &lt;code&gt;NO&lt;/code&gt; in your application &lt;code&gt;Info.plist&lt;/code&gt; file. From now on, we will be responsible for APNS key mapping and analytics data. Let’s map the APNS token to the FCM token first. Here’s how to do it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;func application(_ application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  #if PROD_BUILD
    FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: .prod)
  #else
    FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: .sandbox)
  #endif
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The important thing here is &lt;code&gt;FIRInstanceIDAPNSTokenType&lt;/code&gt;. There are three types available &lt;code&gt;.prod&lt;/code&gt;, &lt;code&gt;.sandbox&lt;/code&gt; and &lt;code&gt;.none&lt;/code&gt;. To get a notification, one of the Production or Sandbox token types must be used.&lt;/p&gt;
&lt;p&gt;The last thing we have to do without method swizzling is sending message analytics to FCM. So, we’ll be able to use Analytics from Firebase Console. Here’s how to do it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;func application(_ application: UIApplication,
        didReceiveRemoteNotification userInfo: [AnyHashable : Any],
                 fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -&amp;gt; Swift.Void) {
    FIRMessaging.messaging().appDidReceiveMessage(userInfo)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We set up FCM, mapped our token to the FCM token, and sent message analytics. The last thing remaining is subscribing to topics. To subscribe to a new topic is really easy. It’s just one line:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FIRMessaging.messaging().subscribe(toTopic: &quot;/topics/condition1&quot;)
// Don&apos;t forget to add /topics/ prefix while subscribing
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If there is no topic in FCM, it creates a new topic automatically when you’ve subscribed. As you remember, we talked about combining topics in our HTTP request’s &lt;strong&gt;condition&lt;/strong&gt; key. Also, on the app side, we can subscribe to &lt;strong&gt;multiple topics&lt;/strong&gt; to get more notifications.&lt;/p&gt;
&lt;p&gt;Let’s get back to our case. We would like to send new notifications to a specific user. To do that, we created topics using unique user ids. It sounds like misusing topics, but it was the only way in our case. Each user subscribes to a topic named something like “userID_11111”. And in our lovely pusher, we used user ids in condition.&lt;/p&gt;
&lt;p&gt;Most of the apps have user login and logout cases. When users log out, you don’t want to send them notifications. To cover these cases, you can unsubscribe from topics. FCM removes that device token from a topic list (The topic always will be there. You cannot delete topics). Unsubscribing is similar to subscribing:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FIRMessaging.messaging().unsubscribe(fromTopic: &quot;/topics/condition1&quot;)
// Don&apos;t forget to add /topics/ prefix while unsubscribing
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We covered sending push notifications and FCM topics until now. FCM is really powerful and easy. But like any other service, we faced some problems.&lt;/p&gt;
&lt;h2&gt;Problems&lt;/h2&gt;
&lt;p&gt;The first problem is subscribing to a new topic can take some time on FCM. If you don’t get notification directly after subscribing, you should wait a couple of minutes.&lt;/p&gt;
&lt;p&gt;The other problem is handling push notifications was different on the Android side. If you want to create nice custom notifications, you should send a different payload. In the above HTPP request, we had &lt;strong&gt;notification&lt;/strong&gt; and &lt;strong&gt;data&lt;/strong&gt; keys. If the Android app gets a notification key, it has no control over it. It cannot customize notifications, and the device displays default notifications with the given title and body. To create a custom-style notification, they need to use the &lt;strong&gt;data&lt;/strong&gt; key and create notification. When we were faced with this solution, we came up with an idea for &lt;strong&gt;iOS&lt;/strong&gt; and &lt;strong&gt;android&lt;/strong&gt; topics. We created two more topics. iOS devices subscribe to the &lt;strong&gt;iOS&lt;/strong&gt; topic, Android devices subscribe to the &lt;strong&gt;Android&lt;/strong&gt; topic. Our lovely pusher sends two requests for each event. For Android, our &lt;strong&gt;condition&lt;/strong&gt; key’s value is &lt;em&gt;“‘userID_1111’ in topics &amp;amp;&amp;amp; ‘android’ in topics”&lt;/em&gt; and it has no &lt;strong&gt;notification&lt;/strong&gt; key. For iOS, it is &lt;strong&gt;&lt;code&gt;&quot;&apos;userID_1111&apos; in topics &amp;amp;&amp;amp; &apos;iOS&apos; in topics&quot;&lt;/code&gt;&lt;/strong&gt;. Maybe it’s not the perfect way to handle these cases. But it’s working very well, and we don’t care about device token handling. If you have better ideas or ways, please let me know.&lt;/p&gt;
&lt;p&gt;The last problem is configuring sandbox and production types for Firebase. Most of the iOS apps don’t have a separate target for different release modes. For different configurations like Debug, Test, and Release, you have to set up different apps in Firebase Console. Then, you’ll have a separate GoogleService-Info.plist for different configurations. Renaming them and configuring Firebase with these files won’t work. The only solution I can find is running a script. Put different .plist files for different Firebase apps under separate folders. You can name them like prod, beta, etc., and run the following script before Compile Sources in Build Phases in your app target. (Don’t forget to configure the below script with your folder naming and path)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;isRelease=`expr &quot;$GCC_PREPROCESSOR_DEFINITIONS&quot; : &quot;.*release=\([0-9]*\)&quot;`
RESOURCE_PATH=${SRCROOT}/firebase/beta
if [ $isRelease = 1 ]; then
  RESOURCE_PATH=${SRCROOT}/firebase/release
fi
BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
echo &quot;Copying all files under ${RESOURCE_PATH} to ${BUILD_APP_DIR}&quot;
cp -v &quot;${RESOURCE_PATH}/&quot;* &quot;${BUILD_APP_DIR}/&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This script takes the located config files (GoogleService-Info.plist) according to the app build configuration. And duplicates it to the build app directory before compiling sources. Then, Firebase will identify the .plist file as identical, like there is only one file. You can configure the script and copy only .plist files. Logic is the same.&lt;/p&gt;
&lt;p&gt;This is it. Easy setup, easy configuration. The possibility of using FCM with other features of Firebase gives a lot more advantages. Maybe this will be the subject of other posts.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/using-firebase-cloud-messaging-for-remote-notifications-in-ios/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/using-firebase-cloud-messaging-for-remote-notifications-in-ios/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Categories and Using Objects with Categories in Objective-C</title><link>https://candost.blog/categories-and-using-objects-with-categories-in-objective-c/</link><guid isPermaLink="true">https://candost.blog/categories-and-using-objects-with-categories-in-objective-c/</guid><pubDate>Sat, 25 Oct 2014 11:33:00 GMT</pubDate><content:encoded>&lt;p&gt;There is an effective way to add a property to a category. These are called runtime objects. If you want to add functionality or property to existing class, you should implement category. In this way, class stays stable and you can do what you want. First I&apos;ll talk about categories in Objective-C. After that, I will try to explain using categories with extra properties.&lt;/p&gt;
&lt;h2&gt;Categories&lt;/h2&gt;
&lt;p&gt;Assume that you have a framework and you want to add some functionalities to one class of it. For example, consider NSString class which one of the source code access is restricted classes. How can you add a new method to NSString without using categories? Let&apos;s write some code.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; @interface NSString (SomeAdditions)
 @end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here you can see declaration of category which is written for NSString. Similar declaration with class, we use @interface and class name. But we give a name to this category and this name should be in brackets. Let&apos;s give a functionality to NSString class with this category.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; @interface NSString (SomeAdditions)
 - (void)removeSpaces;
 @end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In this way, we added a method to this category. Here we say this method removes white-spaces from string (NSString class have some methods to handle this situation but this is just an example). We will implement this method now.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; #import &quot;NSString + SomeAdditions.h&quot;

 @implementation NSString (SomeAdditions)

 - (NSString *)removeSpaces {
   NSString *removedSpacesString = [self stringByReplacingOccurrencesOfString:@&quot; &quot; withString:@&quot;&quot;];
   return removedSpacesString;
 }
 @end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, we can use removeSpaces method in our classes which have&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; #import &quot;NSString + SomeAdditions.h&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Runtime Objects with Categories&lt;/h2&gt;
&lt;p&gt;We can use methods to add some functionalities but what about adding a property to an existing class? Adding a property to class is not usual actually. Because, in real word you shouldn&apos;t add property to NSString class. On the other way, you can get into some situations to add some properties to a framework. When you want to do that, you have to use runtime objects. I added a property to the SomeAdditions category in header file. Normally, in this way you can&apos;t add a property to category in this way. Actually, you have to implement property&apos;s set and get methods.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; @interface NSString (SomeAdditions)

 @property (nonatomic, strong) NSString *stringTag;

  - (void)removeSpaces;

 @end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, let&apos;s implement set and get methods of this property in .m file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; #import &quot;NSString + SomeAdditions.h&quot;

 static const char *stringTagKey = &quot;stringTagRuntimeTag&quot;;

 @implementation SomeClass (ExtraStorage)

 - (NSString *)stringTag {
   return objc_getAssociatedObject(self, stringTagKey);
 }

 - (void)setStringTag:(NSString *)stringTag {
     objc_setAssociatedObject(self, stringTagKey, stringTag, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In this way, we are created a runtime object. It actually created at runtime not build time. This is a kind of workaround of SDK.&lt;/p&gt;
&lt;p&gt;If you have any questions, please feel free to write a comment.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/categories-and-using-objects-with-categories-in-objective-c/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/categories-and-using-objects-with-categories-in-objective-c/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>To Model and Animate a 3D Ball-and-Stick Man in OpenGL</title><link>https://candost.blog/to-model-and-animate-3d-ball-and-stick-man-in-opengl/</link><guid isPermaLink="true">https://candost.blog/to-model-and-animate-3d-ball-and-stick-man-in-opengl/</guid><pubDate>Wed, 23 Apr 2014 09:33:00 GMT</pubDate><content:encoded>&lt;p&gt;This assignment is given in Computer Graphics Lecture in Ankara University. This is assignment #2. To complete this assignment, a little bit OpenGL knowledge is required.
Task is to model and animate a 3D ball-and-stick man according to the sketch given on the right:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The body, neck, upper/lower arms and legs should be constructed from scaled cylinders.&lt;/li&gt;
&lt;li&gt;The head should be constructed from a sphere.&lt;/li&gt;
&lt;li&gt;Spheres of appropriate size should be placed to joints (marked with red on the sketch) so that there won’t be any gaps when these joints are animated.&lt;/li&gt;
&lt;li&gt;The arms should comprise two parts (upper and lower arms) but legs should be a single part (i.e. without knees).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You do not have to make your stick man particularly realistic; however, you should shade and light it suitably. After you produce the model, you should implement the following user interaction features:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Left and right arrow keys should move the camera long the horizontal axis.&lt;/li&gt;
&lt;li&gt;Up and down arrow keys should move the camera along the vertical axis.&lt;/li&gt;
&lt;li&gt;Left mouse click should initiate a waving animation sing either one or two arms. The animation should continue until a second left click.&lt;/li&gt;
&lt;li&gt;Right Mouse click should make the model walk along any axis of your choice. The animation should stop if the user clicks on the right mouse button again. During walk animation, the arms may remain steady but the legs should move properly while the model is being translated. This means that the model can wave while walking or the camera can be move while the model is being animated.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here is the code with comments. But there is no light or shadow effect. If you have any problem, please feel free to write comment.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; #include &amp;lt;stdio.h&amp;gt;
 #include &amp;lt;stdlib.h&amp;gt;
 #include &amp;lt;math.h&amp;gt;
 #include &amp;lt;glut.h&amp;gt;

 int rightHandAngle = 180; // Angle of lower right hand
 bool mouseLeftState = false; // Is left mouse clicked?
 bool mouseRightState = false; // Is right mouse clicked?
 int rightHandMove = 2; // If left mouse clicked, right hand will rotate 2 degrees.
 int leftLegMove = 1; // If right mouse clicked, left leg will move by 1.
 int rightLegMove = -1; // If right mouse clicked, right leg will move by 1.
 int leftLegAngle = 90; // If right mouse clicked, this variable will be used to rotate left leg and it initialized to 90 degrees for first position of leg.
 int rightLegAngle = 90; // If right mouse clicked, this variable will be used to rotate right leg and it initialized to 90 degrees for first position of leg.
 float zMove = 0.0; // If right mouse clicked, this variable will be used to change position of object. Object will move on z-axis.

 void display() {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

      glPushMatrix(); //BODY
      glColor3f(1.0, 0.647, 0.0);
      glTranslatef(0.0, 221, zMove);
      glRotatef(90, 1.0, 0.0, 0.0);
      GLUquadricObj* body = gluNewQuadric();
      gluQuadricDrawStyle(body, GLU_FILL);
      gluCylinder(body, 120, 120, 300, 30, 30);
      glPopMatrix();

      glPushMatrix(); //LEFT UPPER ARM
      glColor3f(0.180f, 0.545f, 0.341f);
      glTranslatef(-80, 160, zMove);
      glRotatef(-45, 0.0, 0.0, 1.0);
      glRotatef(90, 1.0, 0.0, 0.0);
      GLUquadricObj* leftUpperArm = gluNewQuadric();
      gluQuadricDrawStyle(leftUpperArm, GLU_FILL);
      gluCylinder(leftUpperArm, 16, 16, 200, 30, 30);
      glPopMatrix();

      glPushMatrix(); // LEFT UPPER ARM AND BODY CONNECTION
      glColor3f(1.0, 0.0, 0.0);
      glPushMatrix();
      glTranslatef(-80.0, 160, zMove);
      glutSolidSphere(16, 30, 30);
      glPopMatrix();

      glPushMatrix(); //LEFT LOWER ARM
      glColor3f(1.0, 1.0, 0.0);
      glTranslatef(-221.5, 19.5, zMove);
      glRotatef(225, 0.0, 0.0, 1.0);
      glRotatef(90, 1.0, 0.0, 0.0);
      GLUquadricObj* leftLowerArm = gluNewQuadric();
      gluQuadricDrawStyle(leftLowerArm, GLU_FILL);
      gluCylinder(leftLowerArm, 16, 16, 200, 30, 30);
      glPopMatrix();

      glPushMatrix(); // LEFT LOWER ARM AND LEFT UPPER ARM CONNECTION
      glColor3f(1.0, 0.0, 0.0);
      glPushMatrix();
      glTranslatef(-221.5, 19.5, zMove);
      glutSolidSphere(16, 30, 30);
      glPopMatrix();

      glPushMatrix(); //RIGHT UPPER ARM
      glColor3f(0.180f, 0.545f, 0.341f);
      glTranslatef(80, 160, zMove);
      glRotatef(90, 0.0, 0.0, 1.0);
      glRotatef(90, 1.0, 0.0, 0.0);
      GLUquadricObj* rightUpperArm = gluNewQuadric();
      gluQuadricDrawStyle(rightUpperArm, GLU_FILL);
      gluCylinder(rightUpperArm, 16, 16, 200, 30, 30);
      glPopMatrix();

      glPushMatrix(); // RIGHT UPPER ARM AND BODY CONNECTION
      glColor3f(1.0, 0.0, 0.0);
      glPushMatrix();
      glTranslatef(80, 160, zMove);
      glutSolidSphere(16, 30, 30);
      glPopMatrix();

      glPushMatrix(); //RIGHT LOWER ARM
      glColor3f(1.0, 1.0, 0.0);
      glTranslatef(280, 160, zMove);
      glRotatef((GLfloat)rightHandAngle, 0.0, 0.0, 1.0);
      glRotatef(90, 1.0, 0.0, 0.0);
      GLUquadricObj* rightLowerArm = gluNewQuadric();
      gluQuadricDrawStyle(rightLowerArm, GLU_FILL);
      gluCylinder(rightLowerArm, 16, 16, 200, 30, 30);
      glPopMatrix();

      glPushMatrix(); // RIGHT LOWER ARM AND RIGHT UPPER ARM CONNECTION
      glColor3f(1.0, 0.0, 0.0);
      glPushMatrix();
      glTranslatef(280, 160, zMove);
      glutSolidSphere(16, 30, 30);
      glPopMatrix();

      glPushMatrix(); //LEFT LEG
      glColor3f(0.180f, 0.545f, 0.341f);
      glTranslatef(-35, -20, zMove);
      glRotatef(-15, 0.0, 0.0, 1.0);
      glRotatef((GLfloat)leftLegAngle, 1.0, 0.0, 0.0);
      GLUquadricObj* leftLeg = gluNewQuadric();
      gluQuadricDrawStyle(leftLeg, GLU_FILL);
      gluCylinder(leftLeg, 16, 16, 400, 30, 30);
      glPopMatrix();

      glPushMatrix(); // LEFT LEG AND BODY CONNECTION
      glColor3f(1.0, 0.0, 0.0);
      glPushMatrix();
      glTranslatef(-35, -20, zMove);
      glutSolidSphere(16, 30, 30);
      glPopMatrix();

      glPushMatrix(); //RIGHT LEG
      glColor3f(0.180f, 0.545f, 0.341f);
      glTranslatef(35, -20, zMove);
      glRotatef(15, 0.0, 0.0, 1.0);
      glRotatef((GLfloat)rightLegAngle, 1.0, 0.0, 0.0);
      GLUquadricObj* rightLeg = gluNewQuadric();
      gluQuadricDrawStyle(rightLeg, GLU_FILL);
      gluCylinder(rightLeg, 16, 16, 400, 30, 30);
      glPopMatrix();

      glPushMatrix(); // RIGHT LEG AND BODY CONNECTION
      glColor3f(1.0, 0.0, 0.0);
      glPushMatrix();
      glTranslatef(35, -20, zMove);
      glutSolidSphere(16, 30, 30);
      glPopMatrix();

      glPushMatrix(); //NECK
      glColor3f(0.0, 0.0, 0.545);
      glTranslatef(0.0, 251, zMove);
      glRotatef(90, 1.0, 0.0, 0.0);
      GLUquadricObj* neck = gluNewQuadric();
      gluQuadricDrawStyle(neck, GLU_FILL);
      gluCylinder(neck, 20, 20, 30, 30, 30);
      glPopMatrix();

      glPushMatrix(); // HEAD
      glColor3f(1.0, 0.647, 0.0);
      glPushMatrix();
      glTranslatef(0.0, 350, zMove);
      glutSolidSphere(100, 30, 30);
      glPopMatrix();


      if (mouseLeftState == true) { // If left mouse clicked right hand of object will shake its lower arm
          if (rightHandAngle &amp;gt;= 225) { // If angle is greater than 225 incrementing degree will become decrement
              rightHandMove = -rightHandMove;
          }
          else if (rightHandAngle &amp;lt;= 135){ // If angle is lower than 135 decrementing degree will become increment
              rightHandMove = -rightHandMove;
          }
          rightHandAngle = (rightHandAngle + rightHandMove) % 360; // changing angle of right hand.
      }
      if (mouseRightState == true) { // If right mouse clicked the object will ve moved and legs&apos; angles will be changed.
          if (leftLegAngle &amp;gt; 110){
              leftLegMove = -leftLegMove;
          }
          else if (leftLegAngle &amp;lt; 70){
              leftLegMove = -leftLegMove;
          }
          leftLegAngle = (leftLegAngle + leftLegMove) % 360; // Changing angle of left leg

          if (rightLegAngle &amp;gt; 110) {
              rightLegMove = -rightLegMove;
          }
          else if (rightLegAngle &amp;lt; 70){
              rightLegMove = -rightLegMove;
          }
          rightLegAngle = (rightLegAngle + rightLegMove) % 360; // Changing angle of right leg
          zMove += 1.5f; // Moving object on the z-axis
      }
     glutSwapBuffers();
 }
 void keyboard(unsigned char key, int x, int y) {
     if (key == 27) // exit when user hits &amp;lt;esc&amp;gt;
         exit(EXIT_SUCCESS);
 }

 void rotate(int key, int x, int y) {
     if (key == GLUT_KEY_LEFT){
         glRotatef(-1, 0.0, 1.0, 0.0);    // Rotates left by 1 degree
         glutPostRedisplay();
     }
     if (key == GLUT_KEY_RIGHT){

         glRotatef(1, 0.0, 1.0, 0.0);    // Rotates right by 1 degree
         glutPostRedisplay();
     }
     if (key == GLUT_KEY_UP){
         glRotatef(1, 1.0, 0.0, 0.0);    // Rotates up by 1 degree
         glutPostRedisplay();
     }
     if (key == GLUT_KEY_DOWN){
         glRotatef(-1, 1.0, 0.0, 0.0);    // Rotates down by 1 degree
         glutPostRedisplay();
     }
 }

 void mouse(int button, int state, int x, int y){
     if (GLUT_LEFT_BUTTON == button &amp;amp;&amp;amp; state == GLUT_DOWN &amp;amp;&amp;amp; mouseLeftState == false){ // If left button is clicked, left state will be true for shaking lower arm
         mouseLeftState = true;
     }
     else if (GLUT_LEFT_BUTTON == button &amp;amp;&amp;amp; state == GLUT_DOWN &amp;amp;&amp;amp; mouseLeftState == true){ // If left button is clicked again, left state will be false and shaking will stop.
         mouseLeftState = false;
     }
     else if (GLUT_RIGHT_BUTTON == button &amp;amp;&amp;amp; state == GLUT_DOWN &amp;amp;&amp;amp; mouseRightState == false){ // If right button is clicked again, moving of object and rotation of legs will stop.
         mouseRightState = true;
     }
     else if (GLUT_RIGHT_BUTTON == button &amp;amp;&amp;amp; state == GLUT_DOWN &amp;amp;&amp;amp; mouseRightState == true){ // If right button is clicked, right state will be true and moving object and rotation of legs will start
         mouseRightState = false;
     }
 }

 void timer(int notUsed) { // Timer is for animation. This function provides us to redisplay all objects by every 100 miliseconds
     glutPostRedisplay();
     glutTimerFunc(100, timer, 0);
 }

 int main(int argc, char *argv[]) {
     glutInit(&amp;amp;argc, argv);
     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
     glEnable(GL_DEPTH_TEST); // Hidden surface removal
     glutInitWindowSize(1200, 700);
     glutCreateWindow(argv[0]);
     glClearColor(0.0, 1.0, 1.0, 0.0);
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
     glOrtho(-750.0, 750.0, -500.0, 500.0, -500.0, 500.0); // Changing the coordinate system.
     glutDisplayFunc(display);
     glutSpecialFunc(rotate);
     glutKeyboardFunc(keyboard);
     glutMouseFunc(mouse);
     timer(0);
     glutMainLoop();
     return EXIT_SUCCESS;
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/to-model-and-animate-3d-ball-and-stick-man-in-opengl/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/to-model-and-animate-3d-ball-and-stick-man-in-opengl/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>FTP File Operations on Apache Commons Net Library in Java</title><link>https://candost.blog/ftp-file-oeprations-on-apache-commons-net-library-in-java/</link><guid isPermaLink="true">https://candost.blog/ftp-file-oeprations-on-apache-commons-net-library-in-java/</guid><pubDate>Sun, 18 Aug 2013 11:33:00 GMT</pubDate><content:encoded>&lt;p&gt;The main idea was ‘keep it simple’. Apache Commons Net Library also has functions to file operations. But &lt;code&gt;FTPFileOperations&lt;/code&gt; class usage is easy. The class have copy directory, and list files of specific directory which they are not in Apache Commons Net Library.&lt;/p&gt;
&lt;p&gt;Firstly, &lt;code&gt;baglantiAc&lt;/code&gt; function is to open an FTP connection and to enter the FTP directory with specific username and password. This function takes three arguments. First argument is address of server, second is username and the last one is password of user. baglantiAc function is public and calls &lt;code&gt;sunucuyaBaglan&lt;/code&gt; and &lt;code&gt;kullaniciGirisi&lt;/code&gt; functions. This function also checks the connection after connected to server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sunucuyaBaglan&lt;/code&gt; function takes one argument which is address of server. If an error occurs when connecting to server, the exception will throw.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;kullaniciGirisi&lt;/code&gt; function takes two arguments which are username and password. This function provides login to server with a username and password. The function also checks the connection is already exist and robust.&lt;/p&gt;
&lt;p&gt;Secondly, &lt;code&gt;baglantiKapat&lt;/code&gt; function is to close an FTP connection. This function calls two functions. One of them is &lt;code&gt;kullaniciCikisi&lt;/code&gt; and the other is &lt;code&gt;sunucuylaBaglantiyiKes&lt;/code&gt;.
&lt;code&gt;kullaniciCikisi&lt;/code&gt; function takes no argument. The function is used for logout from current user.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sunucuylaBaglantiyiKes&lt;/code&gt; function takes no argument. The function is used for close the connection. If an error occurs when closing connection, appropriate exceptions will be throwing.
Projects main functions are file operation functions which they are &lt;code&gt;dosyaYukle&lt;/code&gt;, &lt;code&gt;dosyaIndir&lt;/code&gt;, &lt;code&gt;dizinKopyala&lt;/code&gt;, &lt;code&gt;dosyaVeyaDizinSil&lt;/code&gt;, &lt;code&gt;dosyalariListele&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dosyaYukle&lt;/code&gt; function is to use upload a file to given directory on the FTP server. If the address is not exist, the function creates this directory on FTP server. If the directory exists on the FTP server directory, the files are just putted in there. Files which they wanted to upload must be named and list of names must give as parameter to function. This function has Boolean return type. If the process is done successfully, function will return true.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dizinKopyala&lt;/code&gt; function is copy a directory from given address to other directory which is given as parameters. Copy process is processing on FTP server. Source and destination addresses are absolutely on FTP server. The function not copies a directory from computer to FTP server or reverse. &lt;code&gt;dizinKopyala&lt;/code&gt; function is working very simple. The function downloads the directory to computer, and uploads this directory the given destination. When this process is done successfully, the function deletes the directory on the computer. To download a directory from FTP server, the function use &lt;code&gt;dosyaIndir&lt;/code&gt; function. To upload a directory to FTP server, the function use &lt;code&gt;dosyaYukle&lt;/code&gt; function. To delete a directory on the computer, the function use &lt;code&gt;dosyaVeyaDizinSil&lt;/code&gt; function. At the end of function, the function checks the directories copied successfully or not. If the process is done successfully, function will return true.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dosyaVeyaDizinSil&lt;/code&gt; function is deletes a directory or a file from given address. Apache Commons Net library has removeDirectory and &lt;code&gt;deleteFile&lt;/code&gt; functions. But &lt;code&gt;removeDirectory&lt;/code&gt; function is not deletes a directory which include files or directories. &lt;code&gt;dosyaVeyaDizinSil&lt;/code&gt; function provides a directory which includes directories, and files. In the function, Apache Commons Net functions are used. Firstly, function goes into the directory innermost and deletes all files. After that function goes to parent directory and deletes the directory which is empty. In this working logic, directories can delete successfully. If the process is done successfully, function will return true.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dosyalariListele&lt;/code&gt; function is listing files on current directory. The function returns a list of string. This list contains names of files on current directory. To compose this list, function gets the file and takes the name and adds to the list.&lt;/p&gt;
&lt;p&gt;There are some assistant functions. &lt;code&gt;sunucuyaBaglan&lt;/code&gt;, &lt;code&gt;sunucuylaBaglantiyiKes&lt;/code&gt;, &lt;code&gt;kullaniciGirisi&lt;/code&gt;, &lt;code&gt;kullaniciCikisi&lt;/code&gt;, &lt;code&gt;baglantiyiKontrolEt&lt;/code&gt; functions are assistant functions. I mentioned them before except baglantiyiKontrolEt.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;baglantiyiKontrolEt&lt;/code&gt; function takes no argument and returns boolean value. This function checks the connection is still working and robust. If the connection is broken, this function calls &lt;code&gt;sunucuylaBaglantiyiKes&lt;/code&gt; function and returns false. So system will stop.&lt;/p&gt;
&lt;p&gt;Here is the source code and comments are also added in Turkish.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.net.SocketException;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.net.ftp.FTPClient;
 import org.apache.commons.net.ftp.FTPClientConfig;
 import org.apache.commons.net.ftp.FTPFile;
 import org.apache.commons.net.ftp.FTPReply;
 /**
  * FTP sunucudan dosya indiren, sunucuya dosya yukleyen, sunucudaki dosyalari kopyalayan,
  * sunucudaki dosyalari listeleyebilen ve silen siniftir.
  *
  * @author Candost Dağdeviren
  * */
 public class FTPDosyaIslemleri {
  private FTPClient ftp = new FTPClient();
  private String olusacakKlasor=&quot;FTPDOSYAISLEMLERI&quot;;
  private String adres=&quot;C:\\Documents and Settings\\candost\\Desktop&quot;;
  /**
  * Projenin bulundugu dizinde null adında bir klasor olusturuyor.
  * Bu null adli klasorun linki buraya set edilmelidir.
  * */
  private String geciciAdres = &quot;C:\\Documents and Settings\\candost\\workspace\\ftpd\\null&quot;;
  /**
  * ORNEK KULLANIM:
  * baglantiAc(&quot;127.0.0.1&quot;, &quot;candost&quot;, &quot;12345&quot;);
  * dosyaIndir(dosyaListesi);
  * dosyaSil(&quot;deneme1&quot;);
  * dosyaYukle(dosyaListesi, &quot;deneme1&quot;+File.separator+&quot;denemeAlt&quot;);
  * dizinKopyala(&quot;C:\\Documents and Settings\\candost\\Desktop\\deneme&quot;, &quot;C:\\Documents and Settings\\candost\\workspace&quot;);
  * baglantiyiKapat();
  */
  /**
  * Degiskenlerin baslangic degerlerini ayarlayan yapici fonksiyondur.
  * */
  FTPDosyaIslemleri(){
  setKaynakAdres(&quot;C:\\Documents and Settings\\candost\\Desktop&quot;);
  setOlusacakKlasor(&quot;deneme&quot;);
  }
  /**
  * Sunucu uzerinden dosya indirebilen fonksiyondur. Indirilen dosyalar proje klasorunun icerisine indirilir.
  * Olusturulmasi istenilen klasor ismi &amp;lt;code&amp;gt;setOlusacakKlasor(&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;)&amp;lt;/code&amp;gt; fonksiyonu
  * ile belirlenmelidir.
  * @param dosyaListe indirilmesi istenilen dosyalarin listesidir.
  * @return boolean indirip indirilmedigini &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt; olarak döndürür.
  * */
  @SuppressWarnings(&quot;resource&quot;)
  public boolean dosyaIndir(List&amp;lt;String&amp;gt; dosyaListe) {
  int kontrol = 0;
  for (int i = 0; i &amp;lt; dosyaListe.size(); i++) {
   new File(&quot;.&quot;+File.separator+getOlusacakKlasor()).mkdir(); //olusturulmasi istenilen klasor olusturulur.
   File dosya = new File(&quot;.&quot;+File.separator+getOlusacakKlasor()+File.separator+dosyaListe.get(i)); //Indirilecek dosya alınır.
   if (dosya.exists()) { //Eğer dosya zaten varsa, dosya indirme başarısız olur.
   return false;
   }
   OutputStream indirilenDosya;
   try {
   indirilenDosya = new FileOutputStream(dosya);
   if(!baglantiyiKontrolEt()){
    return false;     //FTP bağlantısı kontrol edilir.
   }
   ftp.retrieveFile(dosyaListe.get(i), indirilenDosya); //Bağlantı varsa indirilen dosya, belirlenen klasore yazilir.
   indirilenDosya.close();
   } catch (FileNotFoundException e) {
   e.printStackTrace();
   } catch (IOException e) {
   e.printStackTrace();
   }
   kontrol++;
  }
  return (kontrol == dosyaListe.size()) ? true : false;  //Bütün dosyalarin indirilip indirilmedigi kontrol edilir.
  }
  /**
  * Sunucuya dosya yukleyen fonksiyondur.
  * @param dosyaListesi yuklenilmesi istenilen dosyalarin listesidir
  * @param sunucuDizini dosyalarin sunucu uzerinde hangi dizine yuklenecegidir.
  * @return yuklemenin basarili olup olmamasını dondurur. Basariliysa &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, basarisizsa &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; dondurur.
  * */
  public boolean dosyaYukle(List&amp;lt;String&amp;gt; dosyaListesi, String sunucuDizini){
  if(getKaynakAdres()==null){
   return false;
  }
  FileInputStream yuklenecekDosya;
  int i=0;      //Alt dizin sayısını bulmak için.
  try {
   if(!ftp.changeWorkingDirectory(sunucuDizini)){ //istenilen dizine geçiş yapılamazsa. Yani dizin bulunmuyorsa.
   if(sunucuDizini.contains(File.separator)){ //istenilen dizinin içerisinde separator varsa yani alt dizinlere sahipse
    String[] dizinSayi = sunucuDizini.split(File.separator+File.separator); //Verilen dizinin alt dizinlerine ulaşmak için bölüyoruz.
    for(i=0;i&amp;lt;dizinSayi.length;i++){  //Bu bölümün amacı kaç tane alt dizine sahip olduğunu bulmaktır.
    if(ftp.printWorkingDirectory().equals(sunucuDizini.substring(0,sunucuDizini.lastIndexOf(File.separator)-i)))
     break;
    }
    i--;    //Fazladan for döngüsünün son kontrolünde eklediği 1&apos;i çıkarıyoruz.
    for(int j=0;i&amp;gt;=0;i--,j++){ //Alt dizinler için tek tek ağaç şeklinde dizin yaratıyoruz.
    if(!ftp.changeWorkingDirectory(ftp.printWorkingDirectory()+File.separator+dizinSayi[j])){
     ftp.makeDirectory(dizinSayi[j]);
     ftp.changeWorkingDirectory(ftp.printWorkingDirectory()+File.separator+dizinSayi[j]);
    }
    }
    for(i=0; i&amp;lt;dosyaListesi.size();i++){ //Oluşturduğumuz dizinin içerisine yüklemek istediğimiz dosyaları yüklüyoruz.
    try {
     yuklenecekDosya = new FileInputStream(getKaynakAdres()+File.separator+dosyaListesi.get(i));
     ftp.storeFile(dosyaListesi.get(i), yuklenecekDosya);
     yuklenecekDosya.close();
    } catch (FileNotFoundException e) {
     e.printStackTrace();
    }
    }
   }
   else {       //Oluşturulması istenilen dizin alt dizinlere sahip değilse. Yani sadece 1 dizinse
    ftp.makeDirectory(sunucuDizini);   //Bulunulan dizine direkt olarak istenilen dizini ekliyoruz.
    if(ftp.changeWorkingDirectory(sunucuDizini)){ //Eklediğimiz dizine geçiyoruz.
    for(i=0; i&amp;lt;dosyaListesi.size();i++){ //Oluşturduğumuz dizine dosyaları yüklüyoruz.
     try {
     yuklenecekDosya = new FileInputStream(getKaynakAdres()+File.separator+dosyaListesi.get(i));
     ftp.storeFile(dosyaListesi.get(i), yuklenecekDosya);
     yuklenecekDosya.close();
     } catch (FileNotFoundException e) {
     e.printStackTrace();
     }
    }
    }
    else{
    throw new IOException(&quot;Girdiğiniz dizin geçerli değil&quot;);
    }
   }
   }
   else{      //İstenilen dizine direkt geçiş yapabilirse
   for(i=0; i&amp;lt;dosyaListesi.size();i++){ //İstenilen dizine geçiş yaptığımız için direkt olarak dosyaları yüklüyoruz.
    try {
    yuklenecekDosya = new FileInputStream(getKaynakAdres()+File.separator+dosyaListesi.get(i));
    ftp.storeFile(dosyaListesi.get(i), yuklenecekDosya);
    yuklenecekDosya.close();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
   }
   }
   if(ftp.changeWorkingDirectory(sunucuDizini)){  //Butun dosyalarin yuklenip yuklenmedigi kontrol edilir.
   List&amp;lt;String&amp;gt; dosyalar = dosyalariListele();
   return dosyalar.equals(dosyaListesi) ? true : false;
   }
  } catch (IOException e1) {
   e1.printStackTrace();
  }
  return false;
  }
  /**
  * Sunucu uzerindeki bir dizini baska bir dizine kopyalayan fonksiyondur
  * @param dizindenKopyala kopyalanmasi istenen dizin.
  * @param dizineKopyala kopyalanacak olan dizinin nereye kopyalanacagi bilgisi.
  * @return kopyalama islemi basarili olursa &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, basarisiz olursa &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; dondurur.
  * */
  public boolean dizinKopyala(String dizindenKopyala, String dizineKopyala){
  try {
   if(ftp.changeWorkingDirectory(dizindenKopyala)){ //Dizin degistirilirse kopyalama islemi baslayabilir.
   String[] anlikDizin = dizindenKopyala.split(File.separator+File.separator); //Kopyalanacak Klasörün ismini almak için kullanılır.
   dosyaIndir(dosyalariListele());   //Kopyalanacak dizinin icerisindeki dosyalari indirir.
   ftp.changeWorkingDirectory(getGeciciAdres()); //Dosyalari tutmak icin gecici bir dizin olustururlur.
   List&amp;lt;String&amp;gt; dosyalar = dosyalariListele();  //Gecici dizindeki dosyalarin listesi alinir.
   ftp.changeWorkingDirectory(dizineKopyala);  //Kopyalanacak olan dizinin kopyalanacagi dizine gecilir.
   ftp.makeDirectory(anlikDizin[anlikDizin.length-1]); //Kopyalanacak olan dizin icin ayni isimde dizin olusturulur.
   ftp.changeWorkingDirectory(dizineKopyala+File.separator+anlikDizin[anlikDizin.length-1]); //Olusturulan dizine gecilir.
   FileInputStream fis;
   for(int i=0;i&amp;lt;dosyalar.size();i++){   //Dosyalar tek tek yeni olusturulan dizine eklenir.
    fis = new FileInputStream(dizindenKopyala+File.separator+dosyalar.get(i));
    ftp.storeFile(dosyalar.get(i), fis);
   }
   dosyaVeyaDizinSil(getGeciciAdres());    //Gecici dizin silinir.
   if(ftp.changeWorkingDirectory(dizineKopyala+File.separator+anlikDizin[anlikDizin.length-1])){ //Kopyalanmis dizine gecilir.
    List&amp;lt;String&amp;gt; kopyalanmisDosyalar = dosyalariListele();     //Kopyalanmis dizindeki dosyalarin listesi alinir.
    return kopyalanmisDosyalar.equals(dosyalar) ? true : false; //Eger ilk liste ile ayni ise islem basarilidir. Degilse basarisizdir.
   }
   }
   else    //Dizin degistirilemezse dizini bulamamis demektir.
   return false;
  } catch (IOException e) {
   e.printStackTrace();
  }
  return false;
  }
  /**
  * Silinmesi istenilen dosyanin veya dizinin silinmesini saglayan fonksiyondur.
  * @param silinecekDizin silinmesi istenilen dosyanın veya dizinin tam adres bilgisi parametresi
  * @return boolean islem basarili olursa &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, basarisiz olursa &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; dondurur.
  * @throws FileNotFoundException silinmesi istenilen dosya veya dizin bulunamazsa
  * */
  public boolean dosyaVeyaDizinSil(String silinecekDizin) throws FileNotFoundException{
  try {
   if(!ftp.changeWorkingDirectory(silinecekDizin)){ //dizin değiştirilemezse yani silinecek olan bir dosya ise
   if(silinecekDizin.contains(File.separator)){  //dosyaya gelene kadar olan kısımda separator var mı
    ftp.changeWorkingDirectory(silinecekDizin.substring(0,silinecekDizin.lastIndexOf(File.separator))); //dosyanın olduğu directory ye geliyoruz
    if(!ftp.deleteFile(silinecekDizin.substring(silinecekDizin.lastIndexOf(File.separator)+1))){ //dosyayı silemezse dosya yoktur
    throw new FileNotFoundException();
    }
    else
    return true;
   }
   else {
    ftp.deleteFile(silinecekDizin);   //Eger ana dizinden bir dosya silinecekse
    return true;
   }
   }
   else{
   FTPFile[] ftpDosyalari = ftp.listFiles();
   for(FTPFile dosya : ftpDosyalari){
    if(dosya.isFile()){    //dizin değiştirilebildiyse ve o dizindeki bir dosya silinecekse
    ftp.deleteFile(dosya.getName());
    }
    else if(dosya.isDirectory()){   //dizin değiştirilebildiyse ve o dizindeki bir klasörse
    if(ftp.removeDirectory(dosya.getName())){} // eğer klasör boşsa silsin
    else {
     dosyaVeyaDizinSil(dosya.getName());   //değilse klasörün içine geçmek için recursion kullansın ve içeriğini silsin.
    }
    }
   }
   }
   ftp.changeToParentDirectory(); //ağaç şeklinde olan dosyalarda çıkarken klasörün de silinmesi isteniyorsa o klasörün bir üst directorysine gidilir.
   if(silinecekDizin.matches(&quot;.*\\.*&quot;)){  //eğer elimizdeki adres separator içeriyorsa bölünür. yani klasör alt dizinlerden birindeyse
   ftp.removeDirectory(silinecekDizin.substring(silinecekDizin.lastIndexOf(File.separator)+1)); //silinmek istenilen directory silinir
   }
   else{
   ftp.removeDirectory(silinecekDizin);  //eğer separator yoksa direkt silinir. yani klasör ana dizindeyse
   }
   if(ftp.changeWorkingDirectory(silinecekDizin)){ //Dizinin silinip silinmedigi kontrol edilir.
   return false;
   }
   else
   return true;
  } catch (IOException e) {
   e.printStackTrace();
  }
  return false;
  }
  /**
  * O anki bulunulan dizindeki dosyalari listeleyen fonksiyondur
  * @return &amp;lt;code&amp;gt;List&amp;lt;String&amp;gt;&amp;lt;/code&amp;gt; dosyalarin listesini tutan &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;List&amp;lt;/code&amp;gt; dondurur.
  * */
  public List&amp;lt;String&amp;gt; dosyalariListele() {
  int i = 0;
  List&amp;lt;String&amp;gt; dosyaListesi = new ArrayList&amp;lt;String&amp;gt;(); //Dosyalarin isimlerinin tutulacagi degisken.
  List&amp;lt;FTPFile&amp;gt; ftpDosyalari = new ArrayList&amp;lt;FTPFile&amp;gt;(); //Dosyalarin tutulacagi liste
  try {
   FTPFile[] ftpdosyalari = ftp.listFiles();  //Dosyalar tek tek dosya listesine alinir.
   for(int j=0; j&amp;lt;ftpdosyalari.length; j++){
   ftpDosyalari.add(j,ftpdosyalari[j]);
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
  for (FTPFile ftpDosya : ftpDosyalari) {   //Dosyalarin isimleri tek tek dosya isim listesine eklenir.
   if (ftpDosya.getType() == FTPFile.FILE_TYPE) {  //Burada, dosya olarak alinanlarin gercekten dosya olup olmadigina bakilir.
   dosyaListesi.add(i, ftpDosya.getName());
   i++;
   }
  }
  return dosyaListesi;
  }
  /**
  * FTP baglantisinin acilmasini saglayan fonksiyondur
  * @param sunucuAdresi baglanilmasi istenilen sunucunun &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; olarak adres bilgisi
  * @param kullanici sunucuya baglanacak olan &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; olarak kullanici adi bilgisi
  * @param sifre sunucuya baglanacak olan kullanicinin &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; olarak sifre bilgisi
  * @return boolean baglanti basarili olarak acilirsa &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, basarisiz olursa &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; dondurur.
  * */
  public boolean baglantiAc(String sunucuAdresi, String kullanici, String sifre) {
  FTPClientConfig config = new FTPClientConfig();
     config.setLenientFutureDates(true);
     ftp.configure(config );
  return (sunucuyaBaglan(sunucuAdresi) &amp;amp;&amp;amp; baglantiyiKontrolEt() &amp;amp;&amp;amp; kullaniciGirisi(kullanici, sifre)) ? true : false;
  }
  /**
  * FTP baglantisinin sonlanmasini saglayan fonksiyondur.
  * @return boolean baglanti basarili olarak kapatilirsa true, basarisiz olursa false dondurur.
  * */
  public boolean baglantiyiKapat() {
  return (kullaniciCikisi() &amp;amp;&amp;amp; sunucuylaBaglantiyiKes()) ? true : false;
  }
  /**
  * FTP sunucusuna baglanmayi saglayan fonksiyondur
  * @param sunucuAdd sunucu adresini tutan &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; degiskenidir
  * @return boolean sunucuya baglanti basarili olursa &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, basarisiz olursa &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; dondurur.
  * */
  private boolean sunucuyaBaglan(String sunucuAdd) {
  try {
   ftp.connect(sunucuAdd);
   return true;
  } catch (SocketException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return baglantiyiKontrolEt() ? true : false;
  }
  /**
  * FTP sunucusuna kullanici girisi yapilmasini saglayan fonksiyondur.
  * @param kullaniciAdi kullanicinin adi bilgisini tutan &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; degiskenidir.
  * @param sifre kullanicinin sifre bilgisini tutan &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; degiskenidir.
  * @return boolean kullanici girisi basarili olursa &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, basarisiz olursa &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; dondurur.
  * */
  private boolean kullaniciGirisi(String kullaniciAdi, String sifre) {
  try {
   ftp.login(kullaniciAdi, sifre);
   baglantiyiKontrolEt();
   return true;
  } catch (IOException e) {
   e.printStackTrace();
  }
  return false;
  }
  /**
  * FTP sunucusuna baglanmis olan mevcut kullanicinin sunucudan cikis yapmasini saglayan fonksiyondur.
  * @return boolean eger kullanici cikisi basarili olursa &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, basarisiz olursa &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; dondurur.
  * */
  private boolean kullaniciCikisi() {
  try {
   ftp.logout();
   return true;
  } catch (IOException e) {
   e.printStackTrace();
  }
  return false;
  }
  /**
  * Kurulmus olan FTP baglantisinin hala gecerli olup olmadiginin kontrolunu saglayan fonksiyondur.
  * @return boolean eger baglanti hala gecerliyse &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, gecerli degilse &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; dondurur.
  * */
  private boolean baglantiyiKontrolEt() {
  int reply = ftp.getReplyCode();
  if (!FTPReply.isPositiveCompletion(reply)) {
   sunucuylaBaglantiyiKes();
   return false;
  }
  return true;
  }
  /**
  * FTP sunucusuyla olan baglantinin kesilmesini saglayan fonksiyondur
  * @return boolean eger baglanti basarili bir sekilde kesilirse &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, kesilmezse &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; dondurur.
  * */
  private boolean sunucuylaBaglantiyiKes() {
  try {
   ftp.disconnect();
   return true;
  } catch (IOException e) {
   e.printStackTrace();
  }
  return false;
  }
  public String getOlusacakKlasor() {
  return olusacakKlasor;
  }
  public void setOlusacakKlasor(String olusacakKlasor) {
  this.olusacakKlasor = olusacakKlasor;
  }
  public void setKaynakAdres(String kaynakAdres){
  this.adres = kaynakAdres;
  }
  public String getKaynakAdres(){
  return adres;
  }
  public String getGeciciAdres() {
  return geciciAdres;
  }
  public void setGeciciAdres(String geciciAdres) {
  this.geciciAdres = geciciAdres;
  }
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/ftp-file-oeprations-on-apache-commons-net-library-in-java/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/ftp-file-oeprations-on-apache-commons-net-library-in-java/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Zipping and Unzipping a Directory with All Contents in Java</title><link>https://candost.blog/zipping-and-unzipping-a-directory-with-all-contents-in-java/</link><guid isPermaLink="true">https://candost.blog/zipping-and-unzipping-a-directory-with-all-contents-in-java/</guid><pubDate>Thu, 15 Aug 2013 11:33:00 GMT</pubDate><content:encoded>&lt;h2&gt;Project Mechanism&lt;/h2&gt;
&lt;p&gt;There are two public methods, and four private methods. &lt;code&gt;ziptenCikar&lt;/code&gt; and &lt;code&gt;ziple&lt;/code&gt; methods are public. Other methods are private.&lt;/p&gt;
&lt;p&gt;To zip a directory or a file, there is &lt;code&gt;ziple&lt;/code&gt; method in the project. This method takes two parameters. One parameter is source directory address, and the other parameter is destination file name. This method creates a stream writing a zip file to destination folder. After that it calls &lt;code&gt;diziniZiple&lt;/code&gt; method.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;diziniZiple&lt;/code&gt; method takes two parameters. One of them is source folder address, and the other is zip stream. This method zips a directory using buffer. If the directory has subdirectories, this method can handle this situation. The method creates subdirectories of a directory and its files.&lt;/p&gt;
&lt;p&gt;To unzip a directory or a file, there is &lt;code&gt;ziptenCikar&lt;/code&gt; method in the project. This method takes two parameters. One parameter is source .zip file’s address, and the other parameter is destination directory address. The method calls &lt;code&gt;dizinBolumu&lt;/code&gt; method to check separators using correctly or not. If there is a separator end of the address, &lt;code&gt;dizinBolumu&lt;/code&gt; method tells to the &lt;code&gt;ziptenCikar&lt;/code&gt; method. &lt;code&gt;ziptenCikar&lt;/code&gt; method also calls &lt;code&gt;dizinOlustur&lt;/code&gt; method, and &lt;code&gt;dosyaCikart&lt;/code&gt; method.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dizinOlustur&lt;/code&gt; method is used for creating directories to destination directory. The method takes two parameters. One of them is destination directory, and the other one is a directory name which will be created.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dosyaCikart&lt;/code&gt; function is used for extracting files from zip file to destination directory. The method takes three parameters. One of them is Zip Input Stream to get zip files content. The other parameter is destination directory. And the last one is file’s name which will be extracted.&lt;/p&gt;
&lt;p&gt;Here is the source code and comments are also added in Turkish.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

/**
 * Kaynak gösterilen dizinin ziplenmesi hedef gösterilen dizine sıkıştırılması
 * ve kaynak gösterilen .zip dosyasının hedef gösterilen dizine çıkarılması için kullanılan sınıftır.
 *
 * @author Candost Dağdeviren
 * */
public class Zip {

 /**
 * Buffer boyutunu belirlemek için kullanılan tanımdır.
 * */
 private static final int BUFFER_BOYUTU = 4096;

 public static void main(String[] args) {
  ziple(&quot;inFolder&quot;,&quot;C:\\Documents and Settings\\candost\\Desktop\\inFolder.zip&quot;); // Ziplemek için ilk olarak kaynak daha sonra da hedef gösteriyoruz. Burada gösterdiğimiz kaynak proje dosyamızın içinde bulunmalı
  ziptenCikar(&quot;C:\\Documents and Settings\\candost\\Desktop\\inFolder.zip&quot;, &quot;inFolder&quot;); //Zipten Çıkarmak için ilk olarak kaynak daha sonra hedef dosyayı belirtiyoruz.
 }

 /**
 * Kaynak gösterilen dizinin hedef gösterilen dizine .zip uzantılı olacak şekilde sıkıştırılmasıdır.
 * @param kaynak kaynak adresi olarak gösterilen dizinin &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; değeridir.
 * @param hedef hedef adresi olarak gösterilen dizinin &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; değeridir.
 * */
 public static void ziple(String kaynak, String hedef){
  try {
   ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(hedef)); // Hedef dizinine yazmak için ZipOutputStream oluşturuluyor.
   diziniZiple(kaynak,zos);  // Hedef gösterilen dizinin sıkıştırılması işlemi
   try {
    zos.close();    // Streamin kapatılması unutulmamalıdır.
   } catch (IOException e) {
    e.printStackTrace();
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  }
 }

 /**
 * Kaynak gösterilen .zip uzantılı dosyanın içerisindeki dosya ve dizinlerin, hedef gösterilen dizine çıkartılmasıdır.
 * @param kaynak .zip uzantılı olacak şekilde, çıkarılması istenilen dosyanın &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; değeridir.
 * @param hedef içeriğin çıkarılması istenilen hedef konumun &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; değeridir.
 * */
 public static void ziptenCikar(String kaynak, String hedef){
  File kaynakDosya = new File(kaynak);    // Kaynak dosyadan okumak için File tipinde dosya oluşturulur.
  File hedefDosya = new File(hedef);     // Hedef dosyaya yazmak için File tipinde dosya oluşturulur.

  try {
   ZipInputStream zin = new ZipInputStream(new FileInputStream(kaynakDosya)); // .zip uzantılı kaynaktan okumak için oluşturulan ZipInputStream
   ZipEntry giris;
   String isim, dizin;
   while((giris = zin.getNextEntry()) != null){  // .zip uzantılı dosyadan entry alınıyor. Alınan entry giris degiskeninde tutuluyor.
    isim = giris.getName();      // Alınan entrynin adı okunuyor.
    if(giris.isDirectory()){     // Eğer entry bir klasörse yani dizinse hedef dosyada bu dizinin oluşturulması gerekiyor.
     dizinOlustur(hedefDosya,isim);   // Hedef dosyada verilen entry adında bir dizin oluşturuluyor.
     continue;        // Dizin oluşturulduktan sonra bir sonraki entry nin alınması için while döngüsünün başına dönüyoruz.
    }

    /**
    * Verilen adres seperator içerebilir. Bu separator bir klasörle dosyayı ayırmak için mi
    * yoksa boş olarak mı konulmuştur? Bunu anlamak için bu bölümü eklemek şarttır.
    * örnek:
    *   /orn/orn.txt
    *   /orn/
    * */
    dizin = dizinBolumu(isim);     // Verilen adres separator içeriyorsa ya alt dizini vardır ya da fazladan separator vardır en sonda.
    if( dizin != null){       // Eğer null değilse alt dizini var demektir
     dizinOlustur(hedefDosya,dizin);   // Alt dizinleri yaratılır.
    }
    dosyaCikart(zin,hedefDosya,isim);   // Hedef dizine istenilen dosyayı çıkarıyor.
   }
   zin.close();         // Streami kapatıyoruz. Kapatmazsak .zip uzantılı dosya hata veriyor.
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 /**
 * Verilen dizinin bütün alt dizinleri ve içerisindeki dosyalar dahil olmak üzere
 * .zip olarak sıkıştırılmasını sağlayan fonksiyondur.
 * @param ziplenecekDizin
 * */
 private static void diziniZiple(String ziplenecekDizin, ZipOutputStream zos){

  File zipDizin = new File(ziplenecekDizin);    // Ziplenecek dizin için dosya oluşturulur.
  String[] dizinListesi = zipDizin.list();    // O dosyadaki dizinlerin listesi alınır.
  byte[] okumaBuffer = new byte[BUFFER_BOYUTU];   // .zip oluşturulurken buffer işlemi yapılacağından dolayı buffer ayarlanır.
  int bytesIn = 0;
  for(int i=0; i&amp;lt;dizinListesi.length;i++){    // Dizin listesindeki her dizinin tek tek işlenmesi için döngü
   File f = new File(zipDizin, dizinListesi[i]);  // Ziplenecek dizindeki dosya için dosya oluşturulur.

   if(f.isDirectory()){        // Oluşturulan dosya eğer bir dizinse
    String filePath = f.getPath();     // Oluşturulan dizinin adresi alınır.
    diziniZiple(filePath,zos);      // Bu dizinin ziplenmesi için fonksiyon recursive olarak tekrar çağrılır.
    continue;          // Dizin ziplendikten sonra bir sonrakine geçmek için döngünün başına dönülür.
   }

   FileInputStream fis=null;       // Dizinden okumak için stream açılır
   try {
    fis = new FileInputStream(f);     // Stream oluşturulan ziplenecek dosya ile eşleştirilir.
   } catch (FileNotFoundException e1) {
    e1.printStackTrace();
   }

   ZipEntry birGiris = new ZipEntry(f.getPath());  // Zip dosyasına eklemek için bir giris degeri olusturuluyor

   try {
    zos.putNextEntry(birGiris);      // Giris degeri zip e eklenmek için stream e ekleniyor.
    while((bytesIn = fis.read(okumaBuffer))!= -1){ // Ziplenecek dosyanın streami kullanılarak buffer a bir veri okunur.
     zos.write(okumaBuffer,0,bytesIn);   // Veri okuyabildiyse bu veriyi zip dosyasına yazar.
    }
    fis.close();         // Streami kapatıyoruz.
   } catch (IOException e1) {
    e1.printStackTrace();
   }
  }
 }

 /**
 *  Verilen dizinin içerisinde separator varsa bu dizinin alt dizinleri olabilir.
 *  Eğer alt dizinleri varsa önce bu alt dizinlere ulaşmak için dizin adresinin bölünmesini sağlayan fonksiyondur.
 * @param isim bölünmesi istenilen dizinin adresidir.
 * */
 private static String dizinBolumu(String isim){
  int s = isim.lastIndexOf(File.separatorChar);  // Seperator varsa seperator&apos;den sonraki son indeks alınır. Yoksa -1 döner.
  return (s == -1) ? null : isim.substring(0,s);  // Eğer -1 ise alt dizin yoktur. -1&apos;den farklı ise alt dizin vardır ve bu alt dizinin ismi döndürülür.
 }

 /**
 * Verilen hedef dosyaya verilen isimde dizin oluşturulmasını sağlayan fonksiyondur.
 * @param hedefDosya hedef olarak belirlenen dosyadır.
 * @param dizin oluşturulmak istenilen yeni dizinin &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; değeridir.
 * */
 private static void dizinOlustur(File hedefDosya, String dizin){
  File d = new File(hedefDosya,dizin); // Hedef dosyada bir dizin oluşturmak verilen isimde için dosya oluşturulur.
  if(!d.exists()){      // Eğer dosya geçerliyse
   d.mkdirs();       // Yeni dizin oluşturulur.
  }
 }

 /**
 * .zip dosyasının içerisindeki bir dosya için verilen Stream kullanılarak
 * hedef olan dizine, verilen isimdeki dosyanın çıkartılmasını sağlayan fonksiyondur.
 * @param gir ZipInputStream tipinde, kaynak dosyanın yani .zip dosyasının içeriğini almak için kullanılır.
 * @param hedefDosya .zip dosyasının içerisindeki çıkartılması istenilen dosyanın, hedef gösterilen dizini
 * @param isim .zip dosyasının içerisindeki çıkartılması istenilen dosyadır.
 * */
 private static void dosyaCikart(ZipInputStream gir, File hedefDosya, String isim){
  byte[] buffer = new byte[BUFFER_BOYUTU];  // Dosyanın .zip içerisinden çıkartılması için yeni buffer açılır.
  BufferedOutputStream cikisBufferı = null;  // Buffer a okumak için stream açılır.
  try {
   cikisBufferı = new BufferedOutputStream(new FileOutputStream(new File(hedefDosya,isim))); // Hedef dosyaya yazılması istenilen dosya için stream atanır.
  } catch (FileNotFoundException e1) {
   e1.printStackTrace();
  }
  int sayac = -1;         // Okunulacak olan bilgi için tutulur.
  try {
   while((sayac = gir.read(buffer)) != -1)  // .zp dosyasından buffer boyutunda bilgi okunur. Okuyamazsa -1 olduğu için okuma biter.
    cikisBufferı.write(buffer,0,sayac);  // Okunulan dosya buffer aracılığıyla hedef dosyaya yazılır.

   cikisBufferı.close();      // Buffer açık unutulmamalıdır.
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/zipping-and-unzipping-a-directory-with-all-contents-in-java/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/zipping-and-unzipping-a-directory-with-all-contents-in-java/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>final in Java</title><link>https://candost.blog/final-in-java/</link><guid isPermaLink="true">https://candost.blog/final-in-java/</guid><pubDate>Mon, 04 Feb 2013 11:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Note to myself:&lt;/p&gt;
&lt;p&gt;Blank finals must be initialized in the constructor. Ex:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class A {
  private int i;

  A(int ii) {
    i = ii;
  }
}

public class MainClass {
  private final int i = 0; // Initialized final

  private final int j; // Blank final

  private final A a; // Blank final reference

  // Blank finals MUST be initialized in the constructor:
  public MainClass() {
    j = 1; // Initialize blank final
    a = new A(1); // Initialize blank final reference
  }

  public MainClass(int x) {
    j = x; // Initialize blank final
    a = new A(x); // Initialize blank final reference
  }

  public static void main(String[] args) {
    new MainClass();
    new MainClass(47);
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Java&apos;da fonksiyonu final yapınca override yapılamaz.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class A {
  final void meth() {
    System.out.println(&quot;This is a final method.&quot;);
  }
}

class B extends A {
  void meth() { // ERROR! Can&apos;t override.
    System.out.println(&quot;Illegal!&quot;);
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Java&apos;da class final yapılırsa o classtan inheritance kullanarak subclass oluşturulamaz.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/final-in-java/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/final-in-java/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>System Class in Java</title><link>https://candost.blog/system-class-in-java/</link><guid isPermaLink="true">https://candost.blog/system-class-in-java/</guid><pubDate>Mon, 04 Feb 2013 11:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Note to myself:&lt;/p&gt;
&lt;p&gt;System.arraycopy method:&lt;/p&gt;
&lt;p&gt;Copy the content of an array (source) to another array (destination), beginning at the specified position, to the specified position of the destination array.&lt;/p&gt;
&lt;p&gt;public static void arraycopy (Object source, int sourcePos, Object destination, int destPos, int length)&lt;/p&gt;
&lt;p&gt;For example, the following code uses arraycopy to copy the contents of &lt;code&gt;array1&lt;/code&gt; to &lt;code&gt;array2&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public class MainClass {

  public static void main(String[] a) {
    int[] array1 = { 1, 2, 3, 4 };
    int[] array2 = new int[array1.length];
    System.arraycopy(array1, 0, array2, 0, array1.length);

    for(int i: array2){

      System.out.println(i);
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Output:
1
2
3
4
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Redirect the output of System.out to a file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import java.io.File;
import java.io.IOException;
import java.io.PrintStream;

public class MainClass {
  public static void main(String[] args) {
    File file = new File(&quot;C:\\temp\\debug.txt&quot;);
    try {
      PrintStream ps = new PrintStream(file);
      System.setOut(ps);
    } catch (IOException e) {
    }
    System.out.println(&quot;To File&quot;);
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Loading Native Code&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public class Main {
  public static void main(String[] argv) throws Exception {

    System.loadLibrary(&quot;libraryName&quot;);
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/system-class-in-java/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/system-class-in-java/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Type Casting For Inheritance In Java</title><link>https://candost.blog/type-casting-for-inheritance-in-java/</link><guid isPermaLink="true">https://candost.blog/type-casting-for-inheritance-in-java/</guid><pubDate>Mon, 04 Feb 2013 11:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Note to myself:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;With objects, you can cast an instance of a subclass to its parent class.
Casting an object to a parent class is called upcasting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;Child child = new Child ();
Parent parent = child;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To upcast a Child object, all you need to do is assign the object to a reference variable of type Parent. The parent reference variable cannot access the members that are only available in Child.&lt;/p&gt;
&lt;p&gt;Because parent references an object of type Child, you can cast it back to Child. It is called downcasting because you are casting an object to a class down the inheritance hierarchy. Downcasting requires that you write the child type in brackets. For example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Child child2 = (Child) parent;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/type-casting-for-inheritance-in-java/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/type-casting-for-inheritance-in-java/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>URLClassLoader in Java</title><link>https://candost.blog/urlclassloader-in-java/</link><guid isPermaLink="true">https://candost.blog/urlclassloader-in-java/</guid><pubDate>Mon, 04 Feb 2013 11:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Note to myself:&lt;/p&gt;
&lt;p&gt;Load a Class that is not on the classpath&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;

public class Main {
  public static void main(String[] argv) throws Exception {
    File file = new File(&quot;c:\\class\\&quot;);
    URL url = file.toURI().toURL();
    URL[] urls = new URL[] { url };
    ClassLoader loader = new URLClassLoader(urls);
    Class cls = loader.loadClass(&quot;user.informatin.Class&quot;);
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;Print classpath&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import java.net.URL;
import java.net.URLClassLoader;

public class Main {
  public static void main(String[] args) {
    ClassLoader sysClassLoader = ClassLoader.getSystemClassLoader();
    URL[] urls = ((URLClassLoader) sysClassLoader).getURLs();
    for (int i = 0; i &amp;lt; urls.length; i++) {
      System.out.println(urls[i].getFile());
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/urlclassloader-in-java/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/urlclassloader-in-java/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Method Paramters  in Java</title><link>https://candost.blog/method-parameters-in-java/</link><guid isPermaLink="true">https://candost.blog/method-parameters-in-java/</guid><pubDate>Sat, 02 Feb 2013 11:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Note to myself:&lt;/p&gt;
&lt;h2&gt;By Value or By Reference&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Primitive variables are passed by value.&lt;/li&gt;
&lt;li&gt;Reference variables are passed by reference.&lt;/li&gt;
&lt;li&gt;When you pass a primitive variable, the JVM will copy the value of the passed-in variable to a new local variable.&lt;/li&gt;
&lt;li&gt;If you change the value of the local variable, the change will not affect the passed in primitive variable.&lt;/li&gt;
&lt;li&gt;If you pass a reference variable, the local variable will refer to the same object as the passed in reference variable.&lt;/li&gt;
&lt;li&gt;If you change the object referenced within your method, the change will also be reflected in the calling code.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/method-parameters-in-java/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/method-parameters-in-java/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>&amp;&amp; vs &amp; in Java</title><link>https://candost.blog/-vs--in-java/</link><guid isPermaLink="true">https://candost.blog/-vs--in-java/</guid><pubDate>Fri, 01 Feb 2013 11:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Note to myself:&lt;/p&gt;
&lt;p&gt;In java, conditional &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; will not evaluate the right-hand operand if the left-hand operand is false.&lt;/p&gt;
&lt;p&gt;If you want to check the right-hand operand use &lt;code&gt;&amp;amp;&lt;/code&gt;. For example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public class MainClass {

  public static void main(String[] arg) {
    int value = 8;
    int count = 10;
    int limit = 11;

    if (++value % 2 == 0 &amp;amp; ++count &amp;lt; limit) {
      System.out.println(&quot;here&quot;);
      System.out.println(value);
      System.out.println(count);
    }
    System.out.println(&quot;there&quot;);
    System.out.println(value);
    System.out.println(count);
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Output:
there
9
11
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/-vs--in-java/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/-vs--in-java/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Design Patterns</title><link>https://candost.blog/design-patterns/</link><guid isPermaLink="true">https://candost.blog/design-patterns/</guid><pubDate>Wed, 16 Jan 2013 11:33:00 GMT</pubDate><content:encoded>&lt;h2&gt;What is Design Pattern?&lt;/h2&gt;
&lt;p&gt;There is a good description from Christopher Alexander. He says, &quot;Each pattern describes a problem which occurs over and over again in environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.&quot;&lt;/p&gt;
&lt;p&gt;In general, a pattern has four essential elements:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pattern Name is a handle we can use to describe a design problem, its solutions, and consequences in a word or two.&lt;/li&gt;
&lt;li&gt;Problem describes when to apply the pattern.&lt;/li&gt;
&lt;li&gt;Solution describes the elements that make up the design, their relationships, responsibilities, and collaborations. The solution doesn&apos;t describe a particular concrete design or implementation, because a pattern is like a template that can be applied in many different situations.&lt;/li&gt;
&lt;li&gt;Consequences are the results and trade-offs of applying the pattern.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A design pattern names, abstracts, and identifies the key aspects of a common design structure that make it useful for creating a reusable objectoriented design. The design pattern identifies the participating classes and instances, their roles and collaborations, and the distribution of responsibilities. Each design pattern focuses on a particular object-oriented design problem or issue. It describes when it applies, whether it can be applied in view of other design constraints, and the consequences and trade-offs of its use. Since we must eventually implement our designs, a design pattern also provides sample C++ and (sometimes) Smalltalk code to illustrate an implementation. Although design patterns describe object-oriented designs, they are based on practical solutions that have been implemented in mainstream objectoriented programming languages like Smalltalk and C++ rather than procedural languages (Pascal, C, Ada) or more dynamic object-oriented languages (CLOS, Dylan, Self). We chose Smalltalk and C++ for pragmatic reasons: Our day-to-day experience has been in these languages, and they are increasingly popular.&lt;/p&gt;
&lt;h2&gt;Describing Design Patterns&lt;/h2&gt;
&lt;p&gt;Gang of Four&apos;s book describes 23 patterns arranged into 3 groups. Groups help classify how patterns are used: creational, structural, and behavioral patterns. Creational patterns concern the process of object creation. Structural patterns deal with the composition of classes or objects. Behavioral patterns characterize the ways in which classes or objects interact and distribute responsibility. Each design pattern has a description.&lt;/p&gt;
&lt;p&gt;Pattern Name and Classification:
The name of the pattern and its classification (Creational, structural, or behavioral)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intent:&lt;/strong&gt; A short statement about what the pattern does.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Also Known As:&lt;/strong&gt; Other well-known names for the pattern, if any.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Motivation:&lt;/strong&gt; An illustrative design problem that shows how the pattern can solve the problem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Applicability:&lt;/strong&gt; Situtations where the pattern can be used.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structure:&lt;/strong&gt; A graphical representation showing the classes in the pattern.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Participants:&lt;/strong&gt; The classes that principate in the pattern and their responsibilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collaborations:&lt;/strong&gt; How the participants collaborate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consequences:&lt;/strong&gt; Benefits and trade-offs of using the pattern&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementation:&lt;/strong&gt; Hints, pitfalls, and techniques that can be used to help implement the pattern.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sample Code:&lt;/strong&gt; Code illustrations of using the pattern.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Known Uses:&lt;/strong&gt; Examples of the pattern used in real systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related Patterns:&lt;/strong&gt; Other patterns closely related to the current one.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Gang of Four Design Patterns&lt;/h2&gt;
&lt;h3&gt;Creational Patterns&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Factory Method:&lt;/strong&gt; Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Abstract Factory:&lt;/strong&gt; Provide an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builder:&lt;/strong&gt; Separate the construction of a complex object from its representation so that the same construction process can create different representations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prototype:&lt;/strong&gt; Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Singleton:&lt;/strong&gt; Ensure a class only has one instance, and provide a global point of access to it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Structural Patterns&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Adapter:&lt;/strong&gt; Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn&apos;t otherwise because of incompatible interfaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bridge:&lt;/strong&gt; Decouple an abstraction from its implementation so that the two can vary independently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Composite:&lt;/strong&gt; Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decorator:&lt;/strong&gt; Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Facade:&lt;/strong&gt; Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proxy:&lt;/strong&gt; Provide a surrogate or placeholder for another object to control access to it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Behavioral Patterns&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chain of Responsibility:&lt;/strong&gt; Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Command:&lt;/strong&gt; Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flyweight:&lt;/strong&gt; Use sharing to support large numbers of fine-grained objects efficiently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interpreter:&lt;/strong&gt; Given a language, define a represention for its grammar along with an interpreter that uses the representation to interpret sentences in the language.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Iterator:&lt;/strong&gt; Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mediator:&lt;/strong&gt; Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memento:&lt;/strong&gt; Without violating encapsulation, capture and externalize an object&apos;s internal state so that the object can be restored to this state later.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observer:&lt;/strong&gt; Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State:&lt;/strong&gt; Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strategy:&lt;/strong&gt; Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Template Method:&lt;/strong&gt; Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm&apos;s structure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visitor:&lt;/strong&gt; Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;References&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Design Patterns: Elements of Reusable Object-Oriented Software, Publication Date: November 10, 1994, ISBN-10 0201633612, ISBN-13 978-0201633610&lt;/li&gt;
&lt;li&gt;Ankara University, Computer Engineering Department, Object-Oriented Programming Course Slides, Kurtulus Kullu&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/design-patterns/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/design-patterns/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Calculating shortest distance between point and line in Java</title><link>https://candost.blog/calculating-shortest-distance-between-a-point-and-line-in-java/</link><guid isPermaLink="true">https://candost.blog/calculating-shortest-distance-between-a-point-and-line-in-java/</guid><pubDate>Mon, 08 Oct 2012 11:33:00 GMT</pubDate><content:encoded>&lt;p&gt;Objective: The aim in this practical tutorial is for the students to develop the ability to design and write simple Java programs which may not require a through Object Oriented Design and Analysis. Your task in this week’s lab exercise is to write a Java program which can calculate the shortest distance d from a given point to a given line segment.&lt;/p&gt;
&lt;p&gt;The line segment will be given by the two end points by the user. If the projection of the point on the line that the line segment lies on falls outside the line segment, then the distance will be measure to the closest end point. Your program should ask for the point coordinates and line segment end points’ coordinates by using JOptionPane input dialogs, calculate the distance, and report the result by a JOptionPane message dialog. Show your program working in the lab hours and submit your source code via email. Please check that your code compiles from the command prompt with the “javac *.java” command and only send files with .java extension.&lt;/p&gt;
&lt;p&gt;Solution:&lt;/p&gt;
&lt;p&gt;Point.java:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; public class Point
 {
     public Point(int x, int y)
     {
         this.x=x;
         this.y=y;
     }
     public int getterX()
     {
         return this.x;
     }
     public void setterX(int x)
     {
         this.x=x;
     }
     public int getterY()
     {
         return this.y;
     }
     public void setter(int y)
     {
         this.y=y;
     }
     private int x;
     private int y;
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Line.java:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; public class Line {
     private Point point1;
     private Point point2;
     public Line(Point p1, Point p2)
     {
         point1 = p1;
         point2 = p2;
     }
     public Point getterPoint1()
     {
         return this.point1;
     }
     public void setterPoint1(Point p1)
     {
         this.point1 = p1;
     }
     public Point getterPoint2()
     {
         return this.point2;
     }
     public Point setterPoint2(Point p2)
     {
         this.point2 = p2;
     }
     public double distanceOfTwoPoints(Point pp1, Point pp2)
     {
         double result;
         result = Math.sqrt(Math.pow((pp2.x-pp1.x),2)+ Math.pow((pp2.y-pp1.y),2));
         return result;
     }
     public void distanceToPoint(Point p)
     {
         double distance;
         distance = Math.pow((point2.x - point1.x),2) - Math.pow((point2.y - point1.y),2);
         if (distance == 0)
         {
             distanceOfTwoPoints(point1.x, point1.y);
         }
         else
         {
             double tx = (((p.x - point1.x)*(point2.x-point1.x)+(p.y-point1.y)*(point2.y-      point1.y))/distance);
             if (tx &amp;lt; 0)
                 distanceOfTwoPoints(p1, p);
             else if (tx &amp;gt; 1)
                 distanceOfTwoPoints(p2, p);
             else
             {
                 Point pp = new Point(point1.x + tx * (point2.x - point1.x), point1.y + tx * (point2.y - point1.y));
                 distanceOfTwoPoints(pp, p);
             }
         }
     }
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Main.java:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; public class shortestDistance {
     public static void main (string[] args)
     {
         int x1 = Integer.parseInt(JOptionalPane.ShowInputDialog(&quot;Begining of line x point:&quot;));
         int y1 = Integer.parseInt(JOptionalPane.ShowInputDialog(&quot;Begining of line y point:&quot;));
         int x2 = Integer.parseInt(JOptionalPane.ShowInputDialog(&quot;End of line x point:&quot;));
         int y2 = Integer.parseInt(JOptionalPane.ShowInputDialog(&quot;End of line y point:&quot;));
         int x3 = Integer.parseInt(JOptionalPane.ShowInputDialog(&quot;Point&apos;s x point:&quot;));
         int y3 = Integer.parseInt(JOptionalPane.ShowInputDialog(&quot;Point&apos;s y point:&quot;));
         Point p1 = new Point(x1,y1);
         Point p2 = new Point(x2,y2);
         Point p3 = new Point(x3,y3);
         Line l = new Line(p1,p2);
         l.distanceToPoint(p3);
     }
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;mailto:hi@candost.blog?subject=Re:%20https://candost.blog/calculating-shortest-distance-between-a-point-and-line-in-java/&quot;&gt;Reply via email&lt;/a&gt; | &lt;a href=&quot;https://hachyderm.io/@candost&quot;&gt;Reply via Mastodon&lt;/a&gt; | &lt;a href=&quot;https://candost.blog/calculating-shortest-distance-between-a-point-and-line-in-java/#waline&quot;&gt;Comment&lt;/a&gt;&lt;/p&gt;
</content:encoded></item></channel></rss>