mobile it



Context Switching pt.3: Personal Techniques to Maintain Mental Clarity Switching pt.3: Personal Techniques to Maintain Mental Clarity<p>​​​In my previous posts, we delved into the nature of context switching and its impact on productivity, (not just) within software development. Armed with that knowledge, it's now time to pivot from diagnosis to finding solutions. Today's post is dedicated to the strategies and pragmatic measures we can employ to master the disruptive forces of context switching. We'll explore various techniques that have proved valuable in combating this productivity drain.</p><h2>Strategies for Maintaining Mental Clarity and Productivity</h2><p>Now, let's explore techniques to combat the cost of context switching. These methods seek to maintain mental clarity and boost productivity, acting as a defensive bulwark against the onslaught of interruptions.</p><p>Prioritized Task Management: One of the most effective strategies to stave off the ill effects of context switching is to prioritize tasks. By categorizing work into urgent, important, and less critical, you can focus on what truly matters without the constant shift in priorities. Utilize tools like the Eisenhower Matrix to help in this process.</p><p>Time Blocking: Carve out specific time blocks dedicated to singular tasks or types of work. This method not only promotes deep work but also sets clear boundaries around when you are available for collaboration or meetings.</p><p>Controlling Notifications: In the age where every app vies for your attention with incessant notifications, take proactive measures to mute or schedule them. For example, use the 'Do Not Disturb' mode during your deep work sessions to prevent unnecessary digital interruptions. </p><p>Batching Similar Tasks: Grouping similar tasks together can reduce the cognitive load of switching gears. For instance, handle all your code reviews at a designated time or set aside a block for administrative tasks. Separating complex tasks that require deep focus from more routine, less demanding tasks. This allows your brain to engage with each type of activity without the burden of constant gear-shifting.</p><p>Streamlining Communications: Communication is vital, but it can be a significant source of context switching. Define clear windows during the day when you check and respond to emails and messages. This confines communication to specific times, minimizing the interruption to your primary work.</p><p>Identifying Triggers: Recognizing what prompts you to switch contexts can help preempt unnecessary breaks.</p><p>Structured Procrastination: If certain tasks are a frequent source of self-interruption, allocate specific times for them, minimizing their intrusion into more critical work periods.</p><p>All these strategies underscore one thematic resolution: to establish a structured approach to your workday that respects the need for focused, uninterrupted time. Not only does this shield you from the adverse effects of context switching, but it also paves the way for a more ordered and productive professional life.</p><h2>Eisenhower Matrix</h2><p>The Eisenhower Matrix, a time management tool named after President Dwight D. Eisenhower, is particularly effective for prioritizing tasks based on their urgency and importance. This matrix divides tasks into four categories: </p><ul><li>urgent and important</li><li>important but not urgent</li><li>urgent but not important</li><li>neither urgent nor important</li></ul><p>In software development, an example of an <q>urgent and important</q> task could be fixing a critical bug that's causing a system outage, as it directly impacts the functionality and user experience. An <q>important but not urgent</q> task might involve refactoring code to improve maintainability, which, while not pressing, significantly enhances long-term project health. </p><p> <q>Urgent but not important</q> tasks could include responding to non-critical emails that require timely replies but don't contribute directly to development goals. Lastly, tasks that are <q>neither urgent nor important</q> might include attending optional meetings that don';t directly relate to current project objectives. Categorizing tasks can help more effectively allocate time and resources, ensuring that critical issues are addressed promptly while also making room for strategic, long-term improvements. </p><h2>Personal Experimentation - Finding What Works for You</h2><p>Despite the array of techniques to curb context switching, there is no one-size-fits-all solution. For this reason, an essential element in mastering one's workflow is personal experimentation. Trying different strategies and observing their impact on your productivity and well-being is key to customizing an approach that aligns with your cognitive style and work responsibilities.</p><h3>Experiment with Focus Techniques:</h3><ul><li>Regular Breaks: Integrate short, regular breaks into your schedule to clear your mind and avoid cognitive overload. The Pomodoro Technique is one method that incorporates this idea effectively. Work for 25 minutes, then take a 5-minute break. This can increase focus by creating urgency and allowing regular breaks to recharge. </li><li>Day Theming: Assigning different themes to your work days can help you maintain a clearer focus. For instance, you might dedicate Mondays to development work, Tuesdays to meetings and for administrative duties, and so on.</li><li>Adjust Communication Habits: Is it really necessary to have your email ding every time something arrives in your inbox?</li><li>Try checking emails only at certain times. Observe how this affects your ability to concentrate on tasks without the anticipation of upcoming communications.</li><li>Manage Your Environment: Physical and virtual workspace organization can have a significant impact on your focus. See how decluttering your desk or desktop affects your ability to switch between tasks.</li><li>Physical Exercise:</li><li>Beyond organizational strategies, personal health, particularly regular physical exercise, plays a crucial role in combating the effects of context switching. Activities like jogging, yoga, or even brisk walking can enhance cognitive function and focus, providing a natural buffer against the mental fatigue caused by frequent task-switching.</li><li>Mindfulness and Meditation: Regular mindfulness practice helps train your brain to focus on the present moment, reducing the mental clutter that often accompanies task switching. This not only improves your ability to concentrate on a single task but also helps in quickly regaining focus after an interruption. Science has shown that 2 things are especially effective for mental resting: a swift walk and looking at details in nature (like shapes of leaves, colors of birds or movement of clouds). You can try doing this during your breaks while resisting the urge to check your Facebook. It helps to mentally recover for upcoming work.</li></ul><p>Studies suggest that switching mindsets may be less disruptive than switching tasks, an interesting notion worthy of exploration. While you may not be able to reduce the number of tasks, changing your approach to how they're tackled – emphasizing mindset rather than the tasks themselves – could result in a smoother transition between them.</p><p>Personal experimentation with these strategies can also lead to better self-awareness concerning how context-switching affects you individually. What works for one person may not work for another, and understanding your unique responses to task-switching can inform a more personalized and effective workflow.</p><h3>A Practical Tip for Swift Task Resumption</h3><p>What if all mitigation failed and you got interrupted? I got a tip for you.</p><p>A counterintuitive yet effective practice for speeding up the resumption of work after an interruption is to leave a task exactly as it is, even if it means stopping mid-sentence or leaving a logical piece incomplete. Resist the urge to “finish” the sentence or thought before you leave.</p><p>This approach, as extreme as it may sound, creates a cognitive bookmark that makes it significantly easier to pick up right where you left off, thereby reducing the time and mental effort needed to reorient yourself back into the task. You simply reread the preceding text and continue with a single following word. Because it is a much smaller piece of puzzle to fill in as opposed to starting a completely new paragraph, it makes it easier to get moving.</p><h2>Conclusion</h2><p>As we wrap up this first part of our exploration into personal strategies for managing context switching, remember that the key lies in structured, prioritized task management and setting clear boundaries for deep work. Stay tuned for our next post, where we'​ll dive into team techniques and strategies to handle context switching.</p> ​<br>#agile;#development;#productivity;#team-collaboration
Context Switching pt.2: Psychological factors Switching pt.2: Psychological factors​​​​​​​​Welcome back to our series on context switching. In the first part, we explored the fundamental aspects of context switching, its impact on productivity, and the cognitive challenges it presents, especially in the area of software development. Now, in this second post, we turn our attention to the psychological dimensions of context switching. We'll delve into how it affects mental health and work quality, the signs of an overwhelmed context-switching capacity, and the personal and team dynamics that influence its impact. <h2>The Neuroscience of Task Switching</h2><p>To truly grasp context switching, we must delve into the realm of cognitive science and understand the neural mechanisms at play. A study by Santiago Galella and Salva Ardid in 2023 casts light on the neural gymnastics involved in task switching. They describe it as a cognitive control challenge—our brains effectively 'rewire' themselves in realtime to manage the demands of different tasks.</p><p>Task switching involves a network of brain regions that include the prefrontal cortex—a command center for executive functions—and the posterior parietal cortex, which integrates sensory information. When we switch tasks, these areas must work together to suppress the rules and goals of the previous task and activate those relevant to the new task. This activity represents a significant overhead and can be visualized through neuroimaging techniques.</p><p>Moreover, Galella and Ardid highlight the impact of context inputs, suggesting that the surrounding environment can aid or hinder the brain's ability to switch tasks. For instance, a cluttered workspace with multiple visual stimuli can exacerbate the cognitive control required to switch tasks effectively compared to a minimalist and orderly environment.</p><p>In essence, understanding these neural representations and the cognitive control required for task switching can help us comprehend why context switching is burdensome and how we might mitigate that by manipulating our work setup and conditions.</p><p>Psychology and neuroscience research by Harvard Business Review shows that jumping between tasks is cognitively taxing and can significantly impact productivity and mental well-being. This strain on cognitive resources, the research speculates, is rooted in our brain's finite capacity to process and hold information 'in mind' at any given time, leading to strain when switching between multiple tasks or topics.</p><p>Every time we switch tasks, we incur a <q>cost</q> that can deplete our cognitive reserves. When we context switch, we're drawing from our limited pool of cognitive resources. Each transition requires reorienting our mental framework to accommodate a new set of variables and challenges, akin to reprogramming a computer for a different task. Cognitive psychologists have found that the act of context switching can deplete our focus, attention, and working memory capacity—vital components for effective software development.Meanwhile, crucial moments of insight could be slipping through the cracks as they attempt to regain their flow. Applied to a typical workday with numerous interruptions, we’re talking about a substantial cumulative effect on productivity.</p><h2>Intensified Cognitive Load Under Time Pressure</h2><p>Imagine you're working on a task and you know there's a meeting in 15 minutes. This awareness alone can heighten the cognitive load. You're not just dealing with the mental shift of context switching; you're also racing against the clock. Research indicates that such time constraints can force us into a mental shortcut mode, where we might not process information as deeply as we would under less pressure.</p><p>With an eye on the clock, the quality of your work during these switches can suffer. You might find yourself skimming through tasks rather than engaging deeply, as you would if time weren't a factor. This hurried approach can lead to mistakes or incomplete work, especially in fields requiring high attention to detail, like software development.</p><p>Knowing that both context switching and time pressure can be mentally taxing, planning your day with these factors in mind becomes essential. This might mean scheduling deep-focus work during quieter hours or setting realistic expectations for what can be achieved within given time frames.</p><p>While occasional deadlines and periods of time pressure might increase one's performance, it is important to use this tool with caution. Time pressure is usually understood as a project deadline or a release date, but I believe it's important to view it in its broader context. Even seemingly trivial time restrictions like an approaching meeting, a fixed departure of a train home, or colleagues waiting for me to join them for lunch are time pressures on their own.</p><p>The presence of an impending deadline or a tight timeframe can indeed amplify the cognitive cost of context switching. It's not just the switch itself that matters, but also the environment and time constraints within which it occurs.</p><h2>Addressing the Elephant in the Room: Productivity and Software Quality</h2><p>Let’s not forget the implications for software quality. As the cognitive load increases due to frequent interruptions and context switches, so does the propensity for errors. The mental 'loading time' to retrieve all the relevant details surrounding their task can lead to oversights. As studies highlighted, this decreased efficiency is a straight road to a higher likelihood of bugs and poorly implemented features, affecting not just productivity but the integrity of the end product.</p><p>Frequent task switching in software development doesn't just slow down the process; it introduces a higher likelihood for errors. The connection between interrupted work and reduced quality underscores the importance of fostering environments where deep, uninterrupted work is possible. The tenacity needed to track down a tricky bug or refactor a critical module is substantially undermined every time the developer's attention is diverted. The more our cognitive load is taxed, the more prone we become to mistakes, and in the context of software development, these errors are not just mere slip-ups; they can lead to critical system failures or security vulnerabilities.</p><p>The drawbacks of context switching extend beyond just immediate productivity dips—they also have a tangible influence on the quality of the work produced and the mental health of those producing it. This dual impact demands a nuanced approach that accommodates both organizational goals and personal well-being.</p><p>A codebase is a reflection of the concentration and care placed into it. When developers are pulled away mid-thought, mistaken logic or coding errors are more likely to creep in. Frequent context switching has been shown to reduce efficiency, and the reduced attention to detail can lead to subtle but critical bugs. A study by Shakeri Hossein Abad et al. (2018) emphasizes that context switching significantly contributes to an increased likelihood of defects and technical debt.Constant context switching not only affects immediate productivity but also has implications for long-term memory and learning. Cognitive psychology suggests that when our brain is frequently interrupted, it hampers the process of consolidating information into long-term memory, thereby affecting our ability to learn and retain new knowledge effectively.There's a compelling incentive, then, to build frameworks that shield our developers from the barrage and give them the space to cultivate deep work. This might manifest as implementing policies that recognize the value of uninterrupted time, formalizing code review processes to catch errors that slipped through context-switching cracks, or leveraging pair programming to maintain a shared context and reduce cognitive load.</p><h2>Signals of an Overwhelmed Context-Switching Capacity</h2><p>The toll exacted by context switching isn't exclusively measured in moments of lost productivity—it's also captured in the subtle deterioration of our mental stamina.</p><p>How to know you're having too many context switches? Atlassian Blog points to signs symptomatic of a troublesome context-switching load: </p><ul><li>Missing details: when details start slipping through the cracks</li><li>Difficulty in starting tasks: procrastination or a heavy sense of dread when it comes to initiating tasks</li><li>Habitual deferring of simple tasks</li></ul><p>These signals may well be red flags indicating that our cognitive capacities are overstretched. Each of these signals points to a strain that goes beyond mere task-related stress; it infiltrates deeper levels of cognitive operation, affecting how we manage information, make decisions, and proceed with our work.</p><p>Frequent context switching can have a long-term impact not just on productivity, but in severe cases mental health, and overall work satisfaction can suffer too.</p><h2>Mental Health: The Silent Sufferer in the Shadows</h2><p>Beyond tangible productivity metrics, context switching exerts a less visible but equally concerning toll on mental health. The Atlassian Blog and Spike's analysis of workplace productivity discuss the fatigue and stress that arise from frequent task switching. The constant demand to recalibrate one's frame of mind can lead to burnout and reduced job satisfaction over time.</p><p>43% of workers report feeling fatigued by the act of juggling multiple tasks, highlighting the mental cost associated with context switching.</p><p>Personal vulnerability factors, such as stress levels and individual resilience against interruptions, significantly influence how people handle context switches. Moreover, recognizing and adapting to the unique interaction patterns within a team—some members might prefer segmented work blocks while others thrive on dynamic task juggling—can help managers allocate work more optimally, minimizing involuntary context switching. </p><h2>Key Takeaways</h2><ul><li>Context switching incurs a cognitive tax that significantly hinders productivity and quality of work, demanding meticulous management.</li><li>Self-interruptions are often more disruptive than external ones, thus necessitating strong self-discipline and structured work habits.</li><li>Agile environments, while collaborative and dynamic, can amplify cognitive challenges during task transition, making tailored mitigation strategies crucial.</li><li>Technological advancements such as automation in tooling offer promising avenues for easing the cognitive burden.</li><li>The dual impact of context switching on software quality and mental health underscores the need for a balanced approach that promotes both professional performance and personal well-being.</li><li>Understanding individual and contextual factors that affect the disruptiveness of task switching is key to crafting personalized strategies for each team member.</li></ul><p>By watching for the strain signals, we can take timely measures to counterbalance the cognitive load, such as implementing more rigid task prioritization, streamlining workflow processes, or simply taking more frequent breaks to refresh the mind. Recognizing the signs is the first step towards effecting a change in our work habits and environment to preserve our mental agility.</p><h2>Conclusion<span style="color:#222222;font-family:source-sans-pro, open-sans, sans-serif;font-size:16px;">​</span><span style="color:#222222;font-family:source-sans-pro, open-sans, sans-serif;font-size:16px;">​</span></h2><p>We've explored how the cognitive load intensifies under time pressure, the impact on software quality, and the subtle yet significant toll it takes on mental health.</p><p>In our next post, we will focus on practical mitigation strategies. We'll explore tips to manage the cognitive tax of context switching more effectively as individuals.</p>#agile;#development;#productivity;#team-collaboration
Context Switching pt.1: What's the Cost?'s-the-Cost.aspxContext Switching pt.1: What's the Cost?<p>​​​​In today's fast-paced world, where multitasking is often glorified, context switching is an unavoidable aspect of both our professional and personal lives. Companies often even state a requirement for the ability to multitask in their job advertisements.</p><p>The tendency to rapidly shift from one task to another has become a defining characteristic of contemporary work environments, more so in the complex world of software development. </p><p>As much as we'd like to believe that juggling multiple tasks simultaneously is a hallmark of efficiency, evidence suggests otherwise.</p><p>This is the first part of a series on the topic of context switching. Today, we're addressing what context switching actually is, why it is a problem, and what its true cost is. The goal of this first blog post is to examine the depths of context switching, look at its broader implications on productivity and quality of work, and start laying the groundwork for practical mitigation strategies.</p><p>In the following parts, we're going to have a look at the psychological and scientific aspects and then cover tips and practices that may change the way you approach your day-to-day activities.</p><h2>What is Context Switching?</h2><p>At its core, context switching refers to the process of moving from one task to another and adjusting our mental context accordingly. You've likely heard the term <q>context switching</q> tossed around in workplace conversations or across productivity forums, but do we really grasp what it entails? </p><p>In software development, it typically means moving from coding to a meeting, then jumping to email, and back to debugging. Then a barrage of Slack messages, an unexpected call, or even a 'quick' progress call - all within a short time.</p><p>Yet this phenomenon isn't confined to developers alone; it’s prevalent across countless professions and can seep into our home lives too. Context switching is essentially the mental gymnastics we perform when shifting our focus from one task to another.</p><p>For professionals, particularly those in intellectually demanding fields like software development, context switching is like trying to juggle while running a marathon—you're bound to drop the ball, or worse, burn out before reaching the finish line.</p><h2>Understanding Context Switching and Its Impact on Productivity</h2><p>In the pre-digital era, professionals often dealt with tasks sequentially, allowing for a deeper focus on each task. In the industrial era, work was often repetitive and singular in focus, contrasting sharply with today's digital age where professionals juggle diverse tasks. Today, however, the digital age has exponentially increased the frequency of context switching, bombarding us with a constant stream of emails, messages, and notifications. This evolution from a mono-tasking to a multi-tasking work environment has significantly increased the frequency of context switching. This shift has not only changed the way we work but also significantly increased the cognitive load, making it more challenging to maintain productivity and focus.</p><p>Context switching is the nemesis of deep work. Deep work requires uninterrupted periods of concentration, fostering an environment where high-quality, productive output thrives.</p><p>Studies underscore a grim reality: It's not just a mere minute or two to refocus; the cognitive gears need significant realignment. The toll it takes on productivity is not trivial. The cognitive load imposed by task switching can see developers losing precious minutes of concentration, leading to a dip in productivity.</p><p>Let's have a look at some statistics from various researches on context switching done by Atlassian and</p><ul><li>It can take a staggering 9.5 minutes to regain workflow post-switch. Some other studies even talk about up to 23 minutes. Imagine the cumulative effect of multiple switches in a day.</li><li>97.5% of people cannot multitask effectively.</li><li>The average person is interrupted 31.6 times per day.</li><li>On average, the loss in cognitive capacity (thus productivity) due to context switching can be upwards of 20%. That is a 'fifth-day' practical loss in a typical work week.</li><li>At least 45% of people self-characterized as less productive while context-switching.</li></ul><h2>Multitasking vs. Multi-Failing</h2><p>It's a common misconception that multitasking boosts efficiency. However, research consistently reveals that only about 2.5% of people can effectively multitask. Essentially, when we believe we are multitasking, we're often just task-switching with lower efficiency and quality as the unwanted sidekicks.</p><p>The takeaway here is stark: context switching, though an unavoidable aspect of modern professional life, is a substantial drain on productivity, creativity, and performance.</p><p>So what happens when we context switch, particularly in mentally taxing jobs? Once the interrupted person returns to their initial task, it's not just a matter of picking up where they left off; they must also reload the context of the problem space, which imposes a significant cognitive load. The time needed to resume a previous task isn't just silent time; it's active cognitive effort being expended without contributing to the task's progress. </p><p>It's a phenomenon where the brain changes its 'mental control settings' when moving to a new task.</p><h2>What are the Types of Context Switching?</h2><p>Factors influencing the disruptiveness of task switching include the nature of the interruption (self versus external), the complexity of the task at hand, and even the time of day. What factors influence the impact of context switches? We can distinguish between a few basic ones:</p><ul><li>Switch of topic: we jump to a completely different topic of problem</li><li>Switch of depth: we remain in the same problem, but jump to a different level of it</li><li>Externally caused switch: someone else actively interrupts us</li><li>Internally caused switch: we initiate a switch by our own voluntary decision</li><li>Complexity of task: how mentally challenging a given task interrupted by a switch is</li></ul><p>For example, complex tasks, such as writing new code or solving software architecture problems, usually suffer more from interruptions than more routine ones, such as checking email or attending regular meetings.</p><p>Switching both the topic and depth of tasks is found to be particularly jarring and draining for productivity, indicating the complexity of cognitive processes involved. For instance switching from performing routine, procedural tasks to tackling strategic, high-level thinking imposes an even greater load on our cognitive capacity.</p><h2>The Unseen Thief: Self-Interruptions and Their Stealthy Toll</h2><p>Not all interruptions are created equal. While you might assume external factors are the primary culprits in hijacking your focus, the reality appears to be quite the opposite. Research on context switching has revealed some intriguing findings, particularly about self-interruptions.</p><p>The urge to switch to a 'quick' secondary task is alluring, yet it leaves us suspended in a state of reduced productivity for longer than we might expect. The <q>Let me just quickly check the status of that other task</q> disruption.</p><p>It’s somewhat counterintuitive, but those moments when we voluntarily shift tasks - those moments when we decide to switch tasks on our own, think of checking a quick email mid-task - can be more disruptive than if someone else had interrupted us. The autonomy we value so much appears to have its drawbacks, as these self-directed switches tend to lead our productivity astray.</p><p>I think this is fascinating. Why? Because it suggests that the mere act of deciding to shift focus is in itself a distracting force.</p><p>Through self-interruptions, we disrupt our workflow often underestimating its impact. It appears that the structure of our productivity is linked to our discipline in managing (and resisting) these self-imposed diversions. And for those of us in leadership or team management roles, understanding and guiding teams through the maze of self-interruption can be the key to unlocking higher efficiency and better mental acuity.</p><p>Now, while we might not have the power to eliminate all interruptions (some are necessary and valuable), we can create a structure that minimizes unnecessary self-imposed diversions. This includes creating strict <q>focus zones</q> in our work schedules or employing stringent, but realistic, communication protocols.</p><p>But it's worth noting that voluntary task switching may sometimes be synonymous with poor impulse control.</p><p>When we talk about the challenges of context switching, it's important to consider how looming deadlines or upcoming commitments, like meetings, add to the cognitive strain. This aspect is often overlooked, yet it plays a crucial role in how effectively we manage task transitions.</p><h2>Cognitive Challenges Faced by Agile Software Development Teams</h2><p>Agile methodologies, with their emphasis on adaptability and collaborative work, have revolutionized the software development landscape. However, even the most well-oiled agile teams are vulnerable to the cognitive overload that context switching can induce.</p><p>In agile frameworks, the quick feedback loops and iterative processes demand frequent task transitions. Novice developers especially may find this environment sprouting with cognitive landmines.</p><p>The cognitive overhead of managing multiple agile practices can ripple through a team, affecting communication, work quality, and mental exhaustion.</p><p>Statistical Insight: A survey found that 45% of agile practitioners named "managing distributed teams" as a significant challenge in agile implementations, suggesting the cognitive complexity of coordinating work across contexts and locations.</p><h2>Conclusion</h2><p>In the first part of the series, we've discovered that it's clear that this phenomenon is more than just a minor inconvenience. It's a significant challenge that impacts productivity, software quality, and mental health. We've explored the cognitive tax of context switching.</p><p>In the next part of this series, we will shift our focus to the psychological aspects of context switching. We'll examine how it affects our mental well-being and the subtle signs that indicate an overwhelmed context-switching capacity.</p>​<br>#agile;#development;#productivity;#team-collaboration
Kotlin Multiplatform Training: Building Native Mobile Apps Multiplatform Training: Building Native Mobile Apps<p>October is not only marked by multiplatform development but also by threes: 3 consecutive Wednesdays in a row, featuring 3 hours of intensive training, utilizing 3 (or more) programming languages & platforms.</p><p>Check out each day of training and contact Mariia (<a href=""></a>) if you have any questions or sign up directly on the <a href="">registration form</a>.</p><h2>Training Program</h2><h2>4.10.2023 - Day 1</h2><h3>Building Kotlin Multiplatform applications</h3><ul><li>Brief history of Kotlin project</li><li>Introduction to Kotlin Multiplatform & its current development status</li><li>Comparison of KMP to other cross-platform solutions</li><li>How KMP fits into Kotlin Ecosystem</li><li>Typical structure of KMP Gradle module</li><li>Communication between shared & platform code</li><li>Setup of shared & platform code in version control system repository</li><li>Integration of shared code into an Android & iOS applications<br></li></ul><h3>What does it get to you?</h3><p>You will understand how the Kotlin Multiplatform (KMP) works and how to use it appropriately.</p><p>You will learn how to run a simple application and understand the logic behind the coding.</p><p>You will get a comprehensive overview of the advantages and disadvantages of KMP compared to other multiplatform solutions.</p><h2>11.10.2023 - Day 2</h2><h3>Kotlin Interoperability in Multiplatform World</h3><ul><li>Levels of language interoperability</li><li>Kotlin/JVM and JVM bytecode</li><li>Kotlin/Native and LLVM bitcode</li><li>Design of Kotlin shared APIs</li><li>Architecture of KMP apps<br></li> <li>​Testing of shared code</li></ul><h3>What does it get to you?</h3><p>You will be able to develop shared code that can be easily used on native platforms.</p><p>You will get a feel for using technical details and code design effectively hide the boundaries of where multiplatform begins and ends.</p><h2>18.10.2023 - Day 3</h2><h3>Efficient development for Kotlin Multiplatform teams</h3><ul><li>Building a KMP team</li><li>Onboarding of Android & iOS platform developers</li><li>Collaboration between Android & iOS teams</li><li>Development process of mobile apps using KMP</li><li>What should you share</li><li>Ecosystem of 3rd party KMP libraries</li><li>Unexpected perks</li></ul><h3>What does it get to you?</h3><p>You will learn what is a key for effective development, how to build a team and work together.</p><p>You will learn how to set up development processes, code review or set up a repo.</p><p>You will get a sense of which parts of the project are suitable to be shared and which are not.</p>​<br>#kotlin;#multiplatform;#kmp;#android;#iOS
The role of continuous feedback in software development role of continuous feedback in software development<p>Just like a boomerang coming back to you, feedback in software development and product management helps you improve. In this article, we're going to explore feedback mechanisms and purpose in its broader sense. Not just person-to-person feedback, but also product, market, and development practices. We'll back up our points with evidence from psychological research, so buckle up for a fact-based feedback adventure!</p><h2></h2><p>Several kinds of research have been performed to analyze the relationship between feedback and improvement. In this post, I've picked two well fitting to the world of software development.</p><p>By understanding Kahneman's and Melton's researches, we can see why immediate feedback is so crucial to our software development and product management success.</p><h2>1. The Kahneman study on immediate vs. delayed feedback</h2><p>In his study, psychologist Daniel Kahneman compares the experiences of anesthesiologists and radiologists to illustrate the difference between immediate and delayed feedback. He analyzed their job's inherent feedback nature. He then assessed the effect of such an environment on an individual's development.</p><p>A radiologist is a type of doctor who specializes in medical imaging. Radiologists analyze images, such as X-rays, to help diagnose, monitor, and treat various conditions or injuries. An anesthesiologist is a doctor who gives a patient medication so they do not feel pain when undergoing surgery.</p><p>There is one key difference when it comes to the feedback loop.</p><p>Anesthesiologists work alongside the patient and get feedback straight away, such as whether the patient is unconscious with stable vital signs. On the other hand, radiologists don't get rapid feedback on their diagnoses, if they get it at all. They often have to wait for weeks or even months to find out whether their diagnosis was correct.</p><p>The immediate feedback helps anesthesiologists learn the regularities of their environment and adjust their actions accordingly. As a result, anesthesiologists tend to have a higher success rate in administering anesthesia and managing patients throughout the procedure.</p><p>The delay in feedback for radiologists makes it much harder to improve their skills and recognize patterns. Consequently, radiologists typically correctly diagnose breast cancer from X-rays just 70% of the time.</p><h2>2. The Melton study on predicting freshman success</h2><p>Richard Melton's study aimed to predict the grades of freshmen at the end of their first year of college. A set of 14 counselors interviewed each student for about an hour and had access to high school grades, several aptitude tests, and a four-page personal statement. Based on this information, the counselors made predictions about the students' first-year college performance.</p><p>In comparison, Melton created an algorithm that used only high school grades and one aptitude test as input. Despite the limited information, the formula was more accurate than 11 of the 14 counselors, outperforming them by a significant margin. Melton's study was reported alongside over a dozen similar results across various domains, such as predicting parole violations and success in pilot training.</p><p>The key finding of this study is that, in many cases, simple algorithms using limited data can outperform human judgment. This insight can be applied to various decision-making processes where data is available, emphasizing the importance of relying on (simplified) data and patterns rather than solely on subjective assessments of complex factors.</p><h2>Benefits of continuous feedback in software development</h2><p>Imagine your software development team as a well-oiled machine. With continuous feedback, the gears are in sync, communication is smooth, and everyone's on the same page. Like Kahneman's anesthesiologists, the immediate feedback loop helps your team adapt quickly to change, keeping them nimble and responsive. Plus, it boosts team morale and motivation, as everyone knows they work together towards a common goal. It's like a software development symphony!</p><p>Agile development methods employ short iterations. Those are tools that transform findings from feedback loops into high business value and relevance when performed correctly.</p><p>Many teams adopting Agile development approach miss this aspect. It is not sufficient to develop in small chunks and short cycles on its own. If a relevant feedback loop mechanism isn't employed, the whole point of agile development can be missed because the ecosystem does not improve itself.</p><h2>Techniques for effective continuous feedback in software development</h2><p>According to Kahneman's concept of deliberate practice, a guitarist can't become an expert by playing the same songs for 25 years. If we apply this logic to our software development team, it needs to be pushed beyond their comfort zone to grow. </p><p>Immediate feedback creates a productive learning environment, helping your team members become experts in their craft. Not only can it help your team collaborate and improve individual skills, but it can also give valuable insights into your product's market relevancy, usability, and development practices.</p><p>In software development and product management, this translates to the effective employment of metrics, analytics, and user feedback. Developers and managers can make more informed decisions about the product's direction, team performance, and areas for improvement.</p><p>Furthermore, implementing continuous integration, automated testing, and regular code reviews can provide developers with a very short feedback cycle, enabling them to learn quickly and avoid making the same mistakes, ultimately leading to a higher-quality product and a more efficient development process.</p><p>So let's now be more particular about how to incorporate findings from the mentioned studies in practice. I'll break down typical best practices corresponding to the feedback studies I mentioned earlier.</p><h2>Applying the Kahneman and Meloton studies to software development</h2><p>There are several typical ways to foster immediate feedback mechanisms in software development.</p><h3>Continuous integration</h3><p>Continuous integration (CI) can be implemented to provide immediate feedback on code changes. As developers commit code to the shared repository, CI tools automatically build and test the application, providing rapid feedback on whether the changes pass or fail the tests. This immediate feedback allows developers to quickly fix any issues, reducing the risk of accumulating technical debt and ensuring the product remains stable.</p><p>Code reviews by peers are often an integral part of the continuous integration process.</p><h3>Testing in minimum increments</h3><p>By testing in minimum increments the team takes every chance it gets to test a newly written code - even multiple times per day. The smaller the change is, the shorter the feedback loop is. That is why it is so important to have automated processes set up to make this a pain-free process.</p><h3>Frequent reviews with stakeholders</h3><p>Another way to incorporate immediate feedback in Agile development is by conducting regular sprint reviews and surveys with stakeholders and end-users. These reviews provide an opportunity for the team to demonstrate the functionality they have completed and gather feedback from stakeholders. </p><p>Qualitative or quantitative surveys provide in-depth feedback and sanity checks. The team can then use this feedback to prioritize work for the next sprint, ensuring that the most important features and improvements are addressed promptly.</p><h3>Retrospectives</h3><p>An analogy of reviews, which are outward-oriented, are retrospectives. While it is more inward-focused, it is a great tool to provide access and obtain immediate feedback from within the team. There is no need to keep rigorous and employ complex or sophisticated mechanisms, keeping it as a simple and to-the-point discussion is often sufficient.</p><h2>Leveraging the Melton study in software development</h2><p>The Melton study demonstrates that simple algorithms using limited data can outperform human judgment. In software development, this insight highlights the importance of relying on data and patterns to inform decision-making, rather than solely on subjective assessments.</p><h3>Using metrics to inform backlog prioritization</h3><p>One way to apply data-driven decision-making in Agile development is by using metrics to inform backlog prioritization. For example, a product manager could analyze user engagement data, customer feedback, and bug reports to determine which features or improvements should be prioritized in the backlog. By using data to inform these decisions, the development team can focus on the most impactful work, ultimately leading to a better product that meets the needs of its users.</p><p>The takeaway here is that the statistics don't necessarily need to be extremely complex and sophisticated. Quite the contrary - a simple but highly relevant metric helps tremendously. Such simple metrics can be user story completion rates, velocity measurement, net promoter score, time to restore a service etc. Metrics that are really trivial in principle.</p><p>Managers can identify trends and patterns that indicate strengths and weaknesses by collecting data on the team's velocity, code quality, and other relevant metrics. People sometimes evaluate snapshots of situations without seeing the trends.</p><p>This data-driven approach can lead to more effective and efficient development teams.</p><h2>Tips for making the continuous feedback work</h2><p>Now that we've explored the what, why, and how of continuous feedback, let's talk about making it work in real life. First, create a feedback-friendly culture where team members feel safe to share their thoughts and ideas. Encourage open communication and make feedback sessions a regular part of your team's routine. This is paramount, without a culture valuing honesty, feedback receptiveness is greatly hindered.</p><p>A side note for managers: this culture of human-to-human feedback goes both ways—be receptive to the feedback you receive and use it to sharpen your own skills and processes. </p><p>But wait, there's more! We must broaden our understanding of feedback by extending it beyond the individual level. Design the entire development system to generate and be responsive to feedback, encompassing aspects such as development practices, product quality, financial efficiency, and any other aspect crucial to the product being developed.</p><p>A strong emphasis on feedback loops is a crucial factor that distinguishes traditional waterfall development methods from Agile development. Simply adopting short iterations and frequent planning cycles isn't enough to fully embrace the Agile philosophy if feedback reception mechanisms don't exist. Establishing a system that generates and processes feedback is absolutely essential. Being able to gather feedback and react to it is Agile's primary objective. </p><h2>Conclusion</h2><p>Just as a chef needs to taste his dish while cooking to ensure the flavors are on point, continuous feedback is an essential ingredient in the recipe for successful software development and product management.</p><p>By embracing feedback in various forms - from human-to-human interactions to product metrics and beyond - you'll create an environment where learning, growth, and improvement thrive. So go on, add a dash of continuous feedback to your development process and watch the magic happen!</p>​<br>#agile;#development;#productivity;#project-management;#team-collaboration
The Myth of Bigger Teams: Why Smaller Can Be Better Myth of Bigger Teams: Why Smaller Can Be Better<p>​​​​In an effort to counter inefficiency and increase productivity, organizations often turn to increasing team size. The logic seems sound: more people means more hands on deck to tackle tasks and solve problems. However, this approach can often lead to growing overhead and inefficiencies.</p><p>Research has shown that small teams can often be more effective than larger ones. A study published in Harvard Business Review found that while large teams do advance and develop science, small teams are critical for disrupting it. Another study published in Forbes found that there is an ideal team size at which the benefits of putting more heads together are maximized and the drawbacks minimized.</p><p>So why do smaller teams often outperform larger ones? One reason is that large teams are more likely to have coordination and communication issues. Getting everyone on board for an unconventional hypothesis or method, or changing direction to follow a new lead can prove challenging with a larger group.</p><p>In contrast, smaller teams can be more nimble and adaptable. With fewer people involved, decision-making can be faster and communication more streamlined. This allows small teams to quickly pivot when needed and respond rapidly to changing circumstances.</p><p>This phenomenon is not limited to software development or business settings. In fact, examples can be found across different fields including military operations where smaller units are often able to operate with greater efficiency than larger ones.</p><p>Thus bigger isn’t always better when it comes to team size. Sometimes a highly productive team of 8 senior people can achieve better results than a mixed group of 60. Organizations would do well to consider this when trying to counter inefficiency.</p><h2>Effects of team size on performance</h2><p>But how exactly does this play out in practice? Let’s take a closer look at some real-world examples.</p><p>As more people are brought in to accelerate progress, it’​s not unusual for software development projects to expand in size, a phenomenon known as ballooning. However, this approach can often backfire as communication becomes more difficult and coordination issues arise.</p><p>For example, imagine a project with 60 developers working on different parts of the codebase. With so many people involved, it becomes increasingly difficult for everyone to stay on the same page. Code conflicts become more common as developers unknowingly overwrite each other’s work. Meetings become longer as everyone tries to get up-to-speed on what everyone else is doing.</p><p>Now imagine the same project with just 8 highly skilled developers working together closely. Communication is easier because there are fewer people involved. Coordination issues are less likely because everyone has a clear understanding of what their colleagues are working on.</p><p>In the military, for example, special forces units like Navy SEALs or Army Rangers typically operate in small teams of around 8-10 members. These elite soldiers are highly trained and capable of operating independently from larger units.</p><p>In contrast, traditional infantry units may have hundreds or even thousands of soldiers operating together in large formations. While these units have their own strengths such as overwhelming firepower or logistical support capabilities they may lack the agility and adaptability of smaller special forces units.</p><h2>Automation as an integral part of an organization</h2><p>As companies grow and evolve, it’s important to consider the impact of organizational change on teams and processes. One key area to focus on is automation. By automating tasks and processes, companies can improve efficiency and reduce the need for manual labor. Let’s take a closer look at how automation can affect teams and collaboration.</p><p>Automation can have a significant impact on organizational change. By automating tasks and processes, teams can minimize manual effort and errors, and enhance feedback loops throughout the software development lifecycle. This can lead to smaller chunks of better-quality code releases in less time. Automation can also reduce the need for basic data-input and -processing skills which will be particularly affected by automation.</p><p>The adoption of automation technologies will transform the workplace. Deliberately automating aspects of testing, code styling, integrating, and deploying should aim to reduce the time and human labor needed to develop, deploy and verify the product increment. DevOps automation is applied across the entire lifecycle, including design, development, software deployment, and release, as well as monitoring.</p><p>The primary objective of DevOps automation is to streamline the DevOps lifecycle by reducing manual workload. This automation results in several key improvements: it lessens the need for large teams, drastically reduces human errors, increases team productivity, and creates a fast-moving DevOps lifecycle.</p><h2>Why avoiding larger teams may be beneficial</h2><p>Some common antipatterns may arise when trying to involve more people rather than keeping a small team. As organizations grow in size they may implement measures such as code freezes or external approvals for deployment in an attempt to manage complexity. While these measures may provide some benefits they can also hinder agile development by slowing down decision-making processes.</p><p>They might as well include authoritative behaviors where senior members impose their will on others or create an environment where team members form informal silos within the team based on common interests. This all leads to a lack of trust where team members don’t trust each other’s abilities; this in turn keeps them from delegating tasks effectively. The whole environment just becomes much harder to work in.</p><p>In actuality, the bulk value or result created by a smaller team might be even bigger (let alone cheaper) than the result yielded by a larger yet rigid group. Smaller teams have fewer coordination issues, this allows them to make quicker decisions and deliver faster results.</p><p>When undergoing an agile transformation, companies should consider carefully how they scale agile development across multiple teams in order to avoid unnecessarily large teams. One way companies can achieve this is by creating cross-functional teams which helps reduce the need for scaling agile by merging various departments together.</p><p>Sometimes, however, having large teams becomes a necessity when the product is large and complex. In spite of this, there are frequent cases of software development where teams that could have stayed small if transformation had been done right. In such cases product size is still manageable by a small team, but a large group is now working on it. In such situations companies should aim at creating cross-functional teams, this reduces the need for scaling agile by merging various departments together.</p><h2>Conclusion</h2><p>To wrap up, here are a few basic areas for consideration:</p><ul><li>Conduct a thorough analysis: Before scaling up, teams should conduct a thorough analysis of their current processes and workflows to identify areas that may benefit from additional resources. This can help teams avoid adding unnecessary team members and instead focus on areas where additional resources will have the greatest impact.</li><li>Consider alternative approaches: Teams should also consider alternative approaches to scaling such as implementing new technologies or processes that can help improve efficiency without necessarily adding more team members.</li><li>Automate everything possible: Teams should automate everything necessary to minimize manual effort and errors, enhance feedback loops throughout the software development lifecycle. An effective continuous integration/continuous delivery (CI/CD) pipeline integrates automation tools and workflows an organization needs to build, compile, test and release its applications. Remote development teams cannot rely on end-users to perform robust user acceptance testing. They will need to automate platform, API, functionality, performance, and security testing.</li><li>Develop a clear plan: Teams should develop a clear scale-up plan that should include timelines, milestones and metrics. This can help ensure that everyone is on the same page and working towards a common goal.</li><li>Involve all stakeholders: When considering scaling up, it#39;s essential for teams to involve all stakeholders in the decision-making process to ensure their inclusion. This includes not only team members but also customers, suppliers and other partners who may be impacted by the decision.</li></ul><p>The key takeaway here is that organizations should carefully consider team size when trying to counter inefficiency or improve productivity. While adding more people may seem like an obvious solution it may actually lead to growing overhead and inefficiencies. While there may be instances where expansion is inevitable, disregarding the potential benefits of remaining small can prove to be expensive.</p>​<br>#agile;#development;#productivity;#project-management;#team-collaboration
How Management Buy-In Affects Agile Transformation Management Buy-In Affects Agile Transformation<h2><br></h2><p>Agile transformation can be a powerful tool for businesses looking to improve efficiency, productivity, and flexibility. However, the success of an agile transformation is often tied to management buy-in. As I've written in my previous post, in many cases, the motivation for an agile transformation comes from believing that the current organizational structure is misaligned and that agile will be a cure-all solution. Management may also have unrealistic expectations of the transformation process.</p><p>In reality, management must play an active role in the transformation process, working collaboratively with teams to identify and solve problems. This requires a willingness to hear bad news, make difficult decisions, and address structural and systematic issues that may be inhibiting agility, such as overly complex organizational hierarchies, rigid technologies, and inflexible approval processes. Without this buy-in and active participation, agile transformations can become nothing more than a superficial change with little real impact on efficiency or productivity.</p><h2>Definition of management and leadership</h2><p>There are multiple definitions of what management actually is. Let me cite the two classical ones:</p><p>Harold Koontz: <q>Management is an art of getting things done through and with the people in formally organized groups. It is an art of creating an environment in which people can perform and individuals and can co-operate towards attainment of group goals</q>.</p><p>F.W. Taylor: <q>Management is an art of knowing what to do, when to do and see that it is done in the best and cheapest way</q>.</p><p>So basically, when it comes to transitioning to an agile approach, there are two key takeaways managers need to keep in mind: first, they're responsible for creating an environment where people can be productive, and second, they need to figure out what to do when others are uncertain.</p><p>In addition, it is worth mentioning that although there is an overlap between the skills and qualities of a manager and a leader, they are not the same. A manager oversees and directs a team or organization to achieve its goals and objectives, while a leader inspires and motivates people to work towards a shared vision or goal. Although it is ideal for a manager to also possess strong leadership skills, it is not always necessary for a manager to be a leader as they can still effectively manage a team without necessarily inspiring or motivating them. However, in many cases, having strong leadership skills can enhance a manager's ability to manage their team effectively.</p><p>How does this apply in the context of an agile transformation?</p><h2>Top-down approach to agile transition</h2><p>From what I've seen, a few key attributes are critical for a successful top-down approach to agile transition. Managers must be willing to hear "bad news" and make active decisions in the business's best interests. The <q>average employee</q> in the company needs to be encouraged by managers to identify obstacles and suggest both workarounds and proper solutions.</p><p>To ensure smooth and effective work, managers must make their visions and expectations clear to team members. Although structural changes may hinder progress, it's important to recognize that some changes take time. A shared vision can motivate team members to find workarounds in the interim, while also fostering the belief that higher-level management is actively working towards a long-term solution.</p><p>Having clear orientation, vision, and understanding of context on a higher level can greatly improve motivation, productivity, and the relevance of solutions during an agile transformation. It can lead to more efficient and effective solutions as they are developed with the bigger picture in mind. A sense of direction and a clear vision can be a powerful motivator for people to persevere through challenging times. Like seeing the horizon during turbulent waters, it provides a sense of stability and purpose that can help individuals stay focused and productive. It's the leader's responsibility to ensure such a vision exists and is understood by others.</p><h2>Don't take it personally</h2><p>Managers who resist hearing strategic-level criticisms can hinder the progress of agile transformation. It's important not to take it personally. The broader the problem, the more difficult it is to resolve. Attempting to fix it carries both risk and reward, which is why the agile transformation was initiated in the first place.</p><p>When managers view criticism or obstacles as a cover for employee incompetence or failures, it can create a lack of trust that hinders effective management. This can lead to a tendency to micromanage and excessively monitor employees, which can ultimately undermine all the transformation efforts. Eventually, a lack of trust can lead employees to keep their ideas to themselves to avoid potential conflicts or arguments with their managers. This can hinder creativity and innovation and create a toxic work environment where open communication and collaboration are discouraged.</p><p>It's crucial for managers to actively participate and collaborate with their teams, facilitating problem-solving and decision-making instead of expecting the teams to sort everything out themselves. Some obstacles are outside the control of individual teams and require higher-level interventions or support from the organization.</p><h2>Make decisions - that's what leaders are supposed to do</h2><p>Decision-making in a business context involves a shared responsibility between managers and lower-level colleagues. Effective managers take responsibility for their decisions, even in the face of uncertainty. They actively seek out the information they need to make informed decisions and recognize that some situations may not have enough information, yet still require a decision. In contrast, some managers may try to shift responsibility elsewhere rather than taking ownership and accepting accountability for their decisions in such situations out of fear of failure. It is essential for managers to understand that managing uncertainty is a critical part of decision-making and to accept this responsibility. Lower-level colleagues play a crucial role in facilitating decisions by providing valid, precise, complete, and most importantly honest information.</p><p>To handle critical decisions, organizations can foster a culture of experimentation and testing or establish a structured approach to collect and analyze data for making informed decisions. By exploring various scenarios of potential outcomes, measuring their impacts, and proactively engaging with such models, organizations can break free from this pattern.</p><p>Effective managers approach decision-making with a healthy dose of skepticism, validating and cross-checking data before making any commitments. This also applies to creating plans and commitments during the sales process. It's important to note that the criticism and ideas for improvement from individual teams may not just involve structural and technical aspects but also target plans. A common pitfall is when experts are not involved in the sales and planning process, resulting in unrealistic plans. In such cases, the team should not be held accountable for being unable to adhere to an unrealistic plan. Creating such a plan is a decision that involves risk, which managers are responsible for evaluating, managing, and accepting. Agile transition might painfully expose such naive plans.</p><p>Delegating competence and responsibility is an essential aspect of effective management. However, it's important to note that managers should also be willing to accept the consequences of delegation.</p><h2>Overcoming fear and lack of trust</h2><p>The fear of change can often hinder the agile transformation process, and many managers may be hesitant to make changes due to various fears that are common to any human being. These fears include fear of failure, fear of the unknown, fear of losing control, fear of job security, fear of being exposed as incompetent, fear of losing status or power, fear of conflict or opposition, and fear of the extensive changes required by the agile transformation process. However, effective managers and organizations are able to recognize and manage these fears, while still moving forward with the necessary changes to improve outcomes. It is important not to take these fears personally, but instead to approach them with a solution-focused mindset - because paralysis may be the other option.</p><p>Fear and lack of trust can be significant barriers to organizational success, particularly during a transformation toward an agile culture. Although these feelings are valid and may have justifiable reasons, they can ultimately hinder progress. For an organization to move forward and become more effective, it is essential to foster trust, delegate competencies and responsibilities, and empower employees to make decisions. Most individuals are naturally motivated by changes that save time and effort, and a culture of trust and collaboration can facilitate this motivation toward achieving organizational goals.</p><p>By fostering a culture of trust and collaboration, organizations can overcome fears and barriers to agile transformation and empower employees to take actions that save time and effort.</p>​<br>#agile;#project-management;#team-collaboration;#scrum
Truly embrace asynchronous work embrace asynchronous work<p>​​In 2020 we experienced the most significant office exodus that forced people to work at home. Many of them found enough strength to resist the temptation of PlayStation and figured out ways to reclaim their time, focus, and get a massive load of work done. Isolation has one great advantage as it provides an opportunity for <b>uninterrupted productivity</b>. No manager can barge into your home office to schedule an impromptu status meeting. The time you spend working is genuinely yours. </p><p>The forced isolation is now over and we can choose our workplace. Some have remained at home while others return to the office for various reasons, such as having kids at home or their spouse being a manager. Having part of the team work on-site and part working remotely comes with its own challenges, but more on this hybrid scenario later.</p><h2>The return to the office</h2><p>Forcing people back to the office may backfire. They have gotten used to controlling their schedules and are reluctant to go back to the old days. Remote work has become popular and opened borders, so looking for a new job, even abroad, is easier than ever. The same applies the other way around: you can hire talent everywhere, not just in your office's physical location.</p><p>One argument for returning to the office is that people have better working discipline there than at home. It's up to anyone to decide which place has more disruptions and choose accordingly. Looking at a typical modern office with table footballs, drum hero sets, and four dogs chasing each other in a gigantic shared open space where people without noise-canceling headphones are doomed is debatable, at the very least. But it all boils down to trust. Do you trust your employees to work productively without a manager behind their backs? If not, you should be more considerate about hiring decisions rather than where people choose to work.</p><p>Adapting and allowing office and remote worlds to coexist makes a lot of sense: let people work from where they feel the most productive, and they will reward you with doing exactly that. It's OK that it still might be the office for some. You can benefit from the advantages of remote practices with part of the crew on-site and part remote. Some refer to it as a hybrid approach, but that’s not entirely on point.</p><h2>Asynchronous practices</h2><p>Let's rip the band-aid off quickly. There's no hybrid approach! Only an environment where applied asynchronous practices enable cooperation between on-site and remote people. Nothing else in between makes sense, as it only leads to the neglect of one group or the other. The same conditions and rules must apply to everyone, regardless of location. Asynchronous practices not only help connect the two worlds but also significantly improve productivity for office work. Here are a few tips.</p><p><b>Create and maintain a calm environment</b> so people can focus and not be disturbed for as long as they wish, regardless of the physical location. At home, we often set rules for when we don't distract each other. Why can't we do something similar in the office, the place set up for work in the first place?</p><p>Set boundaries and don't tap on people's shoulders if you need something. Imagine the person next to you is working from a different country and you can't contact them physically. Approach them asynchronously. If they don't reply, chances are they are focusing on something and the last thing they'd want to do is pause everything and talk to you in person. Don't rip people away from their thoughts because of your fantasy of urgency. It might not be as pressing as you perceive it to be.</p><p>The same rules apply to online space: don't go around your messaging app and expect people to react instantly. Some managers abuse those tools as an utterly unnecessary control mechanism to check if people are working. The chat app is not where the work gets done. Feel free to turn it off if you need to focus on something more substantial. </p><p><b>​Knowledge must be shared</b>. It's far from enough that it's been said in a meeting room. Verbal knowledge sharing is a no-go; remote people will be clueless and office people will forget. You must define and learn to use a well-known single source of truth. If you fail to do so, you only create space for assumptions and friction.</p><p>Plenty of project management software is here to help but choose wisely. If you don't, you will end up with three different messaging apps and another three for documentation, design, and progress tracking. That makes the single source of truth, well, not that much single. It also further invites an opportunity for focus disruptions.</p><p> <b>Knowledge must be comprehensive</b>. It doesn't suffice that it's written. Not only do others have to understand what you meant, but also your future self. Try to put yourself in your reader's shoes and re-read your writing. Does it answer questions, or does it raise more than it's necessary? </p><p>Some people, often those responsible for technical analysis (or writing horoscopes), think adding an obfuscation layer to the natural language is a great idea, making them sound more professional. What ends up happening later is that some poor soul has to decipher the gibberish leading them to a quest to find the original scroll with the ancient knowledge. This is work, not a role-playing game. If you expect a human to read what you wrote, write like a human.</p><p> <b>Leave people alone to do their work and share well-written knowledge. </b></p><p>The practice imposes extra discipline on a team, but you won't want to return once you start seeing the benefits. I'd go to great lengths to argue that you should opt for those rules even if your whole team works on-site. Let's now address the two remaining elephants in the room.</p><h2>Meetings and managers</h2><p>Meetings and their human equivalent, managers, are the two most influential relics of the old age and arch-nemesis of uninterrupted productivity. There is still a place for both, but the sooner we forsake the established office routine, the smoother the transition to an asynchronous and productive world will be.</p><p>Programmers work by organizing the thoughts they later output in the source code form. They often do that independently of each other and commit work additions asynchronously, so remote practices feel closer to them and accepting them is more straightforward. Managers, on the other hand, might feel out of their element in this asynchronous world.</p><p>Managers do not directly create value. Their most significant addition is removing barriers for the workers that do. A good manager shields others from the irrelevant to allow them to spend as much time as possible doing what they do best. Let designers design and programmers program. There's no value in keeping people verbally hostage in a meeting, but there is great value in doing the opposite.</p><p>This requires a mind shift, but there's a silver lining once you realize you employ self-organized people who don't need micromanaging and can work without much oversight. This shift frees managers and allows them to focus on the topics where they might contribute to the process meaningfully. There is no room for ego and certainly not for the illusions of authority—forget the management manuals of the 1990s. </p><p>People don't go around wondering who, for instance, van Gogh's project manager was. On the contrary, some jokingly speculate the famous painter cut off his ear when he received a letter with yet another meeting invite. But little did he know that meetings might also make sense in an asynchronous work environment.</p><p>There's just a different approach to organizing them. Instead of summoning a group of 15 people into an hour meeting, it can go like this:</p><ol><li>Write an agenda and briefly summarize the reason for the meeting.</li><li>Then write questions asking for answers that can solve some specifics.</li><li>Send out these questions. </li><li>Wait for answers.</li><li>Don't have the meeting.</li><li>Repeat.</li></ol><p>Organizing your thoughts using the written word helps you understand the issue and alleviates the fear of the unknown. It creates newly found insight that you can easily share as a valuable contribution. Writing down a problem forces you to understand it comprehensively. This process can sometimes be done independently without wasting the time of others.</p><p>In some cases, however, a synchronous meeting can be more productive. A quick pair programming session or a chat with a designer is practical now and then. But limiting the number of participants to those concerned with the topic is as essential as avoiding full-team calls where three-quarters are just muted passive spectators doing their laundry in the next room.</p><p>Could it really have been just an email? It might not be in some cases, and that's fine too. But be honest about your intentions and don't take other people's time off their hands lightly. Think twice if conducting numerous meetings isn't just a way to give the impression of being occupied. Time spent in a meeting is the time not doing the actual work.</p><h2>Writing</h2><p>The backbone of remote work is writing. The ability to express your thoughts is essential regardless of your position. It's a craft that gets better and easier the more you do it, and opportunities to practice are plenty: toots, tweets, daily standups, project READMEs, and even chat messages.</p><p> <b>You can also write a blog post for your company!</b></p><p>Writing is also a transferable skill. You can change a team role, a company, or even an industry and still benefit from writing well. No one can take that away from you.</p> <br>#productivity;#team-collaboration
How flawed motivations can derail Agile transformations flawed motivations can derail Agile transformations<p>Agile transformation has become a buzzword in the business world. Companies are eager to jump on the bandwagon and adopt Agile methodologies. The belief is that Agile transformation will increase productivity, efficiency, and speed, simplifying everything and making it faster. While this can be the case when done right, if the sole motivation for Agile transformation is focused on these outcomes and the company has a delusional idea about how difficult it will be to achieve them, things will go south. It's always a lot bumpier than anticipated.</p><p>This post is part of a series about the most common Agile transformation pains, as I've witnessed them in the organizations around me. This series focuses on the top-down hindrances. </p><h2>Speed, efficiency, transparency</h2><p>What's incorrect about the motivation mentioned above? Don't efficiency, effectiveness, transparency, flexibility, and speed embody the characteristics that the Agile culture promises?</p><p>In my view, the reason it falls short is that it lacks a crucial and integral aspect of Agile methodology, which is the concept of <q>failing fast</q> and promptly identifying and showcasing obstacles and challenges impeding progress. A true willingness to find problems sooner and improve collaboration must also be an integral and true part of the motivation.</p><p>The misconception I mentioned is problematic because it creates unrealistic expectations for what agile can achieve. Agile is not a quick fix for organizational problems. It's rather a fundamental shift in the way a company operates. It is a way of working that requires collaboration and a willingness to adapt. Everyone, including the senior management, must be willing to collaborate with teams to improve the environment for Agile work. The whole motivation stems from the belief that problems are caused by the disorganization of teams and wrong organizational structures.</p><h2>Transformation project - its end is just the beginning</h2><p>Regrettably, Agile transformation is often viewed by management teams as a silver bullet solution to a company's organizational issues. They mistakenly perceive it as a short, one-time investment that will provide immediate and long-lasting benefits. This misconception can lead to an overly simplified approach to Agile transformation, which does not consider the ongoing effort required to sustain it. Agile transformation requires continuous effort and commitment from both management and the teams involved.</p><p>Many managers mistakenly believe that adopting Agile is as simple as calling it a transformation project, allocating a budget, giving the project a fancy name, hiring consultants, and conducting a bunch of trainings. They think that these actions alone will suffice to achieve the transformation and their job is done. People just pat themselves on the back for renaming project managers as scrum masters and officially closing the transformation project. And then they sit back while the teams <q>self-organize</q> and Scrum Masters magically remove all obstacles. But that's not how it works. </p><p>Organizations often face structural and systematic problems that impede their agility. Every company has some - just their depth varies. These issues can manifest in various ways, including overly complicated organizational and decision-making hierarchies, dependence on inflexible technologies, convoluted deployment procedures, and rigid approval processes, just to name a few typical ones. </p><p>For example, a company that releases software updates twice a year with numerous dependencies, code freezes, centralized testing, and lengthy development-testing-acceptance loops will likely encounter significant obstacles when adopting Agile methodologies. The legacy processes and technology stack may be quite incompatible with Agile workflows, making it a challenge to achieve the desired level of flexibility and speed.</p><p>These inherent problems won't magically vanish during an Agile transformation - they'll just become painfully obvious and urgent. The good news is that teams will finally feel comfortable talking about them and trying to tackle them head-on. Problems will be found everywhere.</p><h2>Beware of creating a Potemkin village</h2><p>The flipside is that if this is not expected to happen, the whole transformation won't work. One must be willing to hear the <q>bad news</q> and be ready to make proactive decisions.</p><p>After years of simply accepting the problems, teams will suddenly start shouting from the rooftops about these issues, and senior management needs to step up and work with them to make the workplace more agile-friendly. If they don't, teams will remain stuck in a rigid environment. Everyone will just call himself with a new title, such as product owner or Agile coach. This reorganization is likely to be seen as <q>another waste of money</q> and a failure, with many concluding that <q>Agile doesn't work</q>. A Potemkin village.</p><p>All levels of an organization need to be ready to face these challenges and work together to find solutions. A decision to adopt Agile is just the first step. Even the managers must be ready to roll up their sleeves and get involved in identifying and solving problems that arise during the transformation. It's a team effort, and everyone needs to play an active role. The more complex the business structure is, the longer the whole transformation will likely take. This is an ongoing process that is unlikely to ever come to a complete end. But the deciding factor is if there's actually a will to start and keep undergoing an uncomfortable change.</p><p>One surprising fact about Agile transformation is that it might lead to more bureaucracy if not implemented correctly. For example, suppose a company adopts Agile without addressing underlying issues such as convoluted decision-making processes or rigid approval procedures. In that case, it may inadvertently create more bureaucracy by adding more layers to the process. This is because Agile requires constant communication and collaboration, and if these processes are not streamlined, it can result in even more delays and inefficiencies.</p><h2>True motivation: A sense of security</h2><p>In my experience, failed attempts at agile transformation often stem from a common underlying issue: a lack of trust. This can manifest in various ways, such as a tendency to monitor and control teams closely. After one such transformation I've seen teams being required to share their sprint commitments, burn-down charts, and velocities, and then having to explain themselves when they don't meet those metrics. This happened at the senior management level.</p><p>Such reporting activity created a false sense of security by prioritizing the appearance of stunning charts and numbers on paper rather than the actual value of the work being done. The focus was on keeping commitments rather than questioning the sense of those commitments and the overall plans. Needless to say, what was missing was a critical examination of the actual business value of the effort invested and the value of the things developed. So it was quite obvious what the true initial motivation for Agile adoption had been.</p><h2>Do you really want to go Agile?</h2><p>In conclusion, Agile transformation can be a powerful tool for organizations looking to improve their productivity, efficiency, and speed. However, it is essential to approach it with realistic expectations and a willingness to address underlying structural and cultural issues. Agile transformation is not a quick fix or a one-time investment but requires continuous effort and commitment from all levels of the organization. Managers must be ready to roll up their sleeves and work with their teams to identify and solve problems that arise during the transformation. </p><p>Furthermore, it is crucial to approach the transformation focusing on business value and not just metrics and appearance. So, before embarking on the journey of Agile transformation, think twice and ensure you are willing to fully commit to the process. Going Agile is about being able to react more fluidly to changing business circumstances, isn't it? If there's little willingness to address the underlying issues that hinder progress, what's the point of identifying them in the first place? That by definition hinders the fluidity from happening.</p><p>If fundamentally changing an organization, including its core cultural, technical, and process aspects for the better, isn't the honest motivation, then maybe it will be more comfortable to maintain the status quo and save the embarrassment that an attempt to perform an Agile transition would inevitably bring.</p>#agile;#productivity;#project-management;#release-management;#scrum;#team-collaboration