177 symposiums and 27,750 attendees since 2002

Venkat Subramaniam

Founder of Agile Developer, Inc.

Dr. Venkat Subramaniam, founder of Agile Developer, Inc., has trained and mentored thousands of software developers in the US, Canada, Europe, and Asia. Venkat helps his clients effectively apply and succeed with agile practices on their software projects, and speaks frequently at international conferences and user groups. He is author of ".NET Gotchas" (O'Reilly), coauthor of 2007 Jolt Productivity Award winning "Practices of an Agile Developer" (Pragmatic Bookshelf), and author of "Programming Groovy: Dynamic Productivity for the Java Developer" (Pragmatic Bookshelf).

Video

Fluent Interfaces With Groovy
Fluent Interfaces With Groovy
Thursday - September 4, 2008

Agile Design and Testing
Agile Design and Testing
Friday - May 23, 2008

Dynamic and Functional Languages
Dynamic and Functional Languages
Friday - February 22, 2008

Groovy / Grails Discussion
Groovy / Grails Discussion
Monday - March 26, 2007


Blog

How to convince your fellow developer to write short methods?

Posted Monday, May 18, 2009

I'm sure you've seen your share of long methods—methods that run several hundred lines. Some of us may have even written them, pr more »

Programming Scala Beta Release

Posted Saturday, April 4, 2009

I'm delighted to announce the Beta Release of the Programming Scala book. The topics covered in the book are: more »

NFJS 2009 Tour Starts Next Week!

Posted Thursday, February 19, 2009

I am delighted that the NFJS 2009 Tour starts next week! I will be in Milwaukee next weekend and several other cities though the year. I can't wait to interact with the smart developers, attendees and speak more »

Career Day in Reverse

Posted Tuesday, February 10, 2009

My son's teacher, Mr. A, has a great idea. He invites parents to spend a day in schoo more »

Houston TechFest

Posted Saturday, January 10, 2009

The Houston TechFest was delayed due to Hurricane Ike back in September. The rescheduled event is happening on January 24th. You can find details about th more »

Article: DSL in Java and Groovy

Posted Thursday, September 25, 2008

I wrote a four part article for Java World on creating DSLs in Java and Groovy. For your convenience, I decided to list the links to those parts here: Creating DSLs in Java, Part 1: What is a domain-specific language? Creating DSL more »

Prefer Conciseness over Terseness

Posted Sunday, September 7, 2008

As programmers, we prefer languages, frameworks, and APIs that allow us to express ourselves in fewer lines of code than in several lines of code. We have sung the praises for those that promote fluency and ease. However, aiming for fewer lines o more »

PAD in Japanese

Posted Friday, September 5, 2008

I am delighted to receive copies of the Japanese edition of "Practices of an Agile Developer." It's nice to see Thirukural verses translated to Japanese in the more »

Houston Techfest

Posted Friday, August 29, 2008

I got an email from Dan Sline about the upcoming Houston Techfest. Some of the brightest minds in Houston are putting together this event and the topics and speaker line up looks pretty interesting. If you're in the Houston vicinity, I encourage you more »

New Groovy and Grails book

Posted Tuesday, August 5, 2008

I received a copy of "Beginning Groovy and Grails—From Novice to Professional" book by Apress written by Christopher M. Judd, Joseph Faisal Nusairat, and James Shingler. The book takes you quickly throu more »

Rich Web Experience Conferences

Posted Sunday, July 27, 2008

M more »

Speaking at C(OS)^2

Posted Sunday, July 27, 2008

I more »

The Productive Programmer

Posted Thursday, July 10, 2008

more »

Speaking at BJUG

Posted Tuesday, July 8, 2008

I more »

PAD among top books

Posted Tuesday, June 24, 2008

T more »

Generics in Java

Posted Friday, June 20, 2008

I more »

DSL Article-Part I

Posted Sunday, June 8, 2008

I more »
Read More Blog Entries »

Presentations

BDD in Java and Groovy

In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy more »

FP on JVM

Functional Programming Languages (FPLs) have been around for a long time. A lot of features that we get excited about in dynamic languages are common place in FPLs. FPLs are gaining importance due to various changes in our industry. more »

Got Guice?

In this presentation we will take a look at Google's dependency injection framework, discuss its features, capabilities, strengths, and weakness. We will then discuss where it stands in comparison to Spring more »

MOPping Up Groovy

Groovy's dynamic capabilities makes it an attractive language for Meta Programming. There are several facilities to intercept method calls to do AOP kind of operations. You can also inject methods dynamically. more »

Design Patterns in Java and Groovy

You're most likely familiar with the Gang-of-four design patterns and how to implement them in Java. However, you wouldn't want to implement those patterns in a similar way in Groovy. Furthermore, there are a number of other useful patterns that you can a more »

Practices of an Agile Developer

You have worked on software projects with varying degree of success. What were the reasons for the success of your last project? What were the reasons for those that failed? more »

Towards an Evolutionary Design

A good design is critical for success with agile development. That does not mean a big up-front design. The design has to be evolutionary. more »

Mocking to facilitate unit testing

Unit Testing is easy if the object you're testing has no dependencies. In reality, however, objects have dependencies, often making it difficult, if not impossible, to automate tests. Mock objects can help deal with these dependencies and allow you to a more »

Essence of Agility

Begin agile is more than saying your organization is committed to being agile or your team is agile more »

Tools to facilitate Agile Development

The first item in the Agile Manifesto reads that we must prefer "people and interaction over process and tools." Given a choice between average people with superior tools and superior people with average tools, you are likely to achieve greater success more »

Cleaning up Code Smell

Projects often start out simple, but soon become complex and turn into a lose cannon. Organizations are struggling to maintain and evolve software. Poor code quality is a significant part of that problem. more »

Know your Groovy?

Groovy brings the dynamic productivity to the Java platform. One of the strengths of Groovy is the seamless integration with Java–it preserves the Java semantics. However, Groovy does have some differences that can surprise you if you're not expecting more »

Building External DSLs

Domain Specific Languages (DSLs) are languages targeted at a particular problem and domain. They have context and are fluent. They help users of applications at various levels to easily communicate with your application. more »

Programming Scala

Scala is a static fully object-oriented, functional language on the JVM. While taking advantage of the functional aspects, you can continue to make full use of the powerful JVM and Java libraries more »

Effective Java

Java is a well established language, that has been around for more than a decade. Yet, programming on it has its challenges. There are concepts and features that are tricky. more »

Testing with dependencies

Testing is a key ingredient to the success of a project. However, testing becomes awfully hard when your application deals with dependencies and that is often the reality more »

Agile Testing

How is testing done on agile projects? Do we need testers when programmers can write tests? When do we do test? more »

BDD in Java and Groovy

close

Venkat Subramaniam By Venkat Subramaniam
In this presentation we will take a look at what BDD is and look at tools
to create them in Java and Groovy.

What's BDD?
Benefits of BDD
Tools for BDD
Creating BDD in Java
Creating BDD in Groovy

FP on JVM

close

Venkat Subramaniam By Venkat Subramaniam
Functional Programming Languages (FPLs) have been around for a long time. A lot of features that we get excited about
in dynamic languages are common place in FPLs. FPLs are gaining importance due to various changes in our industry. What's exciting is that you can use them on the JVM. In this presentation we will dig into the details of what makes FPLs so interesting and look at ways to use them on the JVM?in your Java projects.

What's Functional Programming?
Why is Functional Programming suddenly important?
Features of Functional Programming
Functional Programming Languages
JVM and FPLs
Examples of Functional Programming features
Examples of mixing Java and FPLs

Got Guice?

close

Venkat Subramaniam By Venkat Subramaniam
In this presentation we will take a look at Google's dependency injection framework,
discuss its features, capabilities, strengths, and weakness. We will then discuss where it
stands in comparison to Spring.

What's Guice?
Features of Guice
Using Guice
Comparison to Spring

MOPping Up Groovy

close

Venkat Subramaniam By Venkat Subramaniam
Groovy's dynamic capabilities makes it an attractive language for Meta Programming.
There are several facilities to intercept method calls to do AOP kind of operations.
You can also inject methods dynamically. You can also easily perform method synthesis as well.
In this presentation we will take a look at techniques that make Groovy pretty Hip for MOP.

Exploring MOP
Understanding Groovy's method handling mechanism
Accessing methods and properties dynamically
Method interception
Method injection
Method synthesis
Method delegation
Applying MOP to real world projects

Design Patterns in Java and Groovy

close

Venkat Subramaniam By Venkat Subramaniam
You're most likely familiar with the Gang-of-four design patterns and how to implement them in Java. However, you wouldn't want to implement those patterns in a similar way in Groovy. Furthermore, there are a number of other useful patterns that you can apply in Java and Groovy. In this presentation we'll look at two things: How to use patterns in Groovy and beyond Gang-of-four patterns in Groovy and Java.

Patterns overview
Implementing common patterns in Groovy
Beyond Gang-of-four patterns in Java and Groovy
Lots of examples

Practices of an Agile Developer

close

Venkat Subramaniam By Venkat Subramaniam
You have worked on software projects with varying degree of success. What were the reasons for the success of your last project? What were the reasons for those that failed? A number of issues contribute to project success - some non-technical in nature. In this presentation the speakers will share with you practices in a number of areas including coding, developer attitude, debugging, and feedback. The discussions are based on the 2007 Jolt productivity award winning book with the same title as the talk.



In this session you will learn about practices beyond what well know methodologies prescribe. While we reemphasize some popular practices, we will also discuss other often overlooked, but important practices - practices that contribute to success of projects.

Towards an Evolutionary Design

close

Venkat Subramaniam By Venkat Subramaniam
A good design is critical for success with agile development.
That does not mean a big up-front design. The design has to
be evolutionary. However, the design you evolve must be
extensible and maintainable. After all, you can't be agile
if your design sucks.

In this presentation, we will address
what evolutionary design is, and will delve into principles
and practices that can help realize an effective evolutionary design.

Mocking to facilitate unit testing

close

Venkat Subramaniam By Venkat Subramaniam
Unit Testing is easy if the object you're testing has no dependencies. In reality, however, objects have dependencies,
often making it difficult, if not impossible, to automate tests. Mock objects can help deal with these dependencies
and allow you to automate your tests.

In this presentation you'll learn what mocks are, the difference between mocks
and stubs, how to hand toss mock objects, how to approach testing with deeper dependencies, and also how to use tools and framework that can help you with mocking.

Essence of Agility

close

Venkat Subramaniam By Venkat Subramaniam
Begin agile is more than saying your organization is committed to being agile or your team is agile.

In this presentation we will delve into the details of what "Being Agile" really means, why you should
be agile, what are some of the fundamental practices?at team and organizational level?you need to consider
to be successful with agility.

Tools to facilitate Agile Development

close

Venkat Subramaniam By Venkat Subramaniam
The first item in the Agile Manifesto reads that we must prefer "people and interaction over process and tools."
Given a choice between average people with superior tools and superior people with average tools, you are likely
to achieve greater success with the latter. However, it is important to be continuous and not be episodic?so you
want to get continuous feedback about the state, health, and quality of your code and application. Tools can
help us a great deal to realize this and make us productive.

In this presentation we will take a look at
tools (and their relevance and value) that can help smoothly execute your projects.

Cleaning up Code Smell

close

Venkat Subramaniam By Venkat Subramaniam
Projects often start out simple, but soon become complex and turn into a lose cannon.
Organizations are struggling to maintain and evolve software. Poor code quality is a
significant part of that problem. Improving the quality of code is critical to success
of enterprise projects.

In this presentation we will discuss ways to identify code smell. We will discuss several
code smells and how to clean it up. We will also discuss proactive ways to avoid that smell
in the first place.

Know your Groovy?

close

Venkat Subramaniam By Venkat Subramaniam
Groovy brings the dynamic productivity to the Java platform. One of the strengths of Groovy is the seamless integration with Java–it preserves the Java semantics. However, Groovy does have some differences that can surprise you if you're not expecting.

In this Jeopardy style presentation, you will pick topics you'd like to discuss and we will understand the strengths and differences Groovy brings in those areas.

Building External DSLs

close

Venkat Subramaniam By Venkat Subramaniam
Domain Specific Languages (DSLs) are languages targeted at a particular problem and domain. They have context and are fluent. They help users of applications at various levels to easily communicate with your application. Developing DSLs, however, are not easy. You could easily get dragged into using parsers and tools with steep learning curve.

In this presentation, we will look at various options to create DSLs on the Java platform. We will focus on external DSLs–these give you the absolute flexibility to chose syntax, but involve the most work as well. We will look at various tools and techniques that can ease this development effort.

Programming Scala

close

Venkat Subramaniam By Venkat Subramaniam
Scala is a static fully object-oriented, functional language on the JVM. While taking advantage of the functional aspects, you can continue to make full use of the powerful JVM and Java libraries.

In this presentation we will take a in depth look at what Scala is, its strengths, weaknesses, and why, when, and where you'd use it on your applications.

Effective Java

close

Venkat Subramaniam By Venkat Subramaniam
Java is a well established language, that has been around for more than a decade. Yet, programming on it has its challenges. There are concepts and features that are tricky. When you run into those, the compiler is not there to help you.

In this presentation we will look at various concepts that you will use in general programming with Java. We will discuss the issues with those and how you can improve your code. We will look at concepts you can do better and those you should outright avoid.

Testing with dependencies

close

Venkat Subramaniam By Venkat Subramaniam
Testing is a key ingredient to the success of a project. However, testing becomes awfully hard when your application deals with dependencies and that is often the reality.

In this presentation we will discuss how to approach testing when the code has dependencies. We will discuss tools, techniques, languages, and principles that can help decouple, mock, and help us effectively test your application code.

Agile Testing

close

Venkat Subramaniam By Venkat Subramaniam
How is testing done on agile projects? Do we need testers when programmers can write tests? When do we do test? If the requirements are evolving, should we postpone testing until they stabilize?

This presentation will address how you can approach testing in agile projects. We will discuss the role of programmers and testers in testing, the tools and techniques they can use. We will discuss when testing can start and how it can proceed. This session is intended for both programmers and testers who are actively involved in agile projects.


Venkat's NFJS Schedule

Milwaukee, WI
Feb 27 - Mar 1, 2009

St. Louis, MO
Mar 6 - 8, 2009

Minneapolis, MN
Mar 13 - 15, 2009

Boston, MA
Mar 20 - 22, 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

Orlando, FL
Aug 21 - 23, 2009

Raleigh, NC
Aug 28 - 30, 2009

Boston, MA
Sep 11 - 13, 2009

Seattle, WA
Sep 18 - 20, 2009

Calgary, Alberta
Sep 25 - 27, 2009

Minneapolis, MN
Oct 2 - 4, 2009

New Orleans, LA
Oct 19 - 22, 2009


Books

by Venkat Subramaniam

.NET Gotchas Buy from Amazon
List Price: $39.95
Price: $29.16
You Save: $10.79 (27%)
  • Like most complex tasks, .NET programming is fraught with potential costly, and time-consuming hazards. The millions of Microsoft developers worldwide who create applications for the .NET platform can attest to that. Thankfully there's now a book that shows you how to avoid such costly and time-consuming mistakes. It's called .NET Gotchas. The ultimate guide for efficient, pain-free coding, .NET Gotchas from O'Reilly contains 75 common .NET programming pitfalls--and advice on how to work around them. It will help you steer away from those mistakes that cause application performance problems, or so taint code that it just doesn't work right. The book is organized into nine chapters, each focusing on those features and constructs of the .NET platform that consistently baffle developers. Within each chapter are several "gotchas," with detailed examples, discussions, and guidelines for avoiding them. No doubt about it, when applied, these concise presentations of best practices will help you lead a more productive, stress-free existence. What's more, because code examples are written in both VB.NET and C#, .NET Gotchas is of interest to more than 75 percent of the growing numbers of .NET programmers. So if you're a .NET developer who's mired in the trenches and yearning for a better way, this book is most definitely for you.

by Venkat Subramaniam and Andy Hunt

Practices of an Agile Developer: Working in the Real World (Pragmatic Programmers) Buy from Amazon
List Price: $29.95
Price: $19.77
You Save: $10.18 (34%)
  • Want to be a better developer? This books collects the personal habits, ideas, and approaches of successful agile software developers and presents them in a series of short, easy-to-digest tips. This isn't academic fluff; follow these ideas and you'll show yourself, your teammates, and your managers real results. These are the proven and effective agile practices that will make you a better developer.

    This book will help you improve five areas of your career:

    • The Development Process
    • What to Do While Coding
    • Developer Attitudes
    • Project and Team Management
    • Iterative and Incremental Learning

    These practices provide guidelines that will help you succeed in delivering and meeting your user's expectations, even if the domain is unfamiliar. You'll be able to keep normal project pressure from turning into disastrous stress while writing code, and see how to effectively coordinate mentors, team leads, and developers in harmony.

    You can learn all this stuff the hard way, but this book can save you time and pain. Read it, and you'll be a better developer.


by Venkat Subramaniam

Programming Groovy: Dynamic Productivity for the Java Developer (Pragmatic Programmers) Buy from Amazon
List Price: $34.95
Price: $23.07
You Save: $11.88 (34%)
  • The strength of Java is no longer in the language itself; it's in the Java Platform (the JVM, JDK, and rich frameworks and libraries). But recently, the industry has turned to dynamic languages for increased productivity and speed to market.

    Groovy is one of a new breed of dynamic languages that run on the Java platform. You can use these new languages on the JVM and intermix them with your existing Java code. You can leverage your Java investments while benefiting from advanced features including true Closures, Meta Programming, the ability to create internal DSLs, and a higher level of abstraction.

    If you're an experienced Java developer, Programming Groovy will help you learn the necessary fundamentals of programming in Groovy. You'll see how to use Groovy to do advanced programming including using Meta Programming, Builders, Unit Testing with Mock objects, processing XML, working with Databases and creating your own Domain-Specific Languages (DSLs).


by Venkat Subramaniam

Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine Buy from Amazon
List Price: $34.95
Price: $23.07
You Save: $11.88 (34%)
  • The increasing popularity and availability of multicore processors is creating a whole new set of challenges--although you can enjoy true concurrency, you're now faced with higher contention and synchronization issues. Deploying an existing application on a multicore processor may bring out previously hidden concurrency issues. Java's multi-threading facility by itself isn't enough---it's a very low level abstraction. Instead, you need a paradigm that provides a higher level of abstraction to deal with concurrency. It's time to embrace Functional Programming.

    Scala is a hybrid Object-Oriented/Functional Programming language on the JVM. Using Scala, you can create traditional imperative programs, intermix them with Java code, and at the same time take advantage of higher levels of abstraction. You can use features that lead to concise, highly expressive code that remove the pain of dealing with concurrency.

    Programming Scala will show you the fundamentals of functional programming using Scala. Very quickly, you'll learn how this statically typed language can give you dynamic capabilities to create concise, scalable, highly capable concurrent code.

    Pragmatic programmers always use the right tool for the job. For concurrent programming on the Java VM, Scala is the tool, and Programming Scala by award-winning author Venkat Subramaniam is your guide.