A question was asked of me the other day that boiled down to this
... the problem I have is that I tend to miss features, requirements and dependencies and thus leads to an incomplete design ... I have been told that this would come with more experience, but I feel like I want to proactively try to expand my knowledge and design skillsThis was my response:
Nice, I love the proactive choice.
There is lots of truth in learning by doing, but the reality is however that you don't really learn by just doing but rather by 2 other things:
1) Making mistakes
2) Noticing that you made a mistake
Sometimes however, but far more seldom, we learn from getting it right :)
So the good news is that you have identified the 2 key ingredients you need to grow. What I suggest you do is to separately take each of the items you have identified and look at the last project you worked on.
So looking at your last project what:
1) Features
2) Requirements
3) Dependencies
did you actually miss? Write them down under each category.
At this point you may start to find grey areas, or other thing you remember you missed that did not fit into any of these areas... this may make you feel bad that you can't even categories your mistakes -- but don't, this is a good thing, learning to be able to categorise things is part of the skill you are looking for.
As you practice doing this, you will start to find when you start a project you will be actively thinking not about the "project as a whole" which can be very daunting, but rather.. "right what are my dependencies", then as a separate step.. "what are my requirements" etc ...
Then an interesting thing may happen, you will notice a requirement that will impact your dependencies, and you will simply update it, or jot it down for another round of dependencies analysis, before it may have mentally just added clutter and felt too hard to understand with all these interconnections, and "force your hand" into just jumping into implementation mode where you feel more comfortable -- and before long you are deep into implementation which can always keep you very busy.
Note however, that I am not trying to suggest that Features, Requirements and Dependencies are the key categories, on the contrary, the fact that you picked these categories out is the key thing. Each person will see a problem in a different way, and that will be unique to you. Based on your analysis on what you missed last time will help you to see the next problem slightly differently ( but from your natural perspective ) that will cover those holes you may have missed.
Now don't be tricked by the fact that each time you move forward, you will always look at what you did and see big gaping holes that you missed again. This will be incremental growth that will feel natural, so you will not really notice you got better, but if you look back over time you will see the growth to actually be dramatic. It is like looking at any of your own old code, I know few developers who would not ask "What was I thinking.. ?" when they see their old code :)
I hope that in some way helps.
No comments:
Post a Comment