I was having a great after dinner conversation last week with the sons of one of my colleagues. We were talking about gaming and technology, and eventually our chat moved onto mobile applications, where we discussed some of the apps that I had developed.
What languages did I know? Were they hard to learn? How long did it take you to make your first app?
One of the sons then asked: How’d you know how to solve the problem you were trying to solve?
How’d you do that?
A great question – and one that I tried to answer, I hope to his satisfaction.
I explained that it’s a lot like learning to read and write. You first learn the alphabet, the sounds that letters make in the language you speak. You then move on to simple sentences, and then grammar, and then finally you begin to write; simple sentences at first, and then more complex paragraphs. Finally, you’re able to express yourself completely.
Learn another language, and the process repeats itself.
But I could have answered the question a bit simpler than even this.
The way one learns to solve problems, is by solving problems.
Learning, by Doing.
Learning to develop in a new computer language proceeds in the same way that learning a human language proceeds. One learns the vocabulary and language elements, master the idioms, and begin by expressing simple solutions, first, before moving onto more complex expressions.
Of course, the more times you do this, the easier it becomes to recognize similar patterns in structures and syntax, and thus, easier to ease into that language.
But being able to write code, and being to write great code, are not the same thing at all.
This week, I’ll talk about the practice of software development, and the process to proficiency.
Go, and be you.