Beginning Programming - What to Expect

No replies
SX Retired
Joined: 2008/10/09

Don't kid yourself - this isn't going to be easy.

There are a lot of misconceptions when it comes to programming especially by new programmers. Let me clarify a few things for you.

Programming takes time
The actual act of programming takes time. When I first started to program - it took me over 50 hours to make my first fully working List object. Now a days on average I write approx 500 lines of working code every 4 hours. This includes tests and testing. The content management system I wrote at work consists of over 300 hours which includes design, write, and test/debug. I still consider it Beta.

Don' t think you're going to be able to write a full fledged video game within a year of writing you first hello world program.

Programming = Frustration.
If you don't enjoy being frustrated or can't handle your frustration, then don't bother learning to program. You WILL be frustrated EVERY DAY you write code. There will always be something that didn't work properly or doesn't do what the documentation said it would do. Without fail this is a truth of programming.

Learning to program means experiencing a lot of frustration. You will have it. Expect it. It will probably be the most frustrating experience you'll ever have - until you get married.

You can't learn to program by reading a book/tutorial
You can read all the books in the world on programming but it won't help you. You have to do it. It's a mind set - a way of thinking. Debugging is a skill that is acquired through experience. Good design can only be realized by epic failures.

You can't be a programmer by reading anymore than you can be a singer by watching American Idol... I have to say this because there are still idiots who watch American Idol and think they can sing. There are idiots who will read this and think they can be a programmer just by reading a book.

It's the same was as physics. You can read physics books and understand all the concepts. But if you can't solve a physics problem then you don't physics.

You're not going to become some Uber Programmer by choosing to learn to code on a 'hard' language first
I'm sick of hearing people say "yea I'm going to be 1337, I'm learning Assembly" when this person hasn't learned how to program in any other language before. I'm not saying it's impossible to do - I'm just saying you're an idiot. It makes no difference if you learn Assembly now or later. The understanding and revelations you gain from knowing Assembly will benefit you equally whenever.

You don't have to start hard to be good later.

Learning software doesn't mean you don't have to know about hardware
Some people say - "I'm a software guy, I don't care how [INSERT HARDWARE NAME HERE] works". Those people are stupid.

Software touches EVERY aspect of computers. If you don't understand it, then what you're coding is going to turn out badly. If you don't know how a processor works then nothing's going to stop you from writing very inefficient code. If you don't know how the internet works then you're not going to understand socket programming. If you don't know how a harddrive works then you're not going to care that accessing the harddrive is very expensive.. nor are you going to understand why you can't just get a listing of all the file blocks on the harddrive easily.

Not to mention you're likely to produce security vulnerabilities in your software.

There may be a few others. I'll add them later if I think of them.