Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is a good project to work on to learn modern patterns and practices?

I'm trying to teach myself how to use Modern Persistence Patterns (OR/M, Repository, etc) and development practices (TDD, etc).

Because the best way (for me) to learn is by doing, I'd like to build some sort of demo application for myself. The problem is, I've got no idea what sort of application to build. I'd like to blog about my experience, so I'd like to build something of some worth to the community, but at the same time I want to avoid things that others are actively doing (web commerce, forums) or have been done to death (blog engines).

Does anybody have any suggestions for a good pet project I could work on and maybe blog about my experiences with?

like image 516
Erik Forbes Avatar asked Sep 24 '08 19:09

Erik Forbes


2 Answers

There are innumerable community-service organizations with little or no web presence.

Pick a service organization -- any one -- Literacy Volunteers, Food Pantries, Home Furnishings Donations, Alcoholics Anonymous -- anything. The grass-roots community organizations benefit the most from involvement; they often need a more dynamic web presence but can't afford it.

Look at their current web site. Build them something better. Donate it to them.

like image 119
S.Lott Avatar answered Sep 27 '22 21:09

S.Lott


I would say an excellent way is to start with the sample project for a core framework you want to learn or build your application around. Using Spring as an example, they have a great 'pet store' web application that you can download that shows how to use many different parts of the framework in the recommended way. From there, you can expand on it: check it into source control, get automated builds going, add your own unit tests or test-first additions, swap in your own ORM layer, try different view layers, etc.

Once you have everything working as you want, then you can branch off more easily and even create your own app from the ground up using what you've learned.

I find starting with a good base ('good' being important, as you want to learn the best practices and not just base your work on something hacked together by a random internet user) and building out really helps, as opposed to just starting with a blank project which can be overwhelming especially if trying to learn a bunch of new things at once.

like image 33
Peter Avatar answered Sep 27 '22 21:09

Peter