This may seem a self evident statement, but apparently not. I recently worked with a colleague (who shall remain nameless to spare their blushes), who was young and very inexperienced. When tasked with fulfilling a particular task, their approach was not to spend time trying to understand the problem, investigate several solutions, before implementing something that would hopefully solve the problem. Instead, the approach taken by this particular individual was to ask Google for answers, and then use whatever solution was at the top of the list, no matter how inappropriate the solution was.
I have no problem with anybody using Google or any of the technical forums such as Stackoverflow. We all get stuck sometimes, and it’s useful to look to these forums for advice, suggestions or possible answers. But that’s when you get stuck. I wouldn’t go straight to Google from the get go like this person did. If you don’t fully understand the problem, let alone the answer, you’re headed for big trouble further down the road. It’s only a matter of when, not if.
I have encountered many problems where I have been genuinely stuck. What I do then, is start researching. I spend time reading around the problem, reading around the various tools / technologies that may help me in resolving the problem. What I most definitely don’t do is start coding. And I wouldn’t expect other members of the team to have to make changes to the code to accomodate my ill researched solution. Changing code that has been stable for a period of time is not a good idea, and it’s especially not a good idea if you intend to introduce changes because you don’t understand the problem yourself. That’s akin to asking your fellow mechanic to put tractor wheels on your sports car because the solution you read on the internet suggested it. Had you fully understood the problem and the solution, you would have worked out that this was a silly idea.
So before plunging headlong into implementing a solution to a given problem, spend the time to fully understand what the problem is. Spend the time researching various solutions, and look at the bigger picture. Don’t just focus on the immediate problem, but how your solution may impact the other moving parts of the application.
1. Take a breath
2. Understand the problem
3. Research and ask questions
4. Take another breath
5. Walk through your solutions with your colleagues who may have valuable knowledge that may help
6. Propose a solution
Downloading code and copying & pasting solutions from the internet just doesn’t work. You’ll grow into a far more valuable resource by taking the time to understand the problems you’re trying to solve.