Post
For someone who spends most of their time in Photoshop or working with relatively simple languages like HTML and CSS, it can be difficult to move to more advanced (and more interesting) programming languages. The transition is significant and requires an overhaul in the way you approach a task or problem.
Being a beginning programmer myself, I have found the following tips very helpful in learning both the concepts behind general programming and the specifics of individual languages.
- Get the basics down first: It is important to realize that the logic behind most languages is nearly identical. So understanding what variables, loops and functions are beforehand will be invaluable. As described by Kyle Neath, learning various languages will be akin to learning to interpret a new accent once you understand their foundation. The best way to learn these basics is by focusing first on the concepts presented in your programming tutorial before reapproaching the content to learn the syntax, etc.
- Get a good book: This may seem like a no-brainer, but finding a good book that can walk you through the process is very important. Try starting of with a ‘For Beginners’ book as these usually do not make the assumption that you are at least partially familiar with the content they present. Also, consider picking up a couple of these introductory volumes as the authors of these types of books are often forced to cut out important parts to keep the lengths down so you might find important topics in one book that went completely untouched in another. Plus, it’s always helpful to reread those foundational concepts.
- Learn by doing: This is perhaps the most important tip because it ensures that you are actually learning the concepts and syntax and not just recognizing what happens. There’s a big difference between actually writing the code and telling yourself that this is what I would do. Most books have end-of-section exercises – they’re there for a reason. Being presented with a problem or question helps you learn how to approach future programs.
- Go old school: When you’re first learning a programming language, it is easy to become overwhelmed with relatively minor syntax, style and conceptual problems making it difficult to remember what exactly it was that you were trying to do. By outlining your program’s function and scope on paper (or the electronic equivalent) you can quickly remind yourself of what you’re trying to achieve.
- Community Participation: A big part of learning a new programming language is joining an active and proud community. Whether it’s a co-worker, mailing list or forum, connecting with an expert can be just what you need. Books are good for setting you up but you’ll often find yourself faced with a seemingly insurmountable obstacle once you begin applying your new knowledge. At times like these, the practical experience of a seasoned programmer is essential not only to help you solve your problem but also to learn how the problem was solved.
If you have any tips that might be of use to a young programmer, feel free to submit them in a comment.
Archive
-
260.
The Phenomen- ology of Freedom
Are we truly free? Are the paths of our lives charted beforehand, or is every moment an opportunity to break new ground? The answer isn’t easily found, the determinate physical world seems to hit a...
-
260.
An Open Letter to God.
So here’s the deal, we’ve been here a while doing great things and…eh things, but there’s always been that trickling or gushing concern about why. We’re amazing, when you stop to think...
-
260.
Nietzsche: The Fast Track
The darkly dressed student made yet another existentially pessimistic remark and the professor unleashed one of the harsher insults I’ve heard: “Every student goes: Nietzsche, Schopenhauer,...
-
260.
Computers and God
I came across an interesting presentation on digg (and surprisingly, it wasn’t a kitten with horrifying spelling/grammar) recently that compared – albeit often fallaciously – our...
-
260.
Surviving Life
The questions we ask are not ones we can ponder in our free time and easily set aside when there’s life to do. What am I? Am I free? What is the purpose of my existence? Why should I strive to...
-
260.
The New Erratic Wisdom
Another semester, another redesign (give it a solid refresh to clear your cache). This one’s been brewing for quite some time now, with the notched grid motif coming around a few months ago,...
-
260.
Imperfect Art
Plato’s metaphysics and his Doctrine of Forms describes a general division of our universe into forms and particulars. Forms are instantiated by contingent particulars. That is, particulars are...
-
260.
Identity and Time
A classic example in the metaphysics of identity is the “Ship of Theseus” story which introduces an interesting worry in the way we identify objects over time and change. First, a brief...




















Comments
rob
Jul 4, 11:05 PM #
I remember when I first started my job and was completely unfamiliar with CVS and was downright terrified to use it. Practicing on your own test server will be very helpful so that you’re not forced to work with it on a high-profile website when you’re still uncomfortable with it.
Thame
Jul 4, 11:25 PM #
rob
Jul 5, 12:03 AM #
KalEl
Jul 5, 02:16 AM #
Harry
Jul 5, 04:41 AM #
Kevin
Jul 5, 05:11 AM #
ultramancool
Jul 5, 05:16 AM #
“Code Complete” (http://www.cc2e.com/)
it’s really a classic for turning an amateur into a professional
Anthony
Jul 5, 06:41 AM #
I’ve seen a senior designer behave very arrogantly about source control, only wanting to burn his work to a CD every few days, causing problems as above and such, so happy that he resigned. I hate having to compare heaps of files to ensure that they have the correct changes applied.
My point here is that understanding a Source Control system (We develop ASP .NET applications, .NET is fantastic!) is vital to ensuring productivity in a team environment.
tom
Jul 5, 06:44 AM #
Marius Bernklev
Jul 5, 06:50 AM #
veritech
Jul 5, 06:56 AM #
http://weblog.alvanweb.com/2006/07/05/5-tips-for-a-beginning-programmer/
Alvanweb
Jul 5, 07:01 AM #
Other books that are worth mentioning are Design Patterns and Refactoring
It probably helps to start with something that doesn’t have a huge library, for example C. Once you master the basic concepts you can progress to Java/C#/etc and you will see that a lot of the stuff is already in the library and you don’t have to write your own
Denis the SQL Menace
Jul 5, 07:19 AM #
KISS: Keep It Simple, Sammy…
The simpler a program is, the easier it is to fix it or change it. Use “cute” tricks only when there is no easier way to do it.
Rule 7:
Do what they expect
Make your interfaces work the way someone who has never seen your program before, but knows what he wants to do, would EXPECT. You want to have your user “Save” his work? Use F2 or ^S or File/Save—because that’s what most programs your user has used in the past have used.
D'n
Jul 5, 08:24 AM #
Rule #1: Work out what you want the code to do
Rule #2: Work out how to achieve the task(s) in #1 in logical steps
Rule #3: Work out how you will be able to tell if your code really does #1 or not.
Rule #4: While writing your code, keep on testing #3
Whitter
Jul 5, 08:36 AM #
6.) Buy a computer, and learn how to turn it on.
nobody
Jul 5, 08:36 AM #
Now that I am in college and doing quite a lot of programming for work I can see the things that have helped me the most and those that have hindered.
One of the things that makes me frustrated now that I am in college is that a lot of programming classes emphasize form and design over practice. Its like learning music theory without ever practicing an instrument. Sure you may know how programming works “ideally” but when it comes down to the line and its crunch time I would much rather have the experience and practice to work out a bug in fifteen minutes than have the concept of the “perfect program and how to design it” but then spend ten hours working through code to find that bug.
Programming is an art. If you want to be good, my biggest tip would be to practice your butt off and don’t assume that because you know how to design a program on paper means you’ll have any clue how to put it into real code!
JJung
Jul 5, 08:49 AM #
Also, thanks D’n, Whitter, and anyone else with a suggestion. To those complaining about the simplicity of these tips, I’m sorry. I did target it towards beginners but perhaps it was a little too beginner-ish.
Thame
Jul 5, 09:02 AM #
I’m a beginner programmer as well (by the by, tip 1 & 3 are the ones that actually do something) and in the beginning portions I wondered if I could actually get somewhere without formal education.
You are right…. doing it is what makes the difference. Start out with small challenges and work out to bigger ones.
JT
Jul 5, 09:39 AM #
Derek Vladnik
Jul 5, 10:41 AM #
I learned to program as a teenager, which was ideal, because in college I was able to focus on the theory. Unfotunately a lot of students who had never written code before were too hung up on the syntax to really absorb the theory.
Gabe
Jul 5, 11:18 AM #
I totally agree to anyone looking at learning to program. If you don’t do it before you start at the college level. There’s a potential to get left in the dust because you’re trying to wrap your head around the syntax. I learned this first hand, but had never taken the initiative outside of what I could learn from a high school class. To add to that, my high school didn’t offer programming of any kind, so I didn’t learn anything about the subject before I headed off to a top Computer Science program.
So please, take the initiative and learn on your own. I would like to think that theoretically and syntactically I really know my stuff now, but it will cost you time and money (lots to a teenager) learning what your classmates knew when they got accepted to the university, :).
Burton Posey
Jul 5, 01:28 PM #
Eric N
Jul 5, 01:44 PM #
Good programming is, IMO, much more artistry then most people give it credit for. Creating a well-behaving, useful program is very similar to writing a cool, popular song. There are no “right” or “wrong” way to do it, as long as it works.
florist in 32901
Jul 5, 02:33 PM #
Lovely tips, keep up the great work
web design uk
Jul 5, 03:24 PM #
What’s a ‘loop’? And what’s a ‘variable’?—A Haskell Programmer :-)
Dan P
Jul 5, 04:08 PM #
Also, the Subversion development model works better (no “checking out” or locking source files), makes for more frequent, test and commit cycles, which I believe results in more reliable code.
David Atkins
Jul 5, 04:22 PM #
// write comments!
Maybe fold this into rule #4: Instead of outlining what you want the program to do on paper, do so in a comment. If you write out step by step comments you can fill them in with code as you go. This is often a very useful technique for tricky bits of code.
If you are having trouble figuring out how to accomplish something, the next person to come along and read your code probably will too (and that person is often an older you). Comments help organise your thoughts and help the next guy read your code. Write comments!
benj
Jul 5, 04:49 PM #
To be more concise: learn to verbalize your impossible problems into simple instructions to find out where the logic or method breaks down.
M.T.
Matt Todd
Jul 5, 07:04 PM #
heheh, nice catch.
maseone
Jul 5, 07:18 PM #
Thame
Jul 5, 07:41 PM #
zoel
Jul 5, 09:09 PM #
Mark Maunder
Jul 6, 12:14 AM #
Sean
Jul 6, 03:26 AM #
Outline in a comments what it does and the possible return values, maybe even an example of how its used.
If its a big project for public use consider documentation it as developers like to tinker with code.
And for beginners too, check other peoples code. Rewrite it even. Learn by example. People write code to be open soure sometimes ;) check how they do things, it’s a great way to learn new things.
fens
Jul 7, 09:29 AM #
http://www.lovelyblogs.com/2006/07/06/erratic-wisdom/
Tarun
Jul 8, 12:38 AM #
Thame
Jul 9, 10:41 PM #
adi
Jul 10, 06:53 AM #
I agree that adding books to your library is very valuable to any programmer. Just as valuable is creating and maintaining a Code Snippit Library as well. It will reduce you debugging and development time, that is if you save you debugged versions of code snippets.
I enjoyed reading everyone’s comments and insight offered here, found some very useful.
Geoff
Jul 11, 11:36 AM #
The pro is making money from their programming and most likely can afford them. The beginner most likely can not.
This is why I put together a list of freely available programming related ebooks here:
http://www.programmingebooks.tk
Also, many beginners make the mistake of getting discouraged by boredom. They don’t want to do the boring learning projects and instead want to jump head first into the deep end without knowing how to swim.
Patience…that day will come. In the mean time, get creative. Ask yourself with each new skill you learn, “How can I use this?”
The answers may surprise you if you dig deep into your imagination. You might just think up the next ‘good thing’. And even if you don’t, you will at least have fun and stay motivated.
app
Jul 11, 10:36 PM #
Azhar A
Jul 23, 11:26 AM #
Anish Gopan
Sep 15, 09:52 AM #
Andy
Nov 15, 05:36 PM #
John
Dec 1, 09:09 PM #
Nice tips, comments I agree with, although I do not use them, but I blame that on being a beginner.
And Thame, just wondering, but how do you deal with those people who put down your articles, I mean, they read it, they’re not happy with it, so they post comments such as : Those tips are crap! You have no idea what your talking about. I Hope they realize that no one is making them read this stuff, and if they wanted to add a tip, well theres a thing called creative criticism.
Once again, thanks for the tips!
Dan
Jan 19, 03:14 AM #
Hi, nice thread.
Can you help me out on choosing the right programming language to start up with? Otherwise i might grab Code Complete as advised.
I’ve had my programming classes way way back 9yrs ago. And had Turbo Pascal 6 as the last hands-on language. I’m planning to jump for Java but it seems i’ve had some little problems on it. I think i need to refresh and recondition my thoughts on new simple programs to start up. Thanks.
Rick
Aug 18, 04:39 AM #
Add a Comment
Phrase modifiers:
_emphasis_
*strong*
__italic__
**bold**
??citation??
-
deleted text-@code@Block modifiers:
bq. Blockquote
p. Paragraph
Links:
"linktext":http://example.com