≡ Menu

I recently returned from a trip to Israel. It was my first time in Israel, and the trip was a success. I was there teaching TDD to a client in Haifa. I also managed to take some time to visit some of the sights of Haifa and see a little of Tel Aviv. I even managed to get out of the country right as the recent aggressions began.

The purpose of my trip was to provide training for my client in Pragmatic Test Driven Development. While there, I managed to meet with some good friends like Atzmon Hen-Tov, David H. Lorenz and Lior Schachter to discuss an open-source implemenatation of an AOM framework called Ink, which is itself an evolution of ModelTalk.

It was good to see my colleages again and to visit Israel, and even better to get out just in time. Still, I look forward to being able to go back again. I hope to see more of the country next time and to participate in future collaborations with my colleagues.

{ 0 comments }

I just got back from Kraków, Poland last week where I attended JDD 2012. While at the Java developers conference, I presented a talk called “When Should You Consider Meta-Architectures? Using Meta to Scale the Cloud.” I also spoke on the subject, “Pragmatic, Not Dogmatic TDD: Rethinking How We Test” with Rebecca Wirfs-Brock.

I’ve just barely recovered from JDD and now I’m heading to Haifa, Israel. This is my first time in Israel so I’m excited about being there. While there, I’ll be presenting a course on the subject of Test-Driven Development for a client of mine who maintains offices there. I’ve never been to Israel, so I’m excited take in some of the sites in Haifa and possibly Tel Aviv. If you’ll be in the area and would like to get together, get ahold of me.

{ 0 comments }

Just last Saturday, I returned from Dallas, Texas. Today, I leave for Penang, Malaysia! I was in Dallas attending Agile2012. While at the conference, I hosted a workshop with Rebecca Wirfs-Brock on the subject of Testing System Qualities. During the workshop, we showed how to write Quality Scenarios that emphasize architecture capabilities such as usability, security, performance, scalability, internationalization, availability, accessibility and the like.

We also collaborated on a lecture entitled Pragmatic, Not Dogmatic TDD: Rethinking How We Test. During the presentation, we challenged the “norm” for TDD. While we agree that testing should be an integral part of your daily programming practice, we believe that you don’t always need to derive your code via many test-code-revise-retest cycles to be test-driven.

I had great time at the conference and especially enjoyed meeting up with friends like Linda Rising and Jutta Eckstein.

Next on the agenda is a trip to Penang, Malaysia.  I am excited to be making my first trip to Malaysia.  The purpose of my trip is to teach a course on Pragmatic Test Driven Development.  While there, I will be visiting with a friend and taking the time to do a bit of site seeing.  

 

{ 0 comments }
I am currently in Panama City Panama for the first International Symposium on Software Architecture and Patterns.  It is being held in conjunction with the tenth Latin American and Caribbean Conference for Engineering and Technology. I was on the Planning Committee for the convention this year and I have been asked to give a keynote address.

The following is a description of my keynote address which is entitled “When Should You Consider Meta-Architectures? Using Meta to Scale the Cloud.”

The recent surge in cloud computing has really changed the way architectures are evolving. Platforms as a Service (PAAS) and Software as a Service (SAAS) is becoming where organizations can get necessary resources as needed without having to worry about many hardware and software configuration issues. It is no longer the case that systems need to be isolated to a single platform or set of platforms with a lot’s of possible maintenance issues. The core premise with the cloud is that different resources including services can be allocated and integrated as needed, adapting to the specific needs of the organization or systems being built.

Additionally, “Cloud Computing” allows for a large numbers of users and flexibility for different services being provided. Different types of resources and services provide maximum configuration and flexibility within the cloud and metadata is key for this type of variability. , It is quite often the case that cloud applications need to be able to dynamically adapt at runtime, without stopping the application. It is important to provide a way for users to customize their own experience with cloud applications. Trying to do this without ways for users to describe and adapt to their specific needs will not scale at all. This scaling and adaptability problem becomes even more imperative when you have many different organizations with different requirements. If, in the cloud, these organizations cannot adapt and define their different needs, the cloud solution would not be that compelling to them. In these situations, it is important to allow the ability for different customizations of the services, and to allow the users themselves to dynamically configure the systems. In order to be able to adapt to these dynamic requirements, the demand for Meta-architectures, such as those provided by Cloud solutions such as SalesForce, are necessary to make these types of adaptability possible!

What does it take to build a system that can be changed and adapted without programming? When is it appropriate to consider stepping into the meta world to build such an extensible system specifically in the “Cloud” environment? This talk answers these questions and presents ideas about using meta-architecture to scale in the “Cloud”.

I am also leading a BootCamp that focuses on teaching the principals of writing and being a part of the patterns community.

This is my first time to Panama and have enjoyed seeing the sites and taking many photos of the Panama Canal, Old City Ruins and the old city, which was rebuilt after the city was burned down by pirates in the early 1600’s! Panama is very modern now with huge growth and growing economy.

{ 0 comments }

I’m excited to be travelling once again to the beautiful city of Porto, Portugal where I’ve been asked to give a Keynote at Agile Portugal on June 23rd, 2012.

The topic of my keynote will be Pragmatic, Not Dogmatic TDD: Rethinking How We Test. This talk will discuss why I believe that a more pragmatic, rather than dogmatic, approach to test-driven development will not only better enable developers to build the right things, but can also lead to higher quality code.  Blindly following TDD practices can oftentimes focus primarily on the creation of unit tests that may or may not be of high value, at the expense of other coding and design practices. This can have the effect of limiting rather than driving development. Tests and knowing how to validate your system should definitely drive your development. But by being more “practical” about your testing, focusing more on what is important, you can end up with better results.  Additionally, I will cover different testing rhythms and other practices that developers should consider as part of Pragmatic TDD. Go here for more information about Pragmatic TDD.

While at the conference, I have also been asked to participate in a Fishbowl Panel. During the panel, I will participate with Richard P. Gabriel and other conference speakers in a spirited debate about “Transitioning to Agile? Tips, Tricks, Traps, and Pitfalls.“ This should be a great trip, as I will catch up with old friends in Porto as well as make some new ones.  I also look forward to the great scenery and seafood in Portugal.

{ 0 comments }

by Joseph Yoder & Rebecca Wirfs-Brock

What do we mean by Pragmatic TDD?

Pragmatic Test Driven Development (TDD) is a practical approach to testing that focuses on the bigger picture of how testing best fits into and enhances your team’s software development practices. Rather than insisting that developers only write a lot of unit tests, you need to find a testing strategy that gives you higher quality software. You need to determine how testing best fits into your development context with your developers for your kind of software.

The typical approach to TDD usually focuses on having developers write many unit tests that may or may not add value. Instead, we recommend you adopt a testing strategy that gives you the most leverage. So, for example, rather than merely writing many unit tests, you can often get more value by defining the appropriate user-level acceptance tests. Testing should drive your development (but not at the expense of every other coding and design practice). One size or one approach for testing does not fit every organization or team.

One thing that has discouraged people from incorporating TDD into their organization is the common misperceptions that tests should always be written first, before writing any production code, and, that tests and code should be developed in many tiny increments. We believe that TDD is more about thinking carefully about how best to validate that your software meets your requirements. Testing and validation should drive your development process (that’s why we are fans of being Test Driven), but we think there is so much more to testing than writing lots of unit tests.

What do we mean by different testing rhythms?

We believe that you should pay attention to testing and that it should be an integral part of your daily programming practice. But we don’t insist that you always evolve tests along with your code in many short cycles. Some find it more natural to outline some tests first, and use those test scenarios to guide them as they write code. Once they’ve completed a “good enough” implementation that supports the test scenarios, they then write those tests and incrementally fix any bugs as they go. As long as you don’t write hundreds of lines of code without any testing, we think this style is OK too (and we don’t insist on one style over the other).

What are the testing practices you should consider?

There’s a lot to becoming proficient at TDD. Developing automated test suites, refactoring and reworking tests to eliminate duplication, and testing for exceptional conditions, are just a few. Additionally, acceptance tests, smoke tests, integration, performance and load tests support incremental development as well. If all this testing sounds like too much work, well…let’s get practical. Testing shouldn’t be done just for testing’s sake. Instead, the tests you write should give you leverage to confidently change and evolve your code base and validate the requirements of the system. That’s why it is important to know what to test, what not to test, and when to stop testing.

So, where should you start?

It is important to establish a team testing culture. Get the team on board using similar techniques and tools. Try some different approaches and then as a group reflect on what you’ve learned (have a retrospective). If you are starting a new project you might take a quite different approach than you would with an existing code base. It’s important to not get overwhelmed. Pick an area you want to focus on. For example, it’s much easier to write unit tests for new functionality. But sometimes you want to focus on writing tests for existing code that is buggy or needs to be modified. This can be more difficult. Maybe you want to concentrate on developing integration tests and automating them first (so that you can streamline your build and deploy process). It all depends on where you want to invest first. Just start modestly, grow your testing practices, and measure the impacts of your testing effort and benefits as you go. Of course the most important thing is to start somewhere and have testing become an important part of your development process.

The Refactory, Inc. principal Joseph Yoder & The Refactory, Inc. associate Rebecca Wirfs-Brock will be hosting a Pragmatic Test-driven Development course January 25-27, 2012 in the Portland Metro area.     Register Now!

{ 0 comments }

Joseph Yoder and Rebecca Wirfs-Brock will teach a Pragmatic TDD public course in Tigard, Oregon.

Course Info:

Courtyard Marriott – Tigard
15686 SW Sequoia Parkway
Tigard, OR 97224

First quarter of 2012

Test-driven development (TDD) means writing unit tests along with production code. It leads to modular, flexible and extensible code. Many aspire to follow TDD practices however few know how to do so effectively. Join Joseph Yoder, founder of the Refactory and Rebecca Wirfs-Brock, inventor of Responsibility-Driven Design as you learn Pragmatic TDD. In this 3 day intensive course you’ll learn several natural rhythms of testing, design and programming, uncover how refactoring affects tests, and see how acceptance and system quality tests support and enhance core TDD practices.

Limited space. Register for the Course Today!

{ 0 comments }

As I finish this last day in South Korea, I’m reminded of the entire trip. It started a few months ago, with talks held in the balmy Florida heat. Today they’re fnished and I’m grateful to have been a part of such an exciting trip that took me literally halfway across the world to teach the principles that I support and have such passion for.

I traveled to South Korea on the Fourth of July. I went knowing that I would be teaching a TDD course to a talented group of developers. The TDD course was tailored to the medical domain. I have worked within the medical domain on several projects throughout the years. The course went well and a few surprises happened as well.

I got invited to a software architecture conference. I gave a keynote address at the conference. The entire talk was translated for the largely Korean speaking audience. The talk was using “Meta to Scale the Cloud.” The conference was called Korea Software Architecture Summit (KSAS).

It’s good to see the Agile movement taking root in South Korea. I met with the Seoul Agile Users Group and gave a talk on “Test Driven Development, Refactorinng, Patterns and Adaptive Object Models.” The enthusiasm was clearly visible at the conference. People were engaged. I look forward to making my way back to South Korea someday.

{ 0 comments }

I’m in Douro Valley, Portugal for the MetaPLoP conference. I’m excited to see the results of this weekend’s efforts. The conference will be mining patterns for the best of the lot. We’ll be talking, discussing, and reviewing patterns related to Meta-Architectures, Adaptive Object Models, and Reflective Systems. The best patterns should stand out from the rest, being set apart by their merits.

I’m excited to be here with Hugo Sereno Ferreira, Filipe Correia, Eduardo Guerra, Ademar Aguiar, Lior Schachter, Rebecca Wirfs-Brock, and Allen Wirfs-Brock. I’m looking forward to a great event. I will update with any news that comes out of the talks.

{ 0 comments }

I’m currently at Agile Portugal. The conference will be over soon and then it’ll be time for MetaPLoP in Douro Valley. I was excited today to give my “Rulemakers and Toolmakers: Adaptive Object Models as Agile Division of Labor” tutorial. Rebecca Wirfs-Brock and I have worked hard to refine and enliven this tutorial. You can read more about it on the Agile PT page. We think it was a total success.

The big surprise of the day happened when I was asked to speak in place of Dave Thomas who couldn’t make the conference.  The talk was titled, “Lean – The Foundation for Agility Increase Value, Reduce Waste, Improve Flow.” I think it went well too. The focus on Agile methods speaks to a lot of my own experience. If you were at the talk, I would love to hear your comments.

{ 0 comments }