Avatar

So You Think Programming Is Kind of Neat - Confession 32

2014.09.15 10:37:29
Index

header That's great! I'm really glad to hear when people show interest in programming. Before you rush into it all though, here's some things to consider.

Do You Know What You Want

Programming is a large field and you'll have to spend a lot of time with it. Often times it will be very frustrating and you'll get stuck in problems you don't know how to solve. For that reason it is vital that you know of something that you want to achieve. Some form of goal that you can work towards, some kind of dream program, game, website, or whatever it may be. Without this kind of dream, it's going to be very difficult to keep at it and pull it off. Find something that intrigues you and implement it!

Do You Know How Easy It Is

Thanks to millions of people writing billions of lines of code and making a large chunk of it publicly available or reusable, a lot of the work is already done for you. There's a plethora of great libraries and tools out there that make certain tasks in programming very easy. Don't let the scale of your project discourage you and don't fret when you can't figure something out. Most likely there is already an existing solution out there somewhere. The worst you can do is getting lost in the fear of not being able to continue on. Just keep working on it and you'll find a solution eventually!

Do You Know How Hard It Is

While a lot of tasks are simplified by a huge lot thanks to the prior work of others, there are still plentiful of problems that remain unsolved, especially when it comes to specifics of your own project. No matter how big or small you judge your project to be, there will be issues you won't be able to solve immediately. As you advance your skill, the problems you've solved before will become trivial, but that doesn't mean you'll ever stop encountering frustrating situations. You merely move on to more complex and difficult problem areas. Programming will never be easy. If you ever think it is, you're most likely missing something essential, as there are always things to improve.

Are You Willing to Sacrifice Time

Indulging in programming and taking it seriously as a hobby or pastime is going to suck up a lot of your time. A huge lot. If you can't keep working on your code every day, if only by thinking about it, you will struggle to move on. It isn't hard to dedicate half an hour every day to a task in order to keep at it regularly, but programming doesn't lend itself very well to that. Some things require many consecutive hours in order to get done smoothly, so you must be willing to sacrifice long periods of time for your projects.

Can You Study

As you go on to face more and more difficult problems it becomes vitally important that you know how to sit down, research, analyse, decompose, and rebuild code, issues and solutions. Being able to do that requires you to be able to study and focus on your tasks, to go out of your way to find solutions in books, code and online. Merely asking people whenever you face a problem is not going to cut it, you need to be able to stay independent and find your own way to the solution.

Are You Capable of Asking Questions

While asking questions immediately is a sure fire way to make yourself very dependant on other people, it is nonetheless important to know how to formulate and express your problem, how to address other people and how to ask around. Some things don't have a solution you can easily find online or maybe no direct solution exists at all. For times like these it is important to be able to communicate what you're trying to achieve and to absorb the advice other people give you. In order for this to function you need to know how to express your issue in a closed-off way that others can understand and work with. They aren't going to be able to understand your entire code base quickly and most likely don't want to either.

Do You Have the Courage to Display Your Work

Showing your work around and making it public so that others can see it is a scary thought for a lot of people, myself included. However, getting over this fear is a tremendous help. By overcoming it and sharing your work with everyone else it becomes much easier to get feedback and connect with other people. You'll feel less awkward to ask questions or request review or maybe even use your code as an example when someone else shows up with a problem you've already solved before.

Now That You've Read This All You Can Dismiss It Immediately

While all that I've talked about so far certainly has some important points, it doesn't mean that you need to adhere to them to learn programming. This is merely a collection of tips and ideas that I find are helpful to be aware of. Just remember that if you do want to embark on this journey, it's not going to be easy. But it's not going to be hard either. It'll require you to communicate and it'll require you to think for yourself. There'll be frustrating points, but also plenty of joyous occasions when things just work out beautifully.

Programming Is…

And now I'm going to leave a bit of my own experience with the general programming community. There are going to be a lot of people that will tell you what programming is and what it isn't, how you are supposed to do things and how not. There's going to be a lot of screaming and kicking and a bunch of immature wailing about whatever is or is not the currently Best Thing, about which kind of style of code is awful for some reasons and whatever else is superior for other reasons. You'll encounter a lot of debates that seem very similar to religious or political wars, mostly concerning languages and stylistics. You'll also find yourself feeling very strongly about things that seem very silly and merit-less afterwards. This is because programming is mainly a culture of people that are scientifically oriented, so they tend towards wanting to find the best model to fit the problem and love to argue about it, but a large part of programming is also a matter of preference, opinion or personal style. These two factors don't lend to each other very well, so there's going to be a lot of heated discussions about things that don't matter.

But on the other hand you'll also encounter a lot of very helpful and friendly people, people that'll want to see you improve, will want your project to work out and be completed. You'll also hear of –and maybe even come into contact with– people that are a lot more capable than I or you are or ever will be and that's great, because you can learn from them. Programming is especially wonderful for this because if the source code is available you can not only see what kind of amazing products people made, but also precisely how they made it.

This Is an Opinion

As hinted at above, this blog entry, too, is an opinion. There are going to be people that will disagree with some or all of what I wrote, but that's fine. Try to listen to as many different people as you can and form your own conclusion based on the answers you got.

I, for one, hope that this entry was at least useful or maybe even inspirational to some and I will gladly embrace anyone that still decides to embark on the long journey of programming. If you have any feedback or questions, please do let me know.

Written by shinmera