written by owen on 2017-Oct-25.
Focus, determination and maintaining scope is really all that you need. Oh and also time, lots and lots of time. As I wrote in 2005 programming is all about solving small problems until you can tackle the big ones. The difference in today's hype driven internet is that there is so much content and people selling snake oil that the idea of solving problems gets lost in the noise as they try to profit off the increasing noob population on the internet. hey come and learn this javscript framework.
Lots of promise and tutorials
The internet is a tutorial machine. "Those who cannot do - teach" is a common phrase that has been around forever. There are people that are in the business of making tutorials for ignorant newbies. Making tutorials is a very profitable business. With the rise of internet access you have millions of people with time on their hands, nothing to do, hopes and dreams. Teaching might even be in your destiny if getting started in programming does not work out for you. It might not be the job you want but whatever job you get something will work out. Just be on the look out for the people that come with promises because a promise is a comfort to a fool and making promises about programming careers to fools might be their job. Do what you like, not what people tell you will pay you the most money. There is no shame in admitting defeat - everyone cannot be a doctor.
Despite this influx of people, programming has not gotten any easier no matter what these tutorials might promise. It is not easier to become a doctor today than it was in 1920 - hard stuff is hard. Be prepared to spend lots of time watching these videos and signing up for boot camps. I would advise you to avoid spending money on online tutorials until you have exsauted the free options. Most code camps are "bait and switch". If you are new to programming you need to focus on finding the simplest launch pad that you can find. To do list tutorials are nonsense, you need to go lower, like down to arrays.
Be wary of Fishing nets
I tell you that programming is hard because it is. I am not telling you this to discourage you from pursuing your dreams of being the next Steve Jobs. But I am empowering you with the knowledge that the road to success is littered with many, many dead bodies and people who gave up. I am not going butter you up saying that programming is the future, AI robots or VR is going to be a billion dollar industry once it takes off. I am not in that business. I am not trying to get you in line for the meat grinder. Others will encourage you to join a boot camp and "see if you like it", toss you out into the great deep ocean so that they can get referral credit.
Truth is most people are unable to sit in front of computer for 6 hours, typing on a keyboard, hoping something comes out on the screen. Sometimes nothing comes out. But certainly the more time in front of the computer, the better you will get. The race is not for the swift but for those who spend the time to read the documentation and try out the demo samples. Not everyone likes reading and not everyone can program. This is a fact. Know this and you will not be disappointed. Programming is boring but perseverance is key.
Find something simple and small to start out. Avoid falling into the rabbit hole of modern java script, APP or mobile game development. Programming is about focus and solving problems. Avoid the temptation of jumping into building an application for a startup company or building the next facebag. Android apps are hard, iphone apps are even harder. It is ok to have delusions of grandure but a part of keeping focus is having an achievable goal and more startups fail because they try to solve problems that are not simple to solve. Some problems are best avoided until you are good enough to tackle them. Coward man keep sound bones. Get good.
If you are a fickle person who cannot even read a single paragraph on a page in a book then you might lack the determination that is needed to fully take on the rigors of programming. This is a fact of life, almost like light speed. Despite having awesome "google" skills it is going to take more than google and plugins to get good or even decent at programming. You'll need to put in work. Tools will only take you to a point. There is no best programming language to learn.
Do not get hung up on the details
Modern web devs talk incessantly about what browser they are using or TDD or the lastest library they found on reddit. In the grand scope these things are just sugar. The only things that matter are the problems that you solve. Code generation, type safety, usability, UX, refactoring, polishing, internet of things - all of this is just sugar for people with bad teeth. Just focus on your conditions, varibles, loops and flow. Avoid threading - it is a rabbit hole. Stick to the basics and avoid people who talk about "modern" because they mean you no good.
Make something anything
Too many noobs spend too much time researching looking for the right stack of tools to the point where they never produce anything. They end up with a portfolio full of half assed prototypes because they become skidish, too confused and uncertain to start anything because they donot want to go down the wrong path. They never start because they fear they will finish the wrong thing. News flash: you are already on the wrong path - you should have become a doctor or a lawyer. Hush.
But since you are here you might as well start that little project that you were thinking about. Start something publish it online or somewhere so that other people can see it. Show it to your friends. Time is constantly moving and published work is the only work there is. Do not wait until you feel like you have something good enough to show because people never achieve perfection - its humanly impossible. Publish or die is a good motto to live by. Feedback especially negative is a good way to grow and learn. Social media is wasting creative your time. Avoid people who have no original opinions - they are also wasting your time.
Avoid stuff with too many tools
If something looks complicated and keeps wanting you to download tool X or Y just to setup or do a build then it might be a sign of a headache coming soon. The bigger the installation the higher the chance that an update will be twice as big. Be wary of platforms that are in the "cloud" or require you to be always internet connected so that they can feed you news or updates and such - THEY WILL NEVER LEAVE YOU ALONE! Like a carrot on a stick.Tooling is one of the quickest ways to lose control of your scope of development. Things will get quickly out of hand or deprecated. This is also another profitable career path; you do not have to write code at all - just write tools and plugins.
Stick to the core
If you have a hammer and a nail just stick with those and work with what you have. If you start downloading plugins and such you will become dependant on tooling and that is the last thing you want to do when starting out. If you need to store information use a CSV instead of XML because you will be stuck when you try other things. Plus XML sucks. Do not get complacent about the pace at which you are learning or the stuff that you can do. Remain focused at learning the basics and everything else will fall into place. You cannot do everything.
Not everyone can learn programming and even fewer people can get good at it. Just like how not everyone can become a doctor or a nurse. And software is not eating the world - actually software is only eating programmers. There are other careers and things you could be doing with your time if learning programming does not work out. So do not get confused in the echo chamber.
Whatever language you decide to pick up just run with it. Language 1, 2, 3 or whether you are interested in whether it be mobile, game development, application dev, web development, research, User Interfaces, design, art or whatever. It is easier if you know real people who are doing something similar things who can give you shortcuts to progression. There are no real shortcuts in life but at least having someone there can help you avoid the unnecessary nonsense. Ask questions, read, watch videos, buy a physical book, find the best way you learn but for heaven sakes do not join an online bootcamp. If you do not know anyone you are not looking hard enough. In the mean time you can pick up weird edge case stuff like red-lang.org/ - you might like it or you might not but that is the nature of software - knowing a little about alot makes everything clearer - especially when you are just testing the waters.
Focus (stick to something), determination (there will be struggles to over come) and maintaining scope (dont bite off more than you can handle, stick to simple stuff).
"The reality is that the true power is in building a playground that you would want to play in, and that has been taken from the individuals and small companies in tech - where one is forced to dream inside of someone else's framework.....There was a time when, faced with those things, we simply wrote our own libraries and kept them in our toolbox, but no more. Code re-use has created generations of people without an original thought in their head, destined to toil in someone else's field. The money isn't bad, if you can find the work, but it's still someone else's field - which means you're limited to what they will allow you to do."
- Taran June 6, 2017