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.
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.
Similar to what James said, I have two suggestions (or possible approaches) that could help you:
- Find a small(ish) open source project that is considered 'best of breed' and improve upon it. You'll learn new techniques by looking at other people's code, while finding challenges yourself
- Start something new yourself, and ask lots of questions when you get real stuck (here, forums, etc)
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.
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
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/
精彩评论