• Refactoring

    Updated: 2021-03-22 06:42:13
    Catalog part of martinfowler.com Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS Refactoring is a disciplined technique for restructuring an existing body of code , altering its internal structure without changing its external . behavior Its heart is a series of small behavior preserving transformations . Each transformation called a refactoring does little , but a sequence of these transformations can produce a significant restructuring . Since each refactoring is small , it's less likely to go wrong . The system is kept fully working after each refactoring , reducing the chances that a system can get seriously broken during

  • martinfowler.com

    Updated: 2021-03-22 06:41:59
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS Software development is a young profession , and we are still learning the techniques and building the tools to do it effectively . I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it easier to build useful software . The site began as a place to put my own writing , but I also use it to publish articles by my . colleagues In 2000, I joined ThoughtWorks where my role is to learn about the techniques that we've learned to deliver

  • Agile Software Guide

    Updated: 2021-03-21 22:39:39
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS Agile Software Guide In the last decade agile software development has moved from being a cult technique to an increasing part of the mainstream . I was lucky enough to be at the beginning of this story , with early experiences on the birth project' of Extreme Programming and a co-author of the Manifesto for Agile Software Development ThoughtWorks started using agile techniques in 2000 and we've since successfully used them on our projects world-wide . We've learned a huge amount about using agile methods in enterprise settings

  • Software Delivery Guide

    Updated: 2021-03-21 22:39:35
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS Software Delivery Guide I use the term 201C software delivery 201D to indicate the steps from a developer finishing work on a new feature , to that feature being used in production . In my younger days , the time for this would typically measured in months . One of the great advances in software development in the last two decades has been cutting this time , sometimes down to minutes . This means that features are used to generate value more quickly , both increasing the return on investment to build that feature , and providing

  • DSL Guide

    Updated: 2021-03-21 22:39:31
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS Domain-Specific Languages Guide A Domain-Specific Language DSL is a computer language that's targeted to a particular kind of problem , rather than a general purpose language that's aimed at any kind of software problem . Domain-specific languages have been talked about , and used for almost as long as computing has been . done DSLs are very common in computing : examples include CSS , regular expressions , make , ant , SQL , many bits of Rails , expectations in JMock , graphviz's dot language , strut's configuration file . An

  • process theory

    Updated: 2021-03-21 22:39:21
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS tagged by : process theory The New Methodology After my positive experiences with Extreme Programming in the 90s , I became curious about similar sounding approaches such as Scrum , Crystal , and DSDM . Digging into them , I distilled the common characteristics of these new methodologies : preferring adaptive planning to predictive planning , and treating people as more important to success than what process was used . In time these approaches gathered under the banner of agile software development , and I revised the article but

  • collaboration

    Updated: 2021-03-21 22:39:21
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS tagged by : collaboration On Pair Programming Many people who work in software development today have heard of the practice of pair programming , yet it still only has patchy adoption in the industry . One reason for its varying acceptance is that its benefits are not immediately obvious , it pays off more in the medium- and long-term . And it's also not as simple as two people working at a single computer so many dismiss it quickly when it feels uncomfortable . However , in our experience , pair programming is vital for

  • refactoring

    Updated: 2021-03-21 22:39:20
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS tagged by : refactoring Refactoring Guide Refactoring is a disciplined technique for restructuring an existing body of code , altering its internal structure without changing its external behavior . Its heart is a series of small behavior preserving transformations . Each transformation called a refactoring does little , but a sequence of these transformations can produce a significant restructuring . Since each refactoring is small , it's less likely to go wrong . The system is kept fully working after each refactoring , reducing

  • version control

    Updated: 2021-03-21 22:39:04
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS tagged by : version control Patterns for Managing Source Code Branches Modern source-control systems provide powerful tools that make it easy to create branches in source code . But eventually these branches have to be merged back together , and many teams spend an inordinate amount of time coping with their tangled thicket of branches . There are several patterns that can allow teams to use branching effectively , concentrating around integrating the work of multiple developers and organizing the path to production releases . The

  • application architecture

    Updated: 2021-03-21 22:39:03
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS tagged by : application architecture Microservices Guide The microservice architectural pattern is an approach to developing a single application as a suite of small services , each running in its own process and communicating with lightweight mechanisms , often an HTTP resource API . These services are built around business capabilities and independently deployable by fully automated deployment machinery . There is a bare minimum of centralized management of these services , which may be written in different programming languages

  • front-end

    Updated: 2021-03-21 22:39:02
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS tagged by : front-end Micro Frontends Good frontend development is hard . Scaling frontend development so that many teams can work simultaneously on a large and complex product is even harder . In this article we'll describe a recent trend of breaking up frontend monoliths into many smaller , more manageable pieces , and how this architecture can increase the effectiveness and efficiency of teams working on frontend code . As well as talking about the various benefits and costs , we'll cover some of the implementation options that

  • BroadStackTest

    Updated: 2021-03-21 22:39:01
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS BroadStackTest 22 April 2013 Martin Fowler test categories A broad-stack test is a test that exercises most of the parts of a large application . It's often referred to as an end-to-end test or full-stack test It lies in contrast to a ComponentTest which only exercises a well-defined part of a . system The difference between a broad-stack test and a component test is a continuum rather than a clear line . One area where bits can be missing from the fullness of the stack is how the test manipulates the application . Broad-stack

  • SubcutaneousTest

    Updated: 2021-03-21 22:39:01
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS SubcutaneousTest 14 February 2011 Martin Fowler test categories I use subcutaneous test to mean a test that operates just under the UI of an application . This is particulary valuable when doing functional testing of an application : when you want to test end-to-end behavior , but it's difficult to test through the UI itself . Subcutaneous testing can avoid difficulties with hard-to-test presentation technologies and usually is much faster than testing through the UI . The big danger is that , unless you are a firm follower of

  • HumbleObject

    Updated: 2021-03-21 22:39:00
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS HumbleObject 29 April 2020 Martin Fowler testing Some program elements are inherently difficult , or even impossible to test . Any logic in these elements is thus prone to bugs and difficult to evolve . To mitigate this problem , move as much as logic as possible out of the hard-to-test element and into other more friendly parts of the code base . By making untestable objects humble 1 we reduce the chances that they harbor evil . bugs A common example of this is in the user-interface . Some platforms provide no hooks to enable us

  • DeploymentPipeline

    Updated: 2021-03-21 22:39:00
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS DeploymentPipeline 30 May 2013 Martin Fowler continuous delivery build scripting One of the challenges of an automated build and test environment is you want your build to be fast , so that you can get fast feedback , but comprehensive tests take a long time to run . A deployment pipeline is a way to deal with this by breaking up your build into stages . Each stage provides increasing confidence , usually at the cost of extra time . Early stages can find most problems yielding faster feedback , while later stages provide slower

  • productivity

    Updated: 2021-03-21 22:38:55
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS tagged by : productivity Is High Quality Software Worth the Cost A common debate in software development projects is between spending time on improving the quality of the software versus concentrating on releasing more valuable features . Usually the pressure to deliver functionality dominates the discussion , leading many developers to complain that they don't have time to work on architecture and code quality . This debate is based on the assumption that increasing quality also increases costs , which is our common experience .

  • metrics

    Updated: 2021-03-21 22:38:55
    Refactoring Agile Architecture About ThoughtWorks Topics Architecture Refactoring Agile Delivery Microservices Data Testing DSL about me About Books FAQ content Videos Content Index Board Games Photography ThoughtWorks Insights Careers Products follow Twitter RSS tagged by : metrics An Appropriate Use of Metrics Management love their metrics . The thinking goes something like this , We need a number to measure how we 2019 re doing . Numbers focus people and help us measure success . Whilst well intentioned , management by numbers unintuitively leads to problematic behavior and ultimately detracts from broader project and organizational goals . Metrics inherently aren 2019 t a bad thing just often , inappropriately used . This essay demonstrates many of the issues caused by management 2019

Previous Months Items

Mar 2021