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.