The hottest Substack posts of Rethinking Software

And their main takeaways
99 implied HN points 14 Jun 25
  1. Literate programming is great for keeping your code and documentation together. It helps you write tests in a clear and organized way without needing extra frameworks.
  2. With literate programming, you can easily mock functions and test them directly, even in languages like C that are usually tricky to test. This makes the testing process simpler and more enjoyable.
  3. Placing tests right next to your code helps you keep everything organized and makes writing tests feel less like a chore. You start to see tests as part of your coding process rather than an extra step.
349 implied HN points 24 Jan 25
  1. Working in traditional software jobs can feel unfulfilling because you mostly deal with old code and follow orders. Many developers wish for more creativity and control over their projects.
  2. Open source software (OSS) offers a way for developers to work on things they are passionate about without the pressure of market demands. It allows them to create freely and build things that interest them.
  3. Getting involved in OSS can provide personal satisfaction and potentially lead to financial opportunities later. It’s a great way to control your work and share it with the world.
299 implied HN points 04 Feb 25
  1. Story points and hours can be related, but they aren't the same. It's like comparing apples to oranges.
  2. In Scrum, we often use story points to estimate work instead of hours, but it's possible to convert story points to hours if needed.
  3. Understanding how to relate story points to hours can help teams plan their work more effectively.
549 implied HN points 30 Nov 24
  1. Sprints can feel non-stop and stressful since they don't have breaks, which can lead to burnout. It's suggested that a 'sustainable pace' would help, but taking real breaks might be a simpler solution.
  2. Daily stand-ups can make team members feel pressured to justify their work constantly. However, the intent behind them is not for status updates but to facilitate communication and support.
  3. The role of a Product Owner in Scrum can leave developers feeling sidelined. Developers may worry that their insights are overlooked, but it’s believed that good Product Owners will always prioritize the development team's needs.
549 implied HN points 18 Nov 24
  1. Outsourcing might seem like a money-saver, but it can make teamwork harder and slow down projects. It's important to consider all the hidden costs before deciding.
  2. Using low-quality tools can frustrate programmers and hurt their morale, which ultimately harms productivity. Giving developers good tools shows that you value their work.
  3. Keeping everyone busy all the time doesn't always mean being productive. It's better to let teams focus on clearing bottlenecks and maintaining a good workflow instead.
Get a weekly roundup of the best Substack posts, by hacker news affinity:
499 implied HN points 20 Nov 24
  1. Scrum's Definition of Done creates extra pressure on developers to deliver perfect work, even when the process is chaotic. It doesn't fix the problems; it just shifts the blame onto the team.
  2. Instead of focusing on quality, Scrum encourages speed and follows strict checklists. This leads to developers cutting corners just to meet unrealistic deadlines.
  3. Real improvements would come from changing the whole process, like allowing more time for reflection, empowering developers, and reducing unnecessary meetings, which would promote better quality work.
399 implied HN points 05 Dec 24
  1. Scrum and its new version, Extreme Agile, focus too much on speed without considering the quality of work. This prioritization can lead to worsening job conditions for programmers.
  2. Programmers have the option to explore freelancing or starting their own businesses, especially with AI tools making it easier. This could provide more freedom and control over their work.
  3. Instead of waiting for companies to change, programmers should take action to create their own opportunities, sharing their experiences and insights to help others along the way.
299 implied HN points 16 Dec 24
  1. Starting a new task requires laying a good foundation, like sorting puzzle pieces before building the picture. Once you get into it, things start fitting together more smoothly.
  2. It’s important to pause and appreciate your progress. Sometimes you need someone else to help you see how far you’ve come.
  3. When you're tired, take a break. You can solve problems much quicker when your mind is fresh, rather than pushing through fatigue.
299 implied HN points 07 Dec 24
  1. Strong code ownership means a specific developer is responsible for certain sections of code, which helps improve quality and pride in their work.
  2. Just like in the story from Xiaogang, allowing ownership in software can motivate developers and increase productivity.
  3. Some teams might mix strong and collective code ownership to accommodate different personalities and work styles, benefiting everyone involved.
249 implied HN points 30 Nov 24
  1. The Definition of Done in Scrum can often mask real problems instead of solving them. It makes it seem like poor quality doesn't exist by placing all responsibility on the developers.
  2. Many companies stick to strict processes without recognizing their flaws. This leads to frustration among developers who are pushed to meet unrealistic expectations.
  3. Empowering developers to create their own processes might lead to better results. By trusting the team, companies can produce high-quality work without getting bogged down by rigid frameworks.
445 HN points 11 Sep 24
  1. Sprints make work feel never-ending because they are constant deadlines without breaks. Unlike past methods, there’s no time to rest and recharge, leading to ongoing stress.
  2. Sprints are often imposed on teams without their input, removing their freedom and motivation. Control over how work is done is important for reducing stress and improving satisfaction.
  3. In Scrum, there is little time for preparation before starting tasks. Developers need time to think, plan, and get ready to tackle projects, or they end up feeling overwhelmed and unprepared.
299 implied HN points 04 Nov 24
  1. There are two main collaboration styles for programmers: individual stewardship and shared stewardship. Individual stewardship focuses on one person having full control, while shared stewardship means the whole team collaborates closely.
  2. Individual stewardship can lead to high-quality results because it allows for deep focus and mastery, but it might create knowledge silos. Shared stewardship promotes teamwork and knowledge sharing but may lead to average results due to differing skill levels.
  3. The right collaboration style can depend on the work being done. Tasks needing specialized skills might work better with individual stewardship, while general tasks benefit from shared stewardship and constant communication.
299 implied HN points 03 Nov 24
  1. Asynchronous communication is key for remote work, allowing people to respond when they can without blocking others. This way, everyone can keep working on their own tasks without unnecessary interruptions.
  2. Traditional code reviews often act more like approvals, which can slow down progress and cause delays. It's better to think of them as a way to give feedback after code is deployed, not as a gatekeeping step.
  3. By changing code reviews to be more like reviews after deployment, teams can keep moving forward. This helps avoid bottlenecks and allows for quicker corrections and improvements in code.
149 implied HN points 10 Jan 25
  1. Shadow projects are personal work you do on your own time, outside of your usual tasks. They allow you to explore your interests and improve your skills without having to ask for permission.
  2. Working on shadow projects can help you fill gaps that your regular work might overlook. This makes your job more enjoyable while also providing value to your organization.
  3. There is some risk in doing shadow projects, as not all ideas will be accepted. However, they can lead to big opportunities and help you take control of your career.
249 implied HN points 10 Nov 24
  1. Working independently can be very rewarding, especially in coding. Some people thrive when they have control over their own projects and can focus deeply.
  2. There are different styles of collaboration in coding. Some prefer to share work with many people, while others like to work alone. Both ways can be valid and effective, depending on the person's preference.
  3. When you feel stuck at work, it's often not just your fault. It shows there might not be enough teamwork or communication. Asking lots of questions can help everyone succeed together.
299 implied HN points 11 Oct 24
  1. Agile should give more decision-making power to developers instead of keeping it all with managers. When developers can make choices, they can respond better to challenges in their work.
  2. Developers should connect directly with customers instead of relying on a middle person, like a product owner. This helps them understand what users want and build better products.
  3. Releasing work often and early is important for getting feedback. Instead of waiting for fixed time frames, developers should share updates when they're ready to adjust based on customer input.
199 implied HN points 26 Nov 24
  1. Workers should have the freedom to choose how they do their tasks. This independence is important for their dignity and should be respected by employers.
  2. The relationship between workers and management should be based on trust and mutual benefit, not fear. Workers are not property and should not be treated as such.
  3. Economic dependence makes it hard for workers to stand up for themselves. To create a better workplace, we need to help workers feel more secure and empowered.
249 implied HN points 27 Oct 24
  1. Code authors should have the final say in reviews to respect their expertise and autonomy. This helps them feel like true professionals.
  2. Mistakes in code are common and can be fixed quickly, so allowing authors to make decisions helps them learn and improve.
  3. Not all code needs to be perfect from the start, especially in the early stages of projects. Giving authors the control lets them decide how polished their work should be.
249 implied HN points 21 Oct 24
  1. Founder mode empowers individual contributors by reducing management interference. It allows them to work freely, focusing on their tasks without being micromanaged.
  2. Good founders support and trust their teams instead of controlling them. They believe in hiring smart people and letting them decide how to do their jobs.
  3. Too many managers can create a bloated, inefficient system. Founder mode prevents this by maintaining a lean structure where everyone can contribute effectively.
99 implied HN points 30 Dec 24
  1. Many programmers feel like they have no control over their work, which can lead to unhealthy competition for the little power that exists. Instead of fighting for crumbs, they should focus on shared decision-making.
  2. Behaviors like land grabbing and excessive code reviews show that programmers crave autonomy but don't know how to get it responsibly. They need to find better ways to collaborate and share power, rather than hoarding it.
  3. Team leads and committees often create more bureaucracy and slow things down. Programmers should work more as peers, trust each other, and let go of the need for strict control to improve their work environment.
199 implied HN points 09 Oct 24
  1. Bob Dylan's song 'Maggie's Farm' speaks about the struggle against unfair management. It really highlights how frustrating it can be to feel stuck in a job with bad management.
  2. The songwriter encourages people to view themselves as partners, not just workers. It's important to feel valued and not treated like a servant.
  3. The song warns against peer pressure at work. Just like in a group, it's essential to stay true to yourself, even when others try to pull you in the same direction.
149 implied HN points 28 Oct 24
  1. The conversation shows a clash of values between a business-minded person and an engineer. They discuss their different approaches to life and careers, highlighting how they see work and success.
  2. They touch on the impact of privilege and family background on opportunities. Jan feels frustrated by Stan's wealthy upbringing and its effect on their perspectives.
  3. At the end, there's potential for growth as Stan reaches out to Jan years later, suggesting that people can evolve and learn from their past interactions.
149 implied HN points 18 Oct 24
  1. The founder promised each employee a share of ownership to create a feeling of equality. This made everyone feel included and valued in the startup.
  2. Everyone received the same amount of shares regardless of how long they had been there. This caused some confusion and frustration among long-term employees who expected more.
  3. In the end, the founder showed that he also valued his contribution by only taking one share like everyone else. This helped unite the team under a common goal and ownership spirit.
199 implied HN points 29 Aug 24
  1. Self-management is key for programmers, encouraging them to take charge of their work and make decisions on their own.
  2. Flat organizations are preferred because they promote equality and allow for more collaboration without strict levels of authority.
  3. Direct communication with customers is important, and companies should focus on being transparent and flexible rather than following rigid plans.
199 implied HN points 21 Aug 24
  1. Organic Markdown helps keep your code and documentation in sync. This means you won't have to edit your code separately from your notes, making everything easier to manage.
  2. It improves how your code is presented. By arranging your code better for people to understand, you can still adjust it later for the computer to run.
  3. You can run commands and build applications right from your Markdown file. This makes the workflow smoother and lets you focus more on coding.
99 implied HN points 24 Nov 24
  1. Many workers struggle to make ends meet while business owners and entrepreneurs often gain wealth and freedom. This gap shows that capitalism isn't working equally for everyone.
  2. Imagine creating small business environments within big companies where employees can act like owners. This could help employees gain wealth without facing the full risks of starting their own businesses.
  3. We should focus on supporting companies that empower their workers and create employee-owners. A better capitalism means more people directly benefiting from their work.
149 implied HN points 23 Sep 24
  1. Story points are basically just hidden time estimates for tasks in software development. Understanding this can help with better planning and predicting when a project will be finished.
  2. Product management should be like a party host, making sure developers and customers communicate and enjoy their time together. This creates a better experience for everyone involved.
  3. There are ways for companies to run without traditional management, like the tomato processor Morning Star. This might be a model to explore for improving the software industry's workflow.
99 implied HN points 21 Oct 24
  1. Managing programmers can be unpredictable. It's important to accept that things may not always go as planned.
  2. Euphemisms in corporate language can hide unpleasant truths. Words like 'alignment' often mean forcing compliance rather than true cooperation.
  3. Scrum practices may not be effective for all teams. Some core principles can actually create stress and hinder productivity instead of helping it.
99 implied HN points 07 Oct 24
  1. Different voting strategies can impact both worker democracies and government systems. It’s interesting to see how this science is evolving, especially in companies without managers.
  2. Nature has unique ways of organizing itself which can inspire how we think about teamwork and collaboration. Reading about these ideas can spark new ways of working.
  3. Management often sticks to the status quo with common excuses. It's important to question these justifications to improve work and foster innovation.
99 implied HN points 02 Sep 24
  1. Literate programming is a fun way to write and document code. It's like mixing storytelling with coding, making the process more enjoyable.
  2. Using tools like Organic Markdown, you can easily manage and run code alongside your documentation in a Markdown editor. It helps keep everything organized and readable.
  3. This programming style allows for creative flexibility, like rearranging sections of code for better clarity and using command outputs as if they were code. It feels almost magical!
49 implied HN points 18 Nov 24
  1. Agile is all about being flexible and responding to changes quickly, rather than trying to predict everything in advance. It helps teams deal with unexpected challenges effectively.
  2. Good teamwork means collaborating and helping each other out. If you get stuck on a project, it’s important to ask your teammates for support instead of trying to figure everything out alone.
  3. Building software is unpredictable, so it’s best not to set strict deadlines and feature lists. Trying to rush or add more people won't necessarily speed things up, and can often make things worse.
77 HN points 07 Aug 24
  1. Scrum is often seen as a bad tool for management, restricting developers' productivity and self-esteem. Many developers feel frustrated, yet companies keep using it because it controls people rather than empowers them.
  2. The main issue isn't Scrum itself, but a bigger problem of control in software companies. Developers often lack genuine power and are seen more as replaceable parts than valuable contributors.
  3. To truly change their working conditions, developers may need to start their own companies or work independently. This way, they can reclaim decision-making power and avoid micromanagement.
56 HN points 19 Sep 24
  1. The main way to measure progress in a software project is by assessing the working software itself, not through estimates or projections. This means focusing on what you can actually deliver and test at any moment.
  2. Agile encourages regular feedback by delivering small increments of software frequently, allowing teams to adjust based on customer needs. This approach helps avoid wasting time on unnecessary features.
  3. Many teams have reverted to old methods of measuring progress with estimates and projections, which can lead to project failures. Sticking to the core Agile principle of valuing actual working software is crucial.
50 HN points 01 Oct 24
  1. Scrum isn't the only way to manage software development. There are many effective alternatives that some companies are using successfully.
  2. Each alternative relies on worker freedom and experimenting, so it's important to find a process that fits your team's needs, not just a one-size-fits-all solution.
  3. Processes like Kanban or Agile focus on continuous flow and autonomy, which can lead to better results than traditional Scrum methods.
49 implied HN points 30 Sep 24
  1. Building successful work teams is like creating a strong community, and it takes good advice to do it well.
  2. Too many rules in software development can stifle creativity and innovation. Developers should choose their own processes to thrive.
  3. Workers are often seen as tools to achieve executives' dreams, so we need more self-managed and cooperative workplaces.
29 HN points 25 Sep 24
  1. Daily Scrum meetings can feel like micromanagement and add stress to developers. It often makes people feel pressured to justify their productivity.
  2. Development work is not always linear, and sometimes progress takes time. It’s okay if some days don’t yield immediate results.
  3. Scrum's requirement for daily check-ins suggests a lack of trust in developers. It would be better if teams could choose when and how to meet, respecting their autonomy.
14 HN points 03 Oct 24
  1. Product Owners should provide information, not direct decisions. Engineers need real-time data to make informed choices, rather than just waiting for orders.
  2. Engineering teams should ask deeper questions to understand their customers and competitors better. This helps them create better solutions instead of just following a checklist.
  3. The relationship between Product Owners and Engineers should resemble a restaurant. Product Owners gather customer insights while Engineers create the dishes, allowing for better quality and innovation.
49 implied HN points 19 Jul 23
  1. Engineers are feeling stripped of autonomy at work and turned into replaceable workers.
  2. Author pushes back against harmful industry practices to restore autonomy and professionalism.
  3. Writing allows the author to challenge authority and promote positive change in software development.
2 HN points 21 Sep 24
  1. Using longer sprints can give teams more freedom and reduce stress over estimating work. It allows developers to manage tasks more effectively without getting stuck on details.
  2. It's important for developers to have control over their meetings and tools. Letting developers run their own stand-ups and choose simple tools can improve efficiency and morale.
  3. Teams should focus on collaboration and flexibility. Allowing for specialization in tasks and removing unnecessary management roles can lead to better job satisfaction and productivity.
2 HN points 03 Sep 24
  1. The 'bus test' checks if a company can function without a specific person. If they can't, their idea is often rejected. But this test can stifle creativity and good ideas.
  2. Believing every employee is replaceable can hurt a company's innovation. Unique contributions should be valued, as they help a company grow and stay competitive.
  3. Encouraging unique ideas instead of over-standardizing processes can motivate employees. When people feel appreciated for their creativity, they are less likely to leave the organization.