Reputation: 41178
Recently, I feel that I've reached a wall I need to vault over to continue improving myself. I was reading the book Pro ASP.Net MVC2 written by Steve Sanderson and he holds your hand throughout the chapters, all the while introducing Dependancy Injection and abstract interfaces.
I realized this is completely new for me and very hard for my mind to grasp and apply. Sure, I followed the code, but as all developers know there is a point where something in your mind clicks and everything is clear.
I haven't reached that point yet.
The book explains in the introduction, a couple of developer stereotypes. SmartUI developers, those who program actions within control events; the Layered developers, those that use a three-layer architecture.
I fall into the latter, but I do know professional developers that are 100% SmartUI devs. Professional meaning they are paid for creating applications.
What can a developer do to vault over this hurdle? I'm sure everyone faces it at some point. Being a good 3-layer developer, what's the next step for me?
Should I read about Dependency Injection? Should I first learn and become adept with Unit Testing and be comfortable with Test-Driven Development?
What should my next move be?
Feel free to change the tags to something more descriptive.
Upvotes: 2
Views: 241
Reputation: 2137
This is kind of what happened with me too. I can totally relate to your situation.
I overcame my hurdle by building my own blog engine in MVC, using structuremap as an IOC and in a test driven fashion. It was definitely fun and I learned all about these concepts along the way.
I would suggest you choose a side project, implement it using MVC, use IOC and test driven all the way.
For IOC, read this article by Rob Conery. http://blog.wekeroad.com/smackdown/200-page-manual-on-inversion-of-control-plus-or-minus-199/
Upvotes: 1
Reputation: 1775
Similar to what James said, I have two suggestions (or possible approaches) that could help you:
I suggest something small because there are very few large projects that follow the "best practices" preached in books. I know many on here will disagree, but big projects and fully Object Oriented code don't always go together well.
Upvotes: 2
Reputation: 8590
The best way to learn about tools and techniques in software development is to apply them in a real project. If you want to learn about dependency injection, find or start a project that uses dependency injection and let that motivate your reading. Same for unit testing or some new framework or language.
For the specific topic of dependency injection, I found this page on the Guice wiki a pretty nice overview of what DI actually buys you: http://code.google.com/p/google-guice/wiki/Motivation?tm=6
Upvotes: 1
Reputation: 41858
Reading to learn is nice academic lesson, but if you want to master it you need to use the techniques.
What I find best is to work on a project that is over my head, until I can figure out the solution, and I may find limitations of the technology quickly this way.
Until you use it you won't really be able to understand it.
Also, if someone asks you about these technologies, if you can't explain them, you don't really know them.
So, you could work on trying to write up a blog as you work on this program, to explain what you did and why, so that you can better understand what you did, as you explain why you did it, and what you learned.
Upvotes: 3