Whether assembly, BASIC, Pascal, or Intercal, what is more important than the language is the drive to program something. You have to have an application. You have to have a problem to solve.
Because, then, the goal is not to "learn the language", or "learn to program", rather, it's to solve the problem.
This tact is important because it's very easy to get distracted by tools, language features, etc. that very well may have nothing to do with the problem.
It also helps to work on solving the larger problem simply because there may be many approaches to getting it solved, but, in the end, any of them will work. By focusing on the problem, you can start to leverage what you already know, you get to incrementally, and organically, start including new things, etc.
When I first started playing with machine language, my code relied on "self modifying code". It was a naive implementation. But you know what? It was a working implementation. "Best Practice" suggests to not do it that way, but what did I know of best practice. Even better, later, when I DID learn the "right way", I had better knowledge of why, even though it was perfectly functional, my technique was not necessarily the best technique.
Working code, solving problems, is more important, especially early on, than "best practice". Despite what Dijkstra said, you can "unlearn" these things. Because when you learn the "better" way, you understand more of the "wrong way" (since you used it). Rather than following stuff by rote, CHOOSE to do things with a solid understanding of why you're doing it other than "this guy said so".
So, go off, and code. Write programs. Solve problems. Break things. Fix them again.
In hobby programs, failure is pretty much free.
There's a reason I don't build cabinets. I think I'd like to build cabinets, but...after you make the first set, how many more cabinets can you possible need? Very hard to become good at building cabinets if all you're going to do is throw them away as you learn to make them better. Well, it's expensive at least.
But code? Code is free. Cheap to store, cheap to break and fix. Easy to write a new program every day.
But you have to have problems to solve, because in the end, the problem is the goal, not the coding. Coding is just a distraction.
|