FRIHOSTFORUMSSEARCHFAQTOSBLOGSCOMPETITIONS
You are invited to Log in or Register a free Frihost Account!


Programmers: How to...





eznet
How to be a programmer:
There are many who would like to learn to program, from the ground up, but know nothing about where to start. Learning to program is a complex problem to tackle; especially when you don't know where to start and where to go from there. It is most commonly said: “The best way to learn it is to do it.” But to someone with no understanding of source code, compilers, languages, design patterns, algorithms or other such programmer's trappings, “doing it” is impossible.

Usually a basic understanding about source code and compilation come relatively quickly, but concepts about application design and project management are somewhat harder to acquire. I think that likely the biggest hurdle at this phase in the programmers education is determining the next course of action after learning language basics and basic control structures, such as loop statements – how do you take “Hello World – Press ENTER to continue” to the next level? How do you make something more than 50 lines of code and more than one source file?

What I am asking is this: Any seasoned (or not “so” seasoned) veterans have an tips for us newbie young guns?

    -Tips
    -Recommended Resources
    -Language Tricks
    -Advanced Tips
    -Generally: Any thing you wish someone had told you when you started!


I have been “learning to become a programmer” for about 3 years now (via CS classes and online resources) and still, I know next to nothing about programming. Sure I know enough Java and C++ to create some basic applications that will read and write and maybe access a network protocol, but how does that become and OS or a video game (that that these are anything alike). I have been told (and read many times) that becoming a programmer is more of a lifestyle than a process and that, like anything as long lasting as a lifestyle, it take a lifetime to truly acquire all the skills needed to call your self a programmer. Basically: Forget the “learn to do ____ in 30 days” books and look for the “learn to be a programmer in 10 years time” course.

Anyone?

Thanks in advance to any programmers out there hoping to aid in reducing the half-wits (i.e. ME) you will be forced to work with on projects in the future!!!

Idea I will start off with one recommended resource tip that has helped me find the right path(s) – one that was given to me by a programmer friend: “The Pragmatic Programmer: From Journeyman to MasterVery Happy
Indi
eznet wrote:
Any seasoned (or not “so” seasoned) veterans have an tips for us newbie young guns?

RTFM.
Liu
Indi wrote:

RTFM.
eznet
Indi wrote:
eznet wrote:
Any seasoned (or not “so” seasoned) veterans have an tips for us newbie young guns?

RTFM.


Yea. Reading the f'n manual is definitely helpful.

Hey, thanks guy...

really.
Indi
eznet wrote:
Indi wrote:
eznet wrote:
Any seasoned (or not “so” seasoned) veterans have an tips for us newbie young guns?

RTFM.


Yea. Reading the f'n manual is definitely helpful.

Hey, thanks guy...

really.

You don't sound like you particularly mean it, but i wasn't joking. i was quite serious - and i stand by it as probably the best bit of advice you can give a newbie programmer. If you learn to use resources and RTFM, you will go from newbie to advanced in a blink, easily.

i used to teach C++ programming at a adult education center, and one of the things that always made me chuckle was that my students all believed that i had everything i taught about programming memorized. It was like they thought that if i were to sit down to write a program to do X, i could just turn the computer on, load up the text editor, and type... and after a few hours of nearly unbroken typing i would have a complete and working program.

Of course, it doesn't work that way. i don't have anything memorized. That would be idiotic given the rate that technology changes. Suppose i memorized the entire C++ standard today... my knowledge would be obsolete in a couple years when C++0x is finished. What would be the point? When i started programming, Java was the Next Big Thing™. If i had actually bothered to learn all of Java at that point, it would have been obsolete knowledge inside of a year or two... today's Java looks nothing like the original Java. And so on and so forth.

So why bother? Instead, i just RTFM as i program. i have 3 C++ STL references bookmarked, Rogue Wave, Dinkumware and some SGI docs. Two are actually open right now, because i had to use it earlier (i vaguely remembered that the STL had a function called accumulate() because i had used it before, but it wasn't where i thought it was, and it didn't work the way i thought it would, so i ended up rolling my own).

So let's say you wanted to start programming today, right out of the gate - you have never programmed before. Say you wanted to write a program to find the inner product of two vectors... where each vector is stored in a file (the usual one number per line format). What do you do?

Well if you took my advice, you'd read the freaking manual. Start with the basic tutorial for a program. Then you'll need a container to hold your numbers - so scan the manual for info about containers and pick the one that best suits your needs. You need a way to input from a file - if there's no tutorial, then simply searching for file input will probably give you all the info you need. Now how to do the inner product? Well, a smart person would search for inner product in the manual... and they will find that the STL already has an inner product function. It might even have examples of how to use it (i use multiple sources for that very reason). Then you just have to output the results. Again, simply search the manual for output. And you're done.

Note that reading the manual didn't just let a complete newbie write a program right out of the gate... they wrote a good program. All too often programmers waste time reinventing the wheel... but by reading the manual, this programmer found an existing function that did exactly what they needed it to do. 99.999% of the time, when a newbie asks "how do you do X", the answer to that question was already in the documentation - very often right in the example code.

And that's the big secret. RTFM.
eznet
Thanks (and this time I do mean it) Very Happy

This was exactly what I was looking for... not concrete descriptions and instructions on how to write a C++ program or a Java applet, but specifically the concepts and mindsets that guide a good programmer - best practices and theory Smile .
I have recently started to realized (in the last year (now a senior in my CS degree)) that the manual is about the only way to do it. I have a shelf of misc language books and then about 50GB of pdfs, chms and cheatsheets for everything IT and CS that I reference regularly.
I am now starting to think that the strongest thing i have in my arsenal are "design patterns". Although I am sure that eventually concepts pertaining to such will become "second nature", for now they seem vital in eliminating some of the headache of just hashing out code (which is how I started programming - writing code before you know what it does). Now, using the practices of a Waterfall, Agile and XP methodology(and other such catchy and trendy names) paradigms I am able to develop a program before coding said program. Although this often seems like much more work then just coding, the results are now much better than when I was going straight to the code.

Thanks for the incite, it gives me hope for the future in knowing that I am heading in the right direction (and that I have a long way to go on a never ending road Smile ).

Matt
amysanders
im currently learning A-level computing at college im in year 2 now, all this proccessing stuf is getting confusing like 2's compliment in binary e.t.c
eznet
amysanders wrote:
im currently learning A-level computing at college im in year 2 now, all this proccessing stuf is getting confusing like 2's compliment in binary e.t.c

I am unfamiliar with 'A-level'. I am guessing it is a dominant paradigm in the UK - searched google and all results ended with '.uk' so I am guessing.
That while '2's complement of a binary' thing does look like fun indeed. I had to take a couple of discrete mathematics classes for my Computer Science Bachelors degree, which was not fun in the lest. Most of the time I stayed confused, but just like the abstraction of code, it is the concepts of the math that seem most important - no so much the specific details. I know that sounds 'slackerish', but most professional level programmers that I have talked to about the subject of the complex math of computer science say that it is nice to know but a programmer rarely actually uses detailed mathematical knowledge when programming.

At least I am hoping Smile It is no fun racking complex mathematical formulas around in your head - not for me at least.
jabapyth
STW (read my sig)
Related topics
Yahoo developing an audio search engine!
Novell acquires Linux security company
Major Solaris features slip to 2006
hi
Which is the best content management software
Very cool Site!!!
Are there any Delphi programmers in here?
Are there any GAME Programmers out here?
Coders & Programmers
Flash Programmers Needed: Work on Action script "Real d
Compiling a list of programmers etc
looking for freelancer programmers
Which Notetaking Tool Do You Use?
Young Programmers apparently ignored? :(
Reply to topic    Frihost Forum Index -> Scripting -> Others

FRIHOST HOME | FAQ | TOS | ABOUT US | CONTACT US | SITE MAP
© 2005-2011 Frihost, forums powered by phpBB.