Matt Gemmell knocks it out of the park:
The problem is that this person’s problem-solving technique is to ask for the solution. Not to seek advice on how to approach the task, or ask for the names of likely classes to look into, or a link to an example – but to just ask for the code, fully formed and ready to go. This is not problem solving, and software engineering is entirely about problem solving. … It’s not a secret handed out at institutions of higher education, it’s just how things work: you begin with a lack of understanding about a topic, and a need to solve a problem in that topic area. The honest, sustainable means to doing so is to improve your understanding. This is achieved by:
- Formulating a question which, when correctly answered, will improve your understanding in some way; then:
- Attempting to answer it.
Not everyone can learn everything, and some people are better at figuring out things that are poorly documented, non-obvious or require arcane or very specific knowledge and experience. But everyone is worse off when you’re “asking for the solution”. You devalue your problem solving skills. Readers that don’t answer consider the question weird, unanswerable or irrelevant and the act of answering and being helpful a little less fulfilling.
Programming is not about writing code and recalling syntax, in much the same way that farming is ultimately not about plows. Programming is about problem solving, assembling logic and using the scientific process on all possible scales. If you can’t pose the question in an intelligent way, and you can’t solve the particular problem, you’ve signalled twice already that you can’t program. Regardless of if it’s true or not, it’s harder for people to help you — not only do they have to put more effort into understanding the problem, if they do want to help they’ll feel bad about delivering a partial solution and will have to put more effort into solving the problem as well — and you’re perceived as less deserving of the help because you wouldn’t know what to do with it.
In almost all cases, the solution is to ask questions that are short but detailed. If you can’t figure out where to get started, ask where to get started instead of the whole solution. If you can’t figure out what this particular example does wrong, start by reducing the example to the minimal thing that’s still failing — often this will make the point of failure very clear, and you won’t have to ask the question in the first place, but if you have, you’re more likely to be met with courtesy and receive an answer since you’re making it easier for other people to help you, and having done much of the work yourself you’ll have learned a lot more.
Moreover, I advise that the iPhone software platform must be opened.
No comments yet.
Leave a comment
Your e-mail address is never shown. If you type a line break in the comment, it will show up as a line break (naturally). The following HTML is allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>