4 ms·
I'll tell you what I tell all my friends and acquaintances when they ask me how to get "into" programming. "First find a problem to solve, then we'll talk." I
by tomelders 10y ago
I'll tell you what I tell all my friends and acquaintances when they ask me how to get "into" programming.
"First find a problem to solve, then we'll talk."
I know it's glib, but I genuinely believe that learning to program or learning to be an engineer is, in and of itself, pointless. And every time I've tried to teach people the fundamentals of programming, they get bored, move on, and never come back. It could be that I'm a bad teacher - and I am - but I think there's something else at play.
I think it's that the reality of being a programmer is very different to what people think it is. For example, people think you can lean to program to a point were you "know" how to program. As though at any point a programmer can accomplish any task by sitting at a computer and bashing the keys in just the right way to solve any problem as if the solution was pre-ordained, just hanging in the aether waiting for you to pluck it into existence.
In reality, it's a never ending journey of learning. You can never stop learning. There will never be a day when you can stop educating yourself and proclaim to the world that you are now, and will forever be, a programmer. And I think when that dawns on people, they lose interest.
Also, programming is just the tool. The job is something very different. I could teach you how to swing a hammer in no time at all, but you'll be no closer to being a sculptor or a joiner or a stone mason. A web developer can't write a high frequency trading algorithm without first learning a lot about a lot of other subjects.
People often want to learn to program for all the wrong reasons. But if your desire is to solve a problem? Well that's a different story.
If you can find a problem AND you have a desire to solve it then you've taken your first step towards becoming a programmer... or a doctor... or a farmer... or anything else. And if you can also think of a good solution, that's your second step. What follows is a few million more thankless, frustrating steps. If your problem is best solved with the help of a computer, you will become a programmer.
So I would say this to you. You're probably going to have a hard time breaking into assembly as a career at your age for all kinds of reasons. Some valid, some not.
But if you can use what you know to solve a problem, and it's a problem people want someone to solve, or better yet if it's a problem people don't even realise they have! If you can do that, then all the challenges you would otherwise face in your quest to become a professional assembly programmer, they all disappear. You won't need a job. The people who have all the jobs to give, they'll need you.
- wccrawford 10y agoI guess maybe it's different when talking to friends and family, but I find that most people on the internet who are looking to learn to program already have that problem they want to solve. It's usually a game or app they want to make. I find that your advice also applies to learning human languages, too, and that people who don't have a problem to solve are very likely to quit quite quickly there as well. There just isn't enough motivation.
- ufmace 10y agoI'd add to this. I think to really learn programming, you have to have a specific goal of something to build. This gives purpose and direction to your learning. Not many people can learn much by playing around with basic syntax - adding, subtracting, if-elseing, text input and output - and trying to wade through vast standard libraries and ecosystems of third-party libraries without a goal in mind that they have some motivation to reach. You gotta decide on something to build. It doesn't have to be anything big and fancy, or something that a company or user would pay for. Could be just automating a task that you have to perform a lot, or just something that you think would be cool. And of course it has to make sense to perform with the platform that you're learning. You don't want to try and build a web app with assembly, for example. But you could get some kind of microcontroller that you can program in assembly and try to automate some electronics stuff around the house or something like that. Doesn't matter if there's an easier way to do it or not, it just matters that you built it and you figured out how to do it.
- Jugurtha 10y agoThis is primo advice. I'm sort of in OP's position for I can't find work and don't have experience because I wasn't smart enough to find problems to solve. I've had Python's doc and interpreter for years, but it's not until I had a problem and I wanted to solve (mobile credit transfer for subscribers on different networks) that I started to actually do Python. I haven't solved the problem because I hit a roadblock back then (a technicality I missed that forbade a certain tier of SIM cards to do what I assumed be possible), but I've learned more during that tiny silly project than I've learned in years. You make an excellent point about using a hammer vs. being a stone mason. It's not enough to have discrete skills, one also needs to have the glue that binds those skills to make a coherent whole. i.e: programming, abstracting, managing time, breaking down a problem to manageable bits, tracking an issue, testing for different cases, saving knowledge and things you learn, etc. This glue is very important and I still don't have enough of it. For hardware, it's slightly different but there's a lot of overlap. I started a small project to build an interface to allow some cars with head-units with a certain feature (like the ones the Tesla has) to work with something else. And just putting it down in writing helps, even if it's just because it displays the date I wrote it and reminds me I should get back to it. Everyone who asks me about this kind of stuff, I just tell them to find stuff to do and build their toolbox early on so they don't make the same mistake I've made.