I am a Java/J2EE developer have 5+ years of experience. Throughout my career I have spent the majority of time doing programmings and I have very good programming and debugging skills. In the last 2 years I involved myself in software designing as well. I however face problems to come up with design of a system or logical solution to a complex problem statement.
I have to spend long hours thinking on the problem and then whatever design/logical solution I propose does not seem to feasible after I get it reviewed by my architect. I however do a good job when a design is presented to me and I have to just implement it.
This seems to have dent my confidence and I am now afraid to join design discussions within my team. Could someone please suggest some training/certifications/self study which I do so that I am able to think more logically and understand the pros and cons of a design I propose.
I hope I was able to explain my problem and thanks in advance for any suggestions.
P.S: I do understand design patterns liks Stratedy, template, factory and tiers, layers in a software system. The problem I face is how to associate my concepts to the given problem so that I can reach on a feasible solution.
One of the more important elements of being a software architect is the ability to teach junior programmers and developers. Communication and teachining skills are the critical elements. So, if one wants to learn software design, they should "humbly" ask their architect to teach them. This is how you can improve your software design skills...
Thanks Jimmy. I agree. Learning from knowledgeable people and gaining experience has no substitute. But the only drawback here is that you will have to live on the mercy of others by asking them to help you. I was looking for some self study / self learning kind of stuff to get me going.
Well when it comes to software design, knowing what design patterns to use or appropriate in different scenarios is a good start. Understanding what technology to use given the scenario is another learning curve. Together with communication/discussions will build up your confidence as time goes by.
But the only drawback here is that you will have to live on the mercy of others by asking them to help you. I was looking for some self study / self learning kind of stuff to get me going.
There are drawbacks in everything. You are trying to alter and improve the way you think. This is not something easily accomplished, and even more difficult when attempted in isolation.
In regards to material to study, here you are still depending upon someone, the author of the material. The only real differences here are that you are not communicating with the author, cannot ask questions, and are gambling with the accuracy level of the author's material.
Either way, it seems like you are off to a good start by identifying your deficiencies. Good luck son!
Thanks K. Tsang. I have reading and practising design problems these days with the hope I will be able to solve some real world problems soon . What I am targeting now (as per Jimmy's suggestion) is to find out my areas were I can improve upon.