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).Presentations by Venkat Subramaniam
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 automate your tests.
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 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.
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? 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.Essence of Agility
Begin agile is more than saying your organization is committed to being agile or your team is agile.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. However, the design you evolve must be
extensible and maintainable. After all, you can't be agile
if your design sucks.
Agile Developer Venkat's Blog
Agile Developer: Venkat Subramaniam
Tuesday, June 24, 2008
This morning I got an email
"I thought you might get a kick to see that your (and Andy���s) book was named one of the Top 100 Software Engineering books of all time (#49). They determined it based on variables, such as Amazon rank and number of Jolt awards, etc.
The article is up on dotnetkicks or the direct link is http://www.noop.nl/2008/06/top-100-best-software-engineering-books-ever.html.
Congratulations,
Zach"
Thanks Zach. It is not only nice to see PAD appear in the list (among other excellent Pragmatic Bookshelf books), but nice to see a list of good books in one place for those interested in learning and keeping up.
Speaking of which, I can't wait to be at AgileIT X. There will be some great speakers there and several exciting topics. I am looking forward to give five talks and workshop, but also listening and discussing with others who will be there. Can't wait for Thursday.
"I thought you might get a kick to see that your (and Andy���s) book was named one of the Top 100 Software Engineering books of all time (#49). They determined it based on variables, such as Amazon rank and number of Jolt awards, etc.
The article is up on dotnetkicks or the direct link is http://www.noop.nl/2008/06/top-100-best-software-engineering-books-ever.html.
Congratulations,
Zach"
Thanks Zach. It is not only nice to see PAD appear in the list (among other excellent Pragmatic Bookshelf books), but nice to see a list of good books in one place for those interested in learning and keeping up.
Speaking of which, I can't wait to be at AgileIT X. There will be some great speakers there and several exciting topics. I am looking forward to give five talks and workshop, but also listening and discussing with others who will be there. Can't wait for Thursday.
Friday, June 20, 2008
I have talked and written about
my opinions on Java Generics before> (I love Generics in .NET, but that love does
not extend to the implementation in Java).
Type information is useful at times, and I like for a way to infer that information. Generics provide that, but is too heavyweight of an approach and also leads to an illusion of type safety when it provides none. If all we care about is type information, there's gotta be a better way to realize that.
Brian gives a good example where having the type information can be useful���How
Generics can pay dividends. But, is that a dividend or is it a tax allowance?
Are Generics the best way to get type information/type inference or should there be
a lightweight, better way?
Sunday, June 8, 2008
I am writing a DSL article for the Java World.
The part I of the article "Creating DSLs in Java, Part 1: What is a domain-specific language?" is posted here.
The part I of the article "Creating DSLs in Java, Part 1: What is a domain-specific language?" is posted here.
Thursday, May 29, 2008
I have been talking testing to several programmers and testers recently. One common observation is, at least among those I've spoken to, most software testing is manual. When I ask why, I hear "because somethings are hard to automate." OK, somethings are hard to automate, so we have close to zero automation is not right. They agree that manual testing is painful and not effective, yet continue to manally repeat it every day.
���Error rate in manual testing is comparable to the bug rate in the code being tested.������Boriz Beizer.
Why not consider using tools like Selenim and Watir (or Watin)? Why not look at using tooks like FIT, FITNesse, easyb, ...?
The latter tools will force the UI to be as thin as paper, meaning, will push the business logic to layer below and enable automated tests.
You can realize this using patterns like MVP or Model View Presenter pattern.
What seems to be lacking is either the realization or the motivation to automate. I am calling on these testers to get angry if they are testing the software manually.
Testers should focus on authoring tests and not running them���they should leave the running for computers to do, automatically.
What's blocking you?
���Error rate in manual testing is comparable to the bug rate in the code being tested.������Boriz Beizer.
Why not consider using tools like Selenim and Watir (or Watin)? Why not look at using tooks like FIT, FITNesse, easyb, ...?
The latter tools will force the UI to be as thin as paper, meaning, will push the business logic to layer below and enable automated tests.
You can realize this using patterns like MVP or Model View Presenter pattern.
What seems to be lacking is either the realization or the motivation to automate. I am calling on these testers to get angry if they are testing the software manually.
Testers should focus on authoring tests and not running them���they should leave the running for computers to do, automatically.
What's blocking you?
Wednesday, May 28, 2008
I am a coder at heart. I like to twiddle bits, do cool stuff at the language, API, and lower levels. I am terrible when it comes to creating good user experience, but I know that.
So, when I create apps, I ask others to use it. I ask them what they like, what they don't like, and what they'd like to see improve. And, I do this from the first day I start writing the app. I know that user involvement is one of the key to success.
What is a good application? I'd say it is the one that lets you get your job done. You don't even feel like you're using the application or tool. You get in there and it enables you to focus and get what you want to get done, and stays out of your way.
Sometimes the usability of an application, or the lack there of, is so obvious, you wonder if any real person ever used it before it went into production. I experienced, or I should say endured, one such application recently at the Bangalore airport.
I was going to write more about it, but Naresh took the lead and wrote it already! So, thanks Naresh, I will simply link to his story here.
So, the next time you are ready to write some code, I have a kind favor to ask. Please, please, involve your users or at least think about them and their experience.
So, when I create apps, I ask others to use it. I ask them what they like, what they don't like, and what they'd like to see improve. And, I do this from the first day I start writing the app. I know that user involvement is one of the key to success.
What is a good application? I'd say it is the one that lets you get your job done. You don't even feel like you're using the application or tool. You get in there and it enables you to focus and get what you want to get done, and stays out of your way.
Sometimes the usability of an application, or the lack there of, is so obvious, you wonder if any real person ever used it before it went into production. I experienced, or I should say endured, one such application recently at the Bangalore airport.
I was going to write more about it, but Naresh took the lead and wrote it already! So, thanks Naresh, I will simply link to his story here.
So, the next time you are ready to write some code, I have a kind favor to ask. Please, please, involve your users or at least think about them and their experience.