I’m in L.A. now prepping for Party with Palermo. There are almost 300 people RSVP’d at this point, so it ought to be an outstanding party. We probably won’t hit the record of 435 people for TechEd 2007. I’ve noticed that plenty of people who don’t RSVP show up anyway, and that’s great.
This past week, I had a great class for my Agile Boot Camp developer training. I promised the folks I’d blog about some learning resources I find very valuable, so here they are.
First, I have to point out Michael Feather’s book, Working Effectively with Legacy Code. This book is chock-full of ways to modify existing code to be more maintainable. Just about every programmer has experience wrestling existing systems into submission. This book started me on my complete worldview transformation.
Next, I have to call out Domain Driven Design by Eric Evans. This book requires rereading a few times to really grasp the concepts, but the concepts are very practical. Some of the concepts seem so simple they should be common sense, but often the most difficult concepts to grasp are the ones that are the simplest.
I read Kent Beck’s Test Driven Development: By Example long before I was a part or led an agile team. Even though the samples are in java, this book is a very easy read, and I highly recommend it.
Podcasts are also a great way to keep up-to-date with the industry. They are also a great way to learn new things that you might not have direct experience with. There are many, many podcasts out there. One of my favorites is Software Engineering Radio. .Net Rocks is a great way to keep up with the .Net world, and The Java Posse is a great way to keep up with the Java world.
Finally, there is so much information out there, you won’t be able to consume it all. Likewise, there are so many new technologies, you have to learn to pick and choose the technologies that are relevant to you. As for me, I actively ignore certain technologies because not all technology is practically useful. Think about which technologies will have long lives and which technologies will have early hype but then die off quickly.
One of the items that many people I know have requested are subcontrollers. Most non-trivial web applications require many things happening on a single screen. Even if it’s only the current shopping cart displayed on multiple screens, the MVC Framework needs a mechanism of screen decomposition so that web applications can scale with complexity. WebForms has the Control model where markup and logic live together and can be composed easily.
With the MVC Framework CTP 5, a single action method has to make decisions for the entire screen. There are ActionFilters that can do some logic, but those are attributes, and attributes are not conducive to logic decomposition. Furthermore, ActionFilters do not work with partial views.
RenderPartial also doesn’t do the job because the main view still has to know the partials.
If you haven’t looked at MvcContrib’s SubController support, have a look at the latest release and check out the samples. The samples show many uses for SubControllers for GETs, POSTs, and unlimited nesting of SubControllers. Each SubController has its own view, and it uses Action methods with all the same built-in dynamicism as regular controllers. In Fact, SubController inherits from Controller, so a SubController IS a Controller.
We (Headspring) are using MvcContrib SubControllers in real projects, and they are paying strong dividends.
I’m still hoping SubControllers will make it into the ASP.NET MVC Framework, but if they don’t, I’m happy using this implementation.
We are approaching the last two days for registering for Udi Dahan’s training course:
Advanced Distributed Systems Design using SOA & DDD with Udi Dahan, The Software Simplist
Registration closes at the end of the day tomorrow (Friday, October 3rd). If you are intending to register, please do so by COB Friday. If you need a PO or deferred payment, please contact Headspring at 1-877-459-2260 to request it. It can be arranged.
The urgency is that the class roster will be set tomorrow end-of-day. Payment can be flexible, but the roster will be set.
The registration and information page is here: http://www.headspringsystems.com/soa/
A student from a previous course blogged about his experience:
"When I had the privilege of sitting through this training I did so with my team and cant say enough about how it invigorated, improved and turbo charged the mind-set and output of all who attended. Udi is a very skilful presenter and a wonderful teacher and significantly has amassed some great wisdom that anyone who is serious about building Service Oriented systems should go out of their way to experience and imbibe. If your in Austin Texas or anywhere in the United States for that matter, I thoroughly recommend you take this course, it is worth far more than the advertised price. Prepare to have some of your beliefs challenged and come with a spirit of learning and you will enjoy the rewards – I know I have and so have many of my colleagues."