177 symposiums and 27,750 attendees since 2002

Neal Ford

Application Architect at ThoughtWorks, Inc.

Neal is Software Architect and Meme Wrangler at ThoughtWorks, a global IT consultancy with an exclusive focus on end-to-end software development and delivery.
Before joining ThoughtWorks, Neal was the Chief Technology Officer at The DSW Group, Ltd., a nationally recognized training and development firm. Neal has a degree in Computer Science from Georgia State University specializing in languages and compilers and a minor in mathematics specializing in statistical analysis.
He is also the designer and developer of applications, instructional materials, magazine articles, video presentations, and author of 6 books, including the most recent The Productive Programmer. His language proficiencies include Java, C#/.NET, Ruby, Groovy, functional languages, Scheme, Object Pascal, C++, and C. His primary consulting focus is the design and construction of large-scale enterprise applications. Neal has taught on-site classes nationally and internationally to all phases of the military and to many Fortune 500 companies. He is also an internationally acclaimed speaker, having spoken at over 100 developer conferences worldwide, delivering more than 600 talks. If you have an insatiable curiosity about Neal, visit his web site at http://www.nealford.com. He welcomes feedback and can be reached at nford@thoughtworks.com.

Video

IntelliJ Tips & Tricks
IntelliJ Tips & Tricks
Wednesday - May 14, 2008

Neal Ford on Polyglot Programming
Neal Ford on Polyglot Programming
Friday - April 4, 2008

Clean Up Your Code
Clean Up Your Code
Thursday - July 12, 2007

Prelude - The Agile Experience
Prelude - The Agile Experience
Sunday - June 3, 2007

How Do You Deal with SOA?
How Do You Deal with SOA?
Tuesday - April 17, 2007


Blog

Orlando JUG on Thursday June 25th

Posted Tuesday, June 23, 2009

If you are anywhere nearby, come see me at the Orlando JUG on June 25th, 2009. I'll be giving my newly revamped Real-World Refactoring talk. By revamped, I mean that I've added a bunch of examples of archi more »

AML (Arbitrary Modeling Language)

Posted Wednesday, June 10, 2009

UML is a failure. It failed for several reasons. Mainly, it failed because it falls into the cracks between technical people (developers, architects) and non-technical people (busin more »

Mac Boot Mysteries

Posted Tuesday, May 26, 2009

This is long, digressive story about diagnosing a hardware problem on a Mac; if you dislike such stories, feel free to leave now.About a week ago, my wife Candy complains to me that her Mac won't boot up. This is my han more »

RailsWayCon

Posted Monday, May 11, 2009

The economic downturn has affected conference attendance. At the conferences where I've spoken in the US, attendance seems to be down 20-30% from last year. However, it doesn't seem to have been as bad at European more »

Confessions of a Reformed Titilator

Posted Friday, May 1, 2009

The Rails community has a real brouhaha on its hands, but it's a red herring that it happens to be Ruby and Rails because it's a pervasive problem in scientific and engineering fields of all kinds. It seems that a present more »

Guerrilla SOA (SOA & The Tarpit of Irrelevancy)

Posted Wednesday, April 22, 2009

This is the sixth in a series of blog posts where I discuss what I see wrong with SOA (Service Oriented Architecture) in the way that it's being sold by vendors. For those who are behind, you can read the previous installm more »

Speaking at the Colgne JUG Monday, April 20th

Posted Saturday, April 11, 2009

I'll be speaking at the Cologne Java Users Group on the eve of the JAX Conference, on Monday, April 20th at 7 PM. I'm letting the JUG organizer pick the topic, so I'm not sure what I'll be talking about, but I'm looking fo more »

Real World Refactoring in NFJS the Magazine

Posted Thursday, April 9, 2009

Several people have asked me what ever happened to the NFJS Anthology book series (The NFJS Anthology, Volume 1 and The NFJS Anthology, Volume 2: What Every Software Developer Should Know. Both books contained essays built a more »

RailsConf Interview by Chad Fowler with Paul Gross and me

Posted Monday, April 6, 2009

One of the marketing tools that RailsConf uses is a series of interviews with upcoming talks. Chad sent some interview questions to Paul and myself around our upcoming talk Rails in the Large: Building the Largest Rails Appli more »

The Triumph of Hope over Reason (SOA & The Tarpit of Irrelevancy)

Posted Monday, March 23, 2009

This is the fifth in a series of blog posts where I discuss what I see wrong with SOA (Service Oriented Architecture) in the way that it's being sold by vendors. For those who are behind, you can read the previous installments more »

Rubick's Cubicle (SOA & the Tarpit of Irrelevancy)

Posted Tuesday, March 10, 2009

This is the fourth in a series of blog posts where I discuss what I see wrong with SOA (Service Oriented Architecture) in the way that it's being sold by vendors. For those who are behind, you can read the previous installments more »

Emergent Design & Evolutionary Architecture at DeveloperWorks

Posted Tuesday, February 24, 2009

For the last few months, I've been toiling away on an article series for IBM DeveloperWorks, and it's rolling out today! From the abstract for the series opener: This series aims to provide a fresh perspective on the often-discu more »

Speaking at the IT Architect Regional Conference in Atlanta

Posted Monday, February 16, 2009

At the end of February (the 25th - 27th), I'll be making a rare Atlanta conference appearance at the IT Architect Regional Conference, hosted by the International Association of Software Architects (IASA). This is the first in a s more »

Tools & Anti-Behavior (SOA & the Tarpit of Irrelevancy)

Posted Friday, February 6, 2009

This is the third in a series of blog posts where I discuss what I see wrong with SOA (Service Oriented Architecture) in the way that it's being sold by vendors. For those who are behind, you can read the first installment and second more »

On the Lam from the Furniture Police at Agile Atlanta

Posted Sunday, February 1, 2009

I have two keynotes this year that I'm presenting at one conference or another. The first out of the gate was my talk entitled On the Lam from the Furniture Police at the Code Freeze conference. This talk has m more »

Why You Should Attend RubyRx

Posted Wednesday, January 28, 2009

I attend a lot of conferences as a speaker, covering Java, .NET, Ruby, and Agility (plus a few other random topics). The most obvious differences between all these conferences are the technical topics, but other surprising differ more »

Upcoming Keynote: Smithying in the 21st Century

Posted Wednesday, January 21, 2009

I have two keynotes that I'm giving at various conferences this year. The first out of the gate was On the Lam from the Furniture Police, which I debutted at the Code Freeze conference in Minneapolis -- I'll have more to say about this more »

Standards Based vs. Standardized (SOA & the Tarpit of Irrelevancy)

Posted Sunday, January 11, 2009

This is the second in a series of blog posts where I discuss what I see wrong with SOA (Service Oriented Architecture) in the way that it's being sold by vendors. The first installment is here.Back in the very early days of Java web deve more »

Tactics vs. Strategy (SOA & The Tarpit of Irrelevancy)

Posted Friday, January 2, 2009

This is the first in a series of blog posts where I discuss what I see wrong with SOA (Service Oriented Architecture) in the way that it's being sold by vendors. The first installment is about how the need for SOA arose: tact more »

Conferences in Emerging Tech Countries

Posted Thursday, December 11, 2008

I speak at lots of conferences in the US and Europe, and they pretty much have the same feel (modulo different languages, both programmer and spoken). But I also speak at a few conferences in emerging technology markets, like my recent con more »
Read More Blog Entries »

Presentations

Regular Expressions in Java

Regular expressions should be an integral part of every developer?s toolbox, but most don?t realize what an important topic it is. more »

Introduction to JRuby

This session describes JRuby, the 100% pure-Java implementation of the Ruby programming language. It covers the basics of programming with JRuby and examples of how to integrate it into existing Java projects. more »

Code Metrics & Analysis for Agile Projects

What does code + methodology have to do with one another? Everything! Agile projects focus on delivering working code, and tools exist to allow you to verify some quality metrics for your code. more »

Agile Project Management (With Just a Bit About Mingle)

You can read books about Agile projects, but you must consult real-world experience to really understand the dynamics of agile project management. This session discusses agile management topics including estimation, project tracking, and useful metrics (a more »

Test Driven Design

Most developers think that "TDD" stands for Test-driven Development. But it really should stand for "Test-driven Design". Rigorously using TDD makes your code much better in multiple ways more »

"Design Patterns" in Dynamic Languages

The Gang of Four book should have been entitled "Palliatives for Statically Typed Languages", because the recipes it provides are cumbersome solutions to the problems it poses. Using powerful languages makes the solutions in the GoF book look hopelessly c more »

Meta-programming JRuby for Fun & Profit

Ruby is the revenge of the Smalltalkers. Not since Smalltalk has a language had such powerful meta-programming facilities. While this may seem like a minor feature, it turns out that surgical meta-programming allows solutions to problems that are clearer, more »

Real World Agile

There's the perfect world, and then there's the world you have to live in. Lots of organizations would like to reap the benefits of Agile development techniques but don't know how to get started. This session discusses the key benefits you can derive from more »

Test-driven Design

This session demonstrates how stringent TDD improves the structure of your code more »

The Productive Programmer: Mechanics

Developers from the 1980s would be shocked at how inefficiently developers use their computers because of the advent of graphical operating systems. This talk describes how to reclaim productivity afforded by intelligent use of command lines and other way more »

Web 2.0 Punchlist: Making Your Web Applications Suck Less

Provides a punchlist to ensure your shiny new web application is up to spec more »

Communication Skills for Geeks

Software is fundamentally a communications game, and good skills differentiates between good and great developers. This session describes communication techniques and skills to people who skipped English 102 to hack some code. I talk about effective commu more »

Emergent Design & Evolutionary Architecture

Most of the software world has realized that BDUF (Big Design Up Front) doesn't work well in software. But lots of developers struggle with this notion when it applies to architecture and design. Surely you can't just start coding, right? more »

Hands-on Agile Development

BRING YOUR LAPTOP WITH YOU, BUT A LAPTOP ISN'T REQUIRED! Reading and hearing about agile practices is one thing, but actually doing it is completely different. This session puts you to work in an agile fashion, applying agile developer practices more »

Construction Techniques for Domain Specific Languages

This talk covers language techniques in Java, Groovy, and Ruby on how and why to create DSLs, and also covers the very important topic of implicit context, and how language constructs can allow you to write less verbose and more expressive code more »

Real-world Refactoring

Refactoring is a fine academic exercise in the perfect world, but we don't really live there. Even with the best intentions, projects build up technical debt and crufty bad things. This session covers refactoring in the real world, at both the atomic leve more »

Unit Testing that Sucks Less: Small Things that Make a Big Difference

Unit testing seems to a lot of managers and developers like pure overhead, but professionally responsible developers know that it is one of the keys to quality. This session covers a bunch of small tools that makes testing easier & faster. I talk about to more »

Visualizations for Code Metrics

Judicious use of metrics improves the quality of your code. But interpreting metrics presents a challenge. You have a list of numbers for a project - what does it mean? more »

Web 2.0 Punchlist: Making Your Web Applications Suck Less

When you buy a new house, you tour the new property with the builder with a punchlist, finding all the fit and finish things that aren't quite right yet. You've built your web site, and it all seems to be working. Where's the punchlist for your web site? more »

Keynote: On the Lam from the Furniture Police

When you were hired by your current employer, you may think it's because of your winning personality, your dazzling smile, or your encyclopedic knowledge of [insert technology here]. But it's not. You were hired for your ability to sit and concentrate for more »

Regular Expressions in Java

close

Neal Ford By Neal Ford
Regular expressions should be an integral part of every developer?s toolbox, but most don?t realize what an important topic it is. Regular expressions have existed for decades, but many developers don't understand how to take full advantage of this powerful mechanism, either through command line tools and editors or in their development.

This session shows how to fully exploit regular expressions. It begins with the basic premise of how regular expressions work, then shows how to take advantage of the RegEx library built into the Java platform. This session shows how to use wildcards, escape characters, meta-tags, character class operators, look-aheads/look-behinds, and how to use the greedy operators effectively. It covers regular expressions from the beginning through to advanced usage, both in Java and in tools that support regular expressions. This session is packed with real examples of regular expressions (including a game show with no fabulous prizes).

Key Session Points:

  • Regular expressions defined
  • Examples
  • Using the regex classes in Java
  • Regular expression techniques
  • Patterns
  • Groups and subgroups
  • RegEx Game Show!
  • Back references
  • Greedy, reluctant, and possessive qualifiers
  • Lookaheads and lookbehinds
  • Practical regular expressions
  • Best practices
  • Common Regex mistakes

  • Introduction to JRuby

    close

    Neal Ford By Neal Ford
    This session describes JRuby, the 100% pure-Java implementation of the Ruby programming language. It covers the basics of programming with JRuby and examples of how to integrate it into existing Java projects.


    Like hamburger & fries and turkey & dressing, JRuby allows you to harness the awesome power of Ruby in your Java projects. This session describes the origins, capabilities, and limitations of JRuby, the 100% pure-Java implementation of the Ruby programming language. This session also demonstrates some areas where it makes sense to mixin Ruby and Java code: Rails on Java, testing, and dynamic programming. JRuby is a powerful implementation of Polyglot Programming, and this session shows you how to leverage this cutting-edge concept.

    Session Topics:

    • JRuby's origins
    • Calling Java from Ruby
    • Calling Ruby from Java
    • Limitations and pitfalls
    • Example usage
      • Rails on Java
      • Testing
      • Dynamic programming
    • The future

    Code Metrics & Analysis for Agile Projects

    close

    Neal Ford By Neal Ford
    What does code + methodology have to do with one another? Everything! Agile projects focus on delivering working code, and tools exist to allow you to verify some quality metrics for your code. This session is a survey of tools and metrics that allow you to determine the quality of your code and strategies to "wire it" into your agile project.


    Agile projects focus on delivering code. The responsibility for the quality of that code lies with developers. Yet most developers have a poor sense of how to gauge the quality of code, both during development and forensically. This talk lives on the boundary between what is important in agile projects and ways to verify code quality. It is both a survey of tools and metrics and strategies for proactively applying these techniques to ongoing projects. I talk about the Hawthorne effect, analysis tools (both byte and source code), useful metrics, tools for generating metrics, and how to analyze raw data into actionable tasks.

    Session Topics:

    • The Hawthorne Effect
    • How Agility and Metrics Feed Each Other
    • Analysis Tools
      • FindBugs
      • PMD/CPD
    • Testing Metrics
    • Cyclomatic Complexity
    • Chidamber and Kemerer Object-oriented Metrics
    • JDepend
    • Code Change Risk Analyzer and Predictor for Java
    • Panopticode
    • Tools

    Agile Project Management (With Just a Bit About Mingle)

    close

    Neal Ford By Neal Ford
    You can read books about Agile projects, but you must consult real-world experience to really understand the dynamics of agile project management. This session discusses agile management topics including estimation, project tracking, and useful metrics (and how to obtain them). And just a little about Mingle, the agile project tracking tool from ThoughtWorks.


    OK, sure, you can read the XP Explained book. Now what? Agile project management in the real world requires understanding of not just the practices but why they work. This talk delves into several topics relevant to agile project management, including estimation, project tracking, accurate project metrics (and the practices that make them possible). This talk is designed to describe some of the nuances required to handle real agile projects, along with a demonstration of some of the artifacts ThoughtWorks uses to track projects (the most elaborate spreadsheet you've ever seen!). And, towards the end, I show how our experience has culminated into Mingle, the agile project tracking tool from ThoughtWorks with skinnable religion.

    Test Driven Design

    close

    Neal Ford By Neal Ford
    Most developers think that "TDD" stands for Test-driven Development. But it really should stand for "Test-driven Design". Rigorously using TDD makes your code much better in multiple ways.

    This session demonstrates how stringent TDD improves the structure of your code. I discuss TDD as a technique for vetting consumer calls, using mock objects to understand complex interactions between collaborators, and some discussions of improved code metrics yielded by TDD. This session shows that TDD is much more than testing: it fundamentally makes your code better at multiple levels.

    "Design Patterns" in Dynamic Languages

    close

    Neal Ford By Neal Ford
    The Gang of Four book should have been entitled "Palliatives for Statically Typed Languages", because the recipes it provides are cumbersome solutions to the problems it poses. Using powerful languages makes the solutions in the GoF book look hopelessly complicated. This session shows how to solve the same problems concisely, elegantly, and with far fewer lines of code using the facilities of dynamic languages.

    The Gang of Four book was actually 2 books: a nomenclature describing common software problems and a recipe book for solutions. The vocabulary they defined is still useful. The recipes are a disaster! Dynamic languages (like Groovy and Ruby) have powerful meta-programming facilities far beyond statically typed languages. It turns out that many of the structural design patterns in the Gang of Four book and beyond are much easier to solve with meta-programming. This session compares and contrasts the "traditional" approach of design patterns with a more nuanced meta-programming approach. Using language features creates cleaner abstractions with fewer lines of code and little or no additional structure. This session shows one of the many reasons that dynamic languages are such a hot topic.


    Meta-programming JRuby for Fun & Profit

    close

    Neal Ford By Neal Ford
    Ruby is the revenge of the Smalltalkers. Not since Smalltalk has a language had such powerful meta-programming facilities. While this may seem like a minor feature, it turns out that surgical meta-programming allows solutions to problems that are clearer, more concise, more maintainable, and take orders of magnitudes fewer lines of code.

    This session shows one of the reasons that JRuby is the most
    powerful mainstream language today: meta-programming. It shows tons of
    meta-programming techniques in Ruby, including open classes, the shadow
    meta-class, defining methods, method_ & const_missing, dynamically
    adding and removing mixins, and more. And each of these comes with an
    example that actually makes sense!

    Session Topics

    • Modules
    • Structs
    • Freezing
    • Messages and Dynamic Invocation
    • The Shadow Meta-class
    • Code as Objects
    • Delegation
    • Open Classes
    • Aspects
    • Missing!
      • Const
      • Method
    • Reflection
    • Mixology


    Real World Agile

    close

    Neal Ford By Neal Ford
    There's the perfect world, and then there's the world you have to live in. Lots of organizations would like to reap the benefits of Agile development techniques but don't know how to get started. This session discusses the key benefits you can derive from Agile software development so that you can decide for yourself how many agile techniques will work within your organization.

    I discuss project planning and estimation, how to benefit from pair programming when you aren't allowed to pair, how to measure your progress, and other project milestones. Agile software development isn't just an unrelated set of activities, it is a discipline. Once you understand the component parts of the discipline, you can apply them to your less-than-agile world.

    Test-driven Design

    close

    Neal Ford By Neal Ford
    This session demonstrates how stringent TDD improves the structure of your code.

    I discuss TDD as a technique for vetting consumer calls, using mock objects to understand complex interactions between collaborators, and some discussions of improved code metrics yielded by TDD. This session shows that TDD is much more than testing: it fundamentally makes your code better at multiple levels.

    The Productive Programmer: Mechanics

    close

    Neal Ford By Neal Ford
    Developers from the 1980s would be shocked at how inefficiently developers use their computers because of the advent of graphical operating systems. This talk describes how to reclaim productivity afforded by intelligent use of command lines and other ways of accelerating your interaction with the computer and bending computers to do your bidding. Stop working so hard for your computer!

    In The Productive Programmer, I identify 4 principles of productivity: acceleration, focus, automation, and canonicality. This session defines the principles and describes their use, but the primary focus of this talk is on real-world examples of how you can use these principles to make yourself a more productive programmer. Acceleration covers ways to speed up development by taking command of your computer. This includes keyboard shortcuts (including ways to learn them and make better use of them) in both IntelliJ and Eclipse. Focus describes how you can utilize your environment (both physical and computer) to greatly enhance your productivity. Canonicality (the DRY principle from The Pragmatic Programmer) discourages repeating artifacts in projects. This talk shows effective ways to avoid this repetition. I show examples of creating DRY documentation, O/R mapping, database schemas, and development environments. Automation refers to making the computer do more work for you. This talk includes tons of examples, all culled from real-world projects

    Web 2.0 Punchlist: Making Your Web Applications Suck Less

    close

    Neal Ford By Neal Ford
    Provides a punchlist to ensure your shiny new web application is up to spec.

    When you buy a new house, you tour the new property with the builder with a punchlist, finding all the fit and finish things that aren't quite right yet. You've built your web site, and it all seems to be working. Where's the punchlist for your web site? This session gives you just that: a checklist you can use to verify that your web application is ready for occupation. I cover things like where import your JavaScript and CSS, how to handle images so that they are aggressively cached, how much you should care about XHTML, and lots more. This talk will give you a fit and finish check list you can apply to your shiny new web application to see if it's up to spec.

    Communication Skills for Geeks

    close

    Neal Ford By Neal Ford
    Software is fundamentally a communications game, and good skills differentiates between good and great developers. This session describes communication techniques and skills to people who skipped English 102 to hack some code. I talk about effective communication techniques for presentations, documentation, memos, and how to sell your technical ideas to a non-technical crowd.

    Software is fundamentally a communications game, and good skills differentiates between good and great developers. This session describes communication techniques and skills to people who skipped English 102 to hack some code. I talk about effective communication techniques for presentations, documentation, memos, and how to sell your technical ideas to a non-technical crowd.

    Emergent Design & Evolutionary Architecture

    close

    Neal Ford By Neal Ford
    Most of the software world has realized that BDUF (Big Design Up Front) doesn't work well in software. But lots of developers struggle with this notion when it applies to architecture and design. Surely you can't just start coding, right? You need some level of understanding before you can start work. This session describes the current thinking about emergent design & evolutionary architecture, including both proactive (test-driven development) and reactive (refactoring, composed method) approaches to discovering design. The goal of this talk is to provide nomenclature, strategies, and techniques for allowing design to emerge from projects as they proceed, keeping you code in sync with the problem domain.

    Most of the software world has realized that BDUF (Big Design Up Front) doesn't work well in software. But lots of developers struggle with this notion when it applies to architecture and design. Surely you can't just start coding, right? You need some level of understanding before you can start work. This session describes the current thinking about emergent design & evolutionary architecture, including both proactive (test-driven development) and reactive (refactoring, composed method) approaches to discovering design. The goal of this talk is to provide nomenclature, strategies, and techniques for allowing design to emerge from projects as they proceed, keeping you code in sync with the problem domain.

    Hands-on Agile Development

    close

    Neal Ford By Neal Ford
    BRING YOUR LAPTOP WITH YOU, BUT A LAPTOP ISN'T REQUIRED! Reading and hearing about agile practices is one thing, but actually doing it is completely different. This session puts you to work in an agile fashion, applying agile developer practices.

    Reading and hearing about agile practices is one thing, but actually doing it is completely different. This session puts you to work in an agile fashion, applying agile developer practices. During this session, we're going to take a problem and iteratively develop the solution, using test-driven development, pair programming, retrospectives, pair rotation, and other agile development techniques. We should be able to get through about 3 20-minute iterations during the 90 minutes, giving you a hands-on feel for real agile development. If you have a laptop, bring it, but only half the class needs one, so if you don't have a laptop, don't let it discourage you. Come see what it's like to work on a real agile project, even if it's just 90 minutes.

    Construction Techniques for Domain Specific Languages

    close

    Neal Ford By Neal Ford
    This talk covers language techniques in Java, Groovy, and Ruby on how and why to create DSLs, and also covers the very important topic of implicit context, and how language constructs can allow you to write less verbose and more expressive code.

    Domain specific languages have been the Next Big Thing for years now, but they have quietly started penetrating the development world. This talk covers language techniques in Java, Groovy, and Ruby on how and why to create DSLs. This session demonstrates with motivation for converting APIs into DSLs, and various patterns, anti-patterns, and best practices for how to achieve the optimum effect. This talk also covers the very important topic of implicit context, and how language constructs can allow you to write less verbose and more expressive code.

    Real-world Refactoring

    close

    Neal Ford By Neal Ford
    Refactoring is a fine academic exercise in the perfect world, but we don't really live there. Even with the best intentions, projects build up technical debt and crufty bad things. This session covers refactoring in the real world, at both the atomic level (how to refactor towards composed method and the single level of abstraction principle) to larger project strategies for multi-day refactoring efforts. This talk provides practical strategies for real projects to effectively refactor your code.

    Refactoring is a fine academic exercise in the perfect world, but we don't really live there. Even with the best intentions, projects build up technical debt and crufty bad things. This session covers refactoring in the real world, at both the atomic level (how to refactor towards composed method and the single level of abstraction principle) to larger project strategies for multi-day refactoring efforts. This talk provides practical strategies for real projects to effectively refactor your code.

    Unit Testing that Sucks Less: Small Things that Make a Big Difference

    close

    Neal Ford By Neal Ford
    Unit testing seems to a lot of managers and developers like pure overhead, but professionally responsible developers know that it is one of the keys to quality. This session covers a bunch of small tools that makes testing easier & faster. I talk about tools like Infinitest, Jester, MockRunner, Hamcrest, Groovy, RSpec/EasyB, Selenium, and others. While none of these tools is elaborate enough for it's own session, together they add up to more than the sum of the parts. This session shows tools and strategies to streamline testing, making easier and more palatable for both managers and developers.

    Unit testing seems to a lot of managers and developers like pure overhead, but professionally responsible developers know that it is one of the keys to quality. This session covers a bunch of small tools that makes testing easier & faster. I talk about tools like Infinitest, Jester, MockRunner, Hamcrest, Groovy, RSpec/EasyB, Selenium, and others. While none of these tools is elaborate enough for it's own session, together they add up to more than the sum of the parts. This session shows tools and strategies to streamline testing, making easier and more palatable for both managers and developers.

    Visualizations for Code Metrics

    close

    Neal Ford By Neal Ford
    Judicious use of metrics improves the quality of your code. But interpreting metrics presents a challenge. You have a list of numbers for a project - what does it mean? And what does it tell me about the health of the project overall? This sessions shows how to produce visualizations for software metrics, making them easier to understand and more valuable. It covers metrics at the individual method level all the way up to the overall architecture of the application. This isn't just a talk about how some tools produce visualizations: this session shows you how to generate your own visualizations, allowing you to customize it to the level in information density that shows real value on your project. I show how to produce projected graphs from dependencies, heat-maps for cyclomatic complexity and code coverage, using XSLT to extract visual information from XML configuration documents, and others. Metrics can't help you if you can't understand them. By creating visualizations, it helps leverage metrics to make your code better.

    Judicious use of metrics improves the quality of your code. But interpreting metrics presents a challenge. You have a list of numbers for a project - what does it mean? And what does it tell me about the health of the project overall? This sessions shows how to produce visualizations for software metrics, making them easier to understand and more valuable. It covers metrics at the individual method level all the way up to the overall architecture of the application. This isn't just a talk about how some tools produce visualizations: this session shows you how to generate your own visualizations, allowing you to customize it to the level in information density that shows real value on your project. I show how to produce projected graphs from dependencies, heat-maps for cyclomatic complexity and code coverage, using XSLT to extract visual information from XML configuration documents, and others. Metrics can't help you if you can't understand them. By creating visualizations, it helps leverage metrics to make your code better.

    Web 2.0 Punchlist: Making Your Web Applications Suck Less

    close

    Neal Ford By Neal Ford
    When you buy a new house, you tour the new property with the builder with a punchlist, finding all the fit and finish things that aren't quite right yet. You've built your web site, and it all seems to be working. Where's the punchlist for your web site? This session gives you just that: a checklist you can use to verify that your web application is ready for occupation. I cover things like where import your JavaScript and CSS, how to handle images so that they are aggressively cached, how much you should care about XHTML, and lots more. This talk will give you a fit and finish check list you can apply to your shiny new web application to see if it's up to spec.

    When you buy a new house, you tour the new property with the builder with a punchlist, finding all the fit and finish things that aren't quite right yet. You've built your web site, and it all seems to be working. Where's the punchlist for your web site? This session gives you just that: a checklist you can use to verify that your web application is ready for occupation. I cover things like where import your JavaScript and CSS, how to handle images so that they are aggressively cached, how much you should care about XHTML, and lots more. This talk will give you a fit and finish check list you can apply to your shiny new web application to see if it's up to spec.

    Keynote: On the Lam from the Furniture Police

    close

    Neal Ford By Neal Ford
    When you were hired by your current employer, you may think it's because of your winning personality, your dazzling smile, or your encyclopedic knowledge of [insert technology here]. But it's not. You were hired for your ability to sit and concentrate for long periods of time to solve problems, then placed in an environment where it's utterly impossible to do that! Who decides that, despite overwhelming evidence that it's bad for productivity and people hate it, that you must sit in a cubicle? The furniture police! This keynote describes the frustrations of modern knowledge workers in their quest to actually get some work done, and solutions for how to gird yourself against all those distractions. I talk about environments, coding, acceleration, automation, and avoiding repetition as ways to defeat the mid-guided attempts to sap your ability to produce good work. And I give you ways to go on the lam from the furniture police and ammunition to fight back!


    When you were hired by your current employer, you may think it's because of your winning personality, your dazzling smile, or your encyclopedic knowledge of [insert technology here]. But it's not. You were hired for your ability to sit and concentrate for long periods of time to solve problems, then placed in an environment where it's utterly impossible to do that! Who decides that, despite overwhelming evidence that it's bad for productivity and people hate it, that you must sit in a cubicle? The furniture police! This keynote describes the frustrations of modern knowledge workers in their quest to actually get some work done, and solutions for how to gird yourself against all those distractions. I talk about environments, coding, acceleration, automation, and avoiding repetition as ways to defeat the mid-guided attempts to sap your ability to produce good work. And I give you ways to go on the lam from the furniture police and ammunition to fight back!


    Neal's NFJS Schedule

    Raleigh, NC
    Feb 19 - 21, 2009

    Milwaukee, WI
    Feb 27 - Mar 1, 2009

    Minneapolis, MN
    Mar 13 - 15, 2009

    Boston, MA
    Mar 20 - 22, 2009

    Seattle, WA
    Apr 3 - 5, 2009

    Reston, VA
    Apr 24 - 26, 2009

    Atlanta, GA
    May 15 - 17, 2009

    Denver, CO
    May 29 - 31, 2009

    Dallas, TX
    Jun 5 - 7, 2009

    Columbus, OH
    Jun 12 - 14, 2009

    Austin, TX
    Jul 10 - 12, 2009

    Salt Lake City, UT
    Jul 17 - 18, 2009

    Phoenix, AZ
    Jul 24 - 26, 2009

    Philadelphia, PA
    Jul 30 - Aug 1, 2009

    Des Moines, IA
    Aug 7 - 9, 2009

    Orlando, FL
    Aug 21 - 23, 2009

    Raleigh, NC
    Aug 28 - 30, 2009


    Books

    by Neal Ford

    Art of Java Web Development: Struts, Tapestry, Commons, Velocity, JUnit, Axis, Cocoon, InternetBeans, WebWork Buy from Amazon
    List Price: $44.95
    Price: $34.16
    You Save: $10.79 (24%)
    • A guide to the topics required for state of the art Web development, this book covers wide-ranging topics, including a variety of web development frameworks and best practices. Beginning with coverage of the history of the architecture of Web applications, highlighting the uses of the standard web API to create applications with increasingly sophisticated architectures, developers are led through a discussion on the development of industry accepted best practices for architecture. Described is the history and evolution towards this architecture and the reasons that it is superior to previous efforts. Also provided is an overview of the most popular Web application frameworks, covering their architecture and use. Numerous frameworks exist, but trying to evaluate them is difficult because their documentation stresses their advantages but hides their deficiencies. Here, the same application is built in six different frameworks, providing a way to perform an informed comparison. Also provided is an evaluation of the pros and cons of each framework to assist in making a decision or evaluating a framework on your own. Finally, best practices are covered, including sophisticated user interface techniques, intelligent caching and resource management, performance tuning, debugging, testing, and Web services.

    by Neal Ford

    The Productive Programmer (Theory in Practice (O'Reilly)) Buy from Amazon
    List Price: $39.99
    Price: $26.39
    You Save: $13.60 (34%)
    • Anyone who develops software for a living needs a proven way to produce it better, faster, and cheaper. The Productive Programmer offers critical timesaving and productivity tools that you can adopt right away, no matter what platform you use. Master developer Neal Ford not only offers advice on the mechanics of productivity--how to work smarter, spurn interruptions, get the most out your computer, and avoid repetition--he also details valuable practices that will help you elude common traps, improve your code, and become more valuable to your team. You'll learn to:
      • Write the test before you write the code
      • Manage the lifecycle of your objects fastidiously
      • Build only what you need now, not what you might need later
      • Apply ancient philosophies to software development
      • Question authority, rather than blindly adhere to standards
      • Make hard things easier and impossible things possible through meta-programming
      • Be sure all code within a method is at the same level of abstraction
      • Pick the right editor and assemble the best tools for the job

      This isn't theory, but the fruits of Ford's real-world experience as an Application Architect at the global IT consultancy ThoughtWorks. Whether you're a beginner or a pro with years of experience, you'll improve your work and your career with the simple and straightforward principles in The Productive Programmer.


    by

    No Fluff, Just Stuff Anthology: The 2006 Edition (Pragmatic Programmers) Buy from Amazon
    List Price: $29.95
    Price: $22.76
    You Save: $7.19 (24%)
    • Twenty-seven weekends a year, the No Fluff, Just Stuff conference rolls into another town, featuring the world's best technical speakers and writers. Up until now, you had to go to one of the shows to soak up their collective wisdom. Now, you can hold it in the palm of your hand. The No Fluff, Just Stuff Anthology represents topics presented on the tour, written by the speakers who created it. This book allows the authors the chance to go more in depth on the subjects for which they are passionate. It is guaranteed to surprise, enlighten, and broaden your understanding of the technical world in which you live.

      The No Fluff, Just Stuff Symposium Series is a traveling conference series for software developers visiting 27 cities a year. No Fluff has put on over 75 symposia throughout the U.S. and Canada, with more than 12,000 attendees so far. Its success has been a result of focusing on high quality technical presentations, great speakers, and no marketing hype. Now this world-class material is available to you in print for the first time.