Best of Agile2024

  1. 1
    Article
    Avatar of communityCommunity Picks·2y

    Software Development Explained With Cars

    Explaining software development to clients can be challenging, especially the differences between their expectations and actual development processes. Agile development allows for client involvement and adjustments, likened to tailoring a suit. However, protecting development time is crucial, and tools like Kanban boards and Scrum systems can help manage tasks efficiently. Additionally, time tracking provides valuable insights into project costs and productivity.

  2. 2
    Article
    Avatar of dhhDavid Heinemeier Hansson·2y

    Software estimates have never worked and never will

    Estimating software development time has been a consistent failure since the inception of computing. The industry persists in trying this flawed method despite decades of unsuccessful attempts. The challenge lies in the novelty of most software projects, which defy precise upfront specifications. Instead of relying on estimates, shifting to a flexible development approach using budgets or appetites, as advocated by the Shape Up methodology, can lead to more successful and timely software delivery.

  3. 3
    Article
    Avatar of bytebytegoByteByteGo·2y

    EP130: Design a System Like YouTube

    QA Wolf provides an AI-native approach to automate end-to-end testing, allowing teams to achieve rapid QA cycles and high test coverage. The post also covers various Software Development Life Cycle (SDLC) models such as Waterfall, Agile, V-Model, and others. It includes a detailed process for designing a system similar to YouTube, highlighting steps like video upload, transcoding, and content delivery through a CDN.

  4. 4
    Article
    Avatar of workchroniclesWork Chronicles·2y

    (comic) We are agile

    Comic series about work life, focusing on agile methodology. Brought to you by Work Chronicles, where comics are created with love and coffee.

  5. 5
    Article
    Avatar of communityCommunity Picks·2y

    Good software development habits

    Forming good software development habits can significantly enhance speed and maintain quality. Key practices include making small commits, continuous refactoring, prioritizing working software, creating new modules for disparate functions, and focusing on test-driven development (TDD) to anticipate edge cases. Avoid duplications, accept that designs evolve, and understand different types of technical debt. Lastly, ensure that testability is a priority to indicate good design.

  6. 6
    Article
    Avatar of communityCommunity Picks·2y

    Understanding Tdd vs Bdd : A Guide For Developers

    TDD (Test Driven Development) and BDD (Behavior Driven Development) are two development approaches that emphasize testing and collaboration but have distinct differences. TDD is developer-centric and focuses on code correctness, while BDD is user-centric and revolves around system behavior. TDD involves writing tests before code, whereas BDD involves writing behavior specifications before code. Both methodologies can be complementary, with TDD ensuring technical correctness and BDD ensuring the application meets user expectations. Examples and steps to implement each approach are provided.

  7. 7
    Article
    Avatar of groctogroCTO·2y

    6 atomic habits of highly efficient CTOs

    Kovid Batra, founder of groCTO, shares six crucial habits that distinguish highly effective CTOs: holding daily stand-ups, scheduling deep work sessions, conducting regular one-on-ones, continually updating one's knowledge, and moving quickly with immediate feedback loops. These habits foster alignment, productivity, strong team relationships, and continuous improvement.

  8. 8
    Article
    Avatar of microservicesioMicroservices.io·2y

    The evolution of the Microservice Architecture pattern language

    The post discusses the evolution of the Microservice Architecture pattern language over the past decade, highlighting its origins and development. It introduces essential concepts like anti-patterns, the forces of dark energy and dark matter in architectural decisions, and the importance of context in determining architectural choices. Additionally, it advises on refining terminology and emphasizes that monolithic architectures remain useful in many contexts. Future improvements and ongoing adaptation in the field are also covered.

  9. 9
    Article
    Avatar of medium_jsMedium·1y

    My DOs and DON’Ts of Software Architecture

    A software architect shares personal dos and don'ts based on their experience. Key advice includes treating everyone as equals, ensuring clarity, documenting decisions, defining ownership, using architectural contracts, and avoiding over-architecture. The don'ts emphasize challenging directives, proposing solutions with problems, and avoiding 'WaterGile' by implementing true Agile methodologies. This guidance aims to help navigate workplace dynamics and drive successful projects.

  10. 10
    Article
    Avatar of workchroniclesWork Chronicles·2y

    (comic) Sprint Review

    Comics about work, created with love and lots of coffee, provide a humorous take on the sprint review process in agile methodology.

  11. 11
    Article
    Avatar of lobstersLobsters·2y

    Fear of over-engineering has killed engineering altogether

    Over the past two decades, there has been a shift in software engineering from rigorous planning to rapidly shipping products without much foresight. While agile methodologies have benefited the tech industry, there's a growing concern that the pendulum may have swung too far, leading to a disregard for basic engineering principles. The post emphasizes the importance of using simple tools like napkin math and Fermi problems for making informed decisions, ultimately saving time and resources. By sharing examples from the development of fika, the author illustrates how basic calculations can prevent costly mistakes and optimize development processes.

  12. 12
    Article
    Avatar of communityCommunity Picks·2y

    Why nobody grows up wanting to be a DevOps engineer

    The post discusses the history and evolution of DevOps, questions whether it has delivered on its promises, explores how people end up in DevOps roles, and considers the future of the field.

  13. 13
    Article
    Avatar of infoworldInfoWorld·2y

    Why scrum is dumb

    The author argues that scrum is ineffective and misaligned with agile principles, primarily due to its rigid structure and continuous cycle of sprints. They suggest a more flexible approach where work is broken into natural chunks, each completed in an appropriate time frame, and adapting to changes as they occur. This method emphasizes true agility over procedural adherence.

  14. 14
    Article
    Avatar of communityCommunity Picks·2y

    Scrum sucks.

    This post discusses the flaws in the implementation of Scrum and suggests ways to make it work effectively. It emphasizes the importance of flexibility, collaboration, and focusing on results in order to truly embody the Agile philosophy.

  15. 15
    Article
    Avatar of swizecswizec.com·2y

    Why software projects fail

    Flyvbjerg and Gardner's book 'How Big Things Get Done' explores why large projects often fail, citing themes like maximizing over satisficing, slow iteration, invention instead of reuse, scope creep, and overloading work in progress. Effective project management requires finishing work forcefully, avoiding unnecessary cleanups, opting for good-enough solutions, and embracing iterative planning.

  16. 16
    Article
    Avatar of communityCommunity Picks·2y

    Unrealistic Deadlines In Software Engineering

    When engineers face unrealistic deadlines, they often have to cut corners, leading to bugs, crashes, and technical debt. This pressure is usually overlooked by management, putting blame on engineers when things inevitably go wrong. To handle this, engineers should set clear expectations, break projects into phases, and push back against impractical timelines when necessary. Effective communication about risks and thorough documentation can help mitigate these issues.

  17. 17
    Article
    Avatar of nubankNubank·2y

    From Micro to Macro: Scaling Front-Ends

    Bringing together diverse minds enhances discussion, debate, and problem-solving in software engineering. Highlights include insights on going agile and streamlining development processes.

  18. 18
    Article
    Avatar of infoqInfoQ·2y

    Thinking Like an Architect

    Key insights into the role of architects include their function as IQ amplifiers, enhancing team intelligence by simplifying complex concepts and fostering better decision-making. They bridge organizational levels, use metaphors to make technical ideas relatable, and leverage simplified models for effective problem-solving. The ability to see multiple dimensions enables architects to introduce innovative solutions, tackle constraints, and balance standardization with innovation.

  19. 19
    Article
    Avatar of hnHacker News·2y

    Why Scrum is Stressing You Out

    Modern programming has become significantly more stressful compared to the 90s and early 2000s, particularly due to the adoption of sprint-based approaches like Scrum. Issues include the continuous nature of sprints, lack of autonomy, and insufficient preparation time before tasks. These factors contribute to a constant medium-level stress that is more harmful in the long run. Sustainable changes are needed to restore developer autonomy, professionalism, and reduce stress.

  20. 20
    Article
    Avatar of communityCommunity Picks·2y

    Is Agile over?

    Agile, once the dominant methodology for software development and business operations, is facing scrutiny as many organizations report poor outcomes from its implementation. The problem often lies in superficial adoption, leading to failed transformations and disillusionment. The solution may lie in focusing less on rigid frameworks and more on desired outcomes and team behaviors, promoting true agility over mere adherence to Agile principles.

  21. 21
    Article
    Avatar of newstackThe New Stack·2y

    Devs Need System Design Tools, not Diagramming Tools

    Engineering teams often face the XY problem when selecting tools for software system design, focusing on specific solutions instead of underlying issues. This results in fragmented approaches and significant inefficiencies. System design goes beyond diagramming and requires tools that support dynamic and continuous design processes, incorporating real-time updates, collaboration, and comprehensive system understanding. Modern software's complexity demands tools that facilitate visibility and understanding, surpassing the limitations of traditional diagramming tools.

  22. 22
    Article
    Avatar of communityCommunity Picks·2y

    Why Story Points don’t make sense

    The use of story points in agile estimation doesn't make sense because they can't be added up. Using t-shirt sizes instead of numbers can be a more accurate and consistent approach.

  23. 23
    Article
    Avatar of communityCommunity Picks·2y

    Has UML Died Without Anyone Noticing?

    UML, once a standard for software modeling, has seen a decline in use, particularly due to the rise of Agile methodologies and user stories which favor production-ready code over structured problem analysis. While lightweight modeling techniques like C4 and informal 'masala diagrams' are now commonly used, the discipline of formal business analysis and engineering in software development has diminished, creating a shift towards more flexible but less rigorously defined design practices.

  24. 24
    Article
    Avatar of gcgitconnected·2y

    5 Engineering Management Philosophies I Have Found Helpful

    The post discusses five key philosophies that have helped the author in managing engineering teams effectively. These include identifying the limiting step in projects, valuing early effort in the project lifecycle, treating milestones as opportunities for demos, motivating and training the team, and providing prompt, specific feedback on high-leverage activities. The author emphasizes planning around critical project steps, early-stage decision-making, clear progress updates, balancing hands-on training with empowerment, and the importance of quick feedback on essential tasks.

  25. 25
    Article
    Avatar of circleCircleCI·2y

    Test-driven development (TDD) explained

    Test-driven development (TDD) is a software development process that involves writing tests for your code before you write the code. TDD enhances collaboration, leads to more robust applications, and improves design and architecture. It also reduces long-term costs and increases confidence in code changes. TDD aligns perfectly with the objectives of continuous integration/continuous delivery (CI/CD) by ensuring code quality, enabling early bug detection, and facilitating automated testing.