Disclaimer:Maybe the headline is misleading. I’m talking in terms of technology, And I’ll try to present my POV on this highly debatable topic. I plan to collect input from others and expect their honest feedback with promises of answering whatever queries I am capable of answering.
We’re taught since times we get our senses – “Avoid the easy way out”, “Take the longer route, It’ll make u tough”, “There are no short-cuts in life” etc. etc .. ….
While most of it is true in context of the day-to-day life … I somehow beg to differ with notion that “There are no short-cuts in life” (in context to Technology). I believe that usually their are numerous solutions to each of the situations in day-to-day IT problems. And the ease of taking each one of these routes differs considerably when compared to each other.
I am a java developer who’s been involved in development projects for over four years now, and in my four year old journey as a coder, I’ve come across couple of characters who have been religiously following another (I won’t use the word – ‘old’) school of thought – that says “Don’t use one alien technology to learn another” which is good to hear and makes good sense too , but not always. I myself have stuck to this practice at many a times. However strict adherence to this logic is
(a) not always practical in professional work environments and
(b) not always beneficial also.
It’s one thing to be using an IDE (containing auto-completion & syntax-checking) only after you’ve learned the syntax & the compilation& interpretation of the code. Quite another – to be discarding every new & outstanding technical solution, just because you are not aware of the building blocks of the new solution.
If quickstarting one particular technology can lead to normalizing the learning curve for ten different technologies, then what’s the issue? One eligibility criteria here is that for you learning of the quickstarted technology shall not be more vital than the leanings of the other 10 technologies. The technological solutions that may fall in this category for a java developer could be – Appfuse, Maven, Dojo, DWR, Acegi etc. .
In the past, Ive got flak/taunts from my colleagues/seniors for relying too much on different third party technical tweaks/solutions for solving the problem in hand. I understand their concern.Maintainence issues are automatically increased with each inclusion of something new. but my point is – the amount of time I save by learning and using some third-party solution – I’m willing to input the same on the learning that I’ll achieve in solving any possible maintenance/integration issues instead of spending the same time on ‘Re-inventing the wheel’. Yes, it is re-invention of the wheel when something usable exists and you refuse to use it and it’s As I’ve learnt -A Programmer’s Sin.
Yes, one should not be a short-cut man. He’ll be hollow then. Real knowledge is depth of understanding. However, my suggestion is to not get into the habit of learning everything in the same manner. Prioritize your learning and take them case by case depending on how much you need them. For someone developing a business solution based on a bunch of patterns ‘Appfuse‘ may just provide a building block and it can be learnt as it comes in a leisure time focusing more on the dominant technologies that actually solve the problem. The same technology solution – Appfuse – for one of it’s source contributors will be much more important aspect – and it’ll be a start from the scratch learning for him.
I’ll try to follow this up with a personal experience (w.r.t my experience while learning/working with Appfuse).
revert for a healthy discussion.