“How to become an expert in my core skill (say Java) ?”, I was asked recently by someone eager to become one, obviously.
Had sent the following reply, based on my personal experience..
With respect to programming, first find a project that you believe is interesting to work on.
Then think about..
How to write less code to add new features ?
How to reduce existing source code ?
How can things be made faster ?
How can things be made easier to work with ?
Each one is a challenge, which once achieved will make you want more such challenges. And, after some time, you will find people calling you an expert.. but who cares.. that is just a side benefit… you would have enjoyed the process anyway.
From the reply to my mail,…
How much knowing the API matters ? say JAVA has something called “Reflection” which i don’t know until now. If there is a problem which can be solved using Reflection i can use it right ? without knowing it i will be re-inventing the wheel. How people get to know that this is already available with API itself no need to write any custom code.
In java i actually read some books like ***, *** materials etc but still i didn’t know that this exists.
Here was my reply..
Once you are working on a specific challenge, you will start looking for solutions, discussing with people who you think are experts or in online forums and checking out open-source tools which can help you. You will invariably end up learning what is required to get it done.
You may even end up discovering better approaches involving newer techniques / APIs, while also learning about how it was done until now.
Regarding reinventing the wheel. Remember the goal is to write as little code as possible. So, you would avoid doing it and if in a rare case you end implementing it with little coding.. great !! Now, compare it with the existing code – when you discover that it exists – and learn if your code is good or may be, better.
Feel free to add to the discussion with your comments.
After more than 8 years in Java at an enterprise software co., I am now enjoying interesting challenges with Python over Google App Engine, for my startup. You may check out my work at iFreeTools CRM and iFreeTools Creator – an Online Database Application Builder. You can reach me at firstname.lastname@example.org.