In the pursuit of becoming a better programmer, I have come across lot of good things, which in fact have a lot of positive impact on my thinking, attitude and the way I approach a problem. One of such thing is the book Passionate Programmer which I am currently reading. It is all about creating a remarkable career in software development. If you are a developer, it is a highly recommended book.
There are a lot of impressive tips we can learn from this book of wisdom. One of Such tip is “Practice, Practice, and Practice!!” It talks about how to practice as a software developer. Though it seems like a mighty task, the author “Chad Fowler” convey this by breaking the might task into the following three category (Divide and Conquer Approach).
Physical/Coordination
- Learn and master the unexplored areas of the language that you are working with. Say for example, Regular Expressions
- Dig your language’s API and don’t reinvent the wheel
Sight Reading
- Learn by reading the code
- Pick any of your favorite open source, explore it understand and learn the tips and tricks of the trade
- Add some new feature
- Be sure to vary the software you work with
Improvisation
- Takes some structure or constraint and creating something new, on the fly on top of that structure. For example pick a simple program and try to write it with the self-imposed constraints
- Play with Code Katas
It’s time for action
I believe these three very fundamental aspects makes a lot of difference. So, I’ve decided to get my hands dirty with these three things and here is my list of to dos.
Physical/Coordination – (I pick C# as its my primary language in my current role)
- Regular Expressions
- Dynamic Programming
- Multithreading
- Parallel Programming
- LINQ
- Reflection
- Streams and Networking
- Entity Framework
- Data Structures and Algorithms
- Customizing MVC3 Framework
Sight Reading
- Exploring ASP.NET MVC3 source code
- Exploring Nunit source Code
- Blog my understanding during this exploration
Improvisation
- Make most of Code Katas
- Active participation in Technical Forums