Web Hosting Talk







View Full Version : Becoming a programmer


insaneraptor
11-28-2002, 04:41 PM
I've taken basic programming in school learning basics of C++ and Java but i was wondering what it takes to be a GOOD programmer.

I dont mean things like devotion and stuff cause i know that i mean like
Logic?
Algebra?
Geometry?
Problem Solving?

you know things like those...Not the obvious "Devotion and time and stuff"

If anyone good programmer can help me out on this and also which programming languange would be the "best" to learn for software developing. Also if anyone knows any good college for this that would be helpful too.

If you want to contact me for some reason please

aim: insaneraptor09
msn/email rgsamtani@msn.com

irish
11-28-2002, 05:05 PM
I have been programming for over 3 years now and I have found the most valuable traits are Problem Solving and Logic. Math and other academic skills can be learned whereas Problem Solving and Logic comes with comes with experience.

cperciva
11-28-2002, 07:32 PM
Learn assembly language. All great architects have a strong understanding of construction techniques; likewise, all great programmers have an understanding of the primitive operations out of which their programs are composed. You might never have a job which requires you to write assembly code; but understanding assembly code will help you code in higher level languages.

Study mathematics. Two calculus courses, an abstract algebra course, a logic course, a course on graph theory and combinatorics, a course on formal grammar, and two courses on algorithms -- and that's an absolute minimum. You can learn programming languages on your own; very few people can learn the underlying mathematics on their own.

One final note: Every program can be written in every language; but certain programs will be easier to write in certain languages. Learn a variety of languages, and learn their individual strengths and weaknesses, so that you can use whichever language is most appropriate for each program.

Rich2k
11-28-2002, 07:33 PM
I think really it's having the sort of thinking where you can conceptulise what you are trying to achieve before you start. And you litterally think in code. It may sound strange but I know myself and a number of my collegues do that.

The logic and problem solving ability are probably the most important but you do need to have a reasonable grasp of Maths too.

[edit] Oh yeah calculus can be very useful too for graphs, etc. Just don't ask me to do double intergration, fourier series or differential equations... I left engineering cos I hated that!

insaneraptor
11-28-2002, 07:49 PM
ok so calculus and graphing and stuff

OK cool... anything else i should know before venturing forth into the feild of programming

sasha
11-28-2002, 08:42 PM
Laziness. You need to be extremly lazy. So lazy, that you can's stand a thought that you might have to see the same routine or code ever again.

insaneraptor
11-28-2002, 10:41 PM
huh?

jtrovato
11-29-2002, 03:26 AM
I have been programming for 20 years, I started off learning sprites on an Apple IIe and IBM 8086 computers. It was very frustrating at first because back then, you couldn’t go online to look up code. There were very few computer stores around; I think radio shack was the only one that sold computers for $8999 with 16 K of RAM. You are in a lucky time period to start programming; there are so many resources out there these days. It’s different nowadays, programming that is. Back then there were only a few languages out there. So you were limited on what you can use. Today, you can use a different language for different projects.

Some applications may require speed then you might want to use C++ or Assembly to get the best performance. On the other hand you might need to put together a web-based application in one day. That might no require speed, you can then use PHP, Perl, Cold Fusion, ASP, etc.

How I started was just typed away at the computer until I got the program I thought that I wanted and then when I wanted to change it, it took me almost twice as long to complete it. So my point is, have what you want to write on paper and do a top down design. Maybe write up an algorithm. All languages work the same way; they all must be converted to machine code in order for the computer to understand it. They basically have the same structure, Procedures, functions, Classes, etc. At least all of the most recent ones have these basic features.


So before you go wild, you should understand the basic operations of the programming,

if, while, switches, variables (types, operations on them, variable scopes)

functions || procedures

You can then get into more complicated programming

Recursion, Object coding (classes)

It might also be a good idea to learn basic sorting code: bubble, binary, etc. In the real world you wouldn’t need this. There would be no need to re-invent the wheel. You have SQL and other databases out there to use with your application.

And my last .001 cent – Learn the OS that it will be running on.

There is a lot more to know about programming, but the basics I have mentioned above would get you going.

jtrovato
11-29-2002, 03:29 AM
Sasha,

you funny person... hey Laziness is great, you know how many programmers get burnt out?? I did 10 years ago, I have been coming back for the past 3-4 years but in moderation, Can't sit up all night and code.

You will go insane.. Shoot your wife, hook up with the neighbors wife, beat your kids, and maybe drive your car off a cliff.

Some food for thought

sasha
11-29-2002, 08:34 AM
Originally posted by jtrovato
Sasha,

You will go insane.. Shoot your wife, hook up with the neighbors wife, beat your kids, and maybe drive your car off a cliff.

Some food for thought

I do not like guns, neighbors wife is 300 years old (I think she is dead for years, but she refuses to admit) . since I got fat, my kid is much faster then I am and I do not dirve (i do not use internal combustion for anything). So I'd say I am pretty much safe.

Btw, anyone here remembers ZX Spectrum 48k and Basic, and how you had to put up line nubers with each line of code and you just had to hit a key, and it would print the function for you (i for input, p for print etc..)

Rich2k
11-29-2002, 10:13 AM
Yeah since I stopped programming for a hobby and doing it for a career i spend less and less time working stupid hours.

I like having a life outside programming!

Oh god I remember by pinnacle achievement on the Speccy was actually getting the union jack image code to actually work! And then you couldn't save it!

jtrovato
11-29-2002, 03:51 PM
yup

and so sub and return

And if you numbered yours lines by 1,2,3,4 and need to put some line in you would have to renumber all the number after it...

Fun stufff.

chrisb
11-29-2002, 04:10 PM
Well, if you goal is to make money, I'd stick to learning program languages that are geared toward Windows, such as VB, .NET or even C.

In my experience, learning perl and php isn't going to make you much money. There are just too many of those free programs out there, and too many people doing it on the web.

jtrovato
11-29-2002, 04:17 PM
It' really all in how you present yourself to the protenial client. I wrote many php scripts and did make good money for little time. Besides it take alot less time to program fort he web than it does for the desktop. Besides, you have to worry about more things when you program for the desktop.

I believe the trend is going to web based software. Soon there will be no need to install any software on the local machine. Just pop in an URL into the address bar, place your username and password into the app and you are all set.

sasha
11-29-2002, 04:46 PM
Originally posted by jtrovato
yup

and so sub and return

And if you numbered yours lines by 1,2,3,4 and need to put some line in you would have to renumber all the number after it...

Fun stufff.

I was numbering my lines 10, 20, 30. So when I would run out of lines there was real reson to be pissed.

tapster
11-29-2002, 05:44 PM
Originally posted by jtrovato
They basically have the same structure, Procedures, functions, Classes, etc. At least all of the most recent ones have these basic features.


Good advice there John. I've been programming 20+ years too :)
Started with the old ZX81, black and white with 1k memory... then on to Spectrum and into Z80 assembly, then C and 68000 assembly on the Atari...

I got into the music business for about 15 years, but was able to drop back into computing for a living when the internet became prevalent based on knowledge gained of typical programming constructs and methodologies

I wholeheartedly disagree with chrisb Im afraid :(. Microsoft = vendor lock in, which most large clients will aim to avoid in my experience... I've been working for a consultant for the last few years, and can say that you need to have the right mindset as john mentioned, to enable you to quickly drop into any environment - I've worked on projects with java/JSP/EJB, XML, XSLT, perl, php - all as part of a team for huge clients :)

Rich2k
11-29-2002, 06:51 PM
Originally posted by chrisb
Well, if you goal is to make money, I'd stick to learning program languages that are geared toward Windows, such as VB, .NET or even C.

In my experience, learning perl and php isn't going to make you much money. There are just too many of those free programs out there, and too many people doing it on the web.

That isn't true if you work for a web agency or a company as a web developer as you can make loads of money working with Perl and PHP. It's only if you are working as a contractor that you may wish to stick to VB, .NET or C (actually I would investigate C#... seems pretty cool).

Also many programs which used to be installed on a client machine are gradually being moved over to web based applications. The way forward IMHO but sometimes still requires Active X to get access to the local system or the Outlook object model for instance.

Personally I've worked on projects in Cold Fusion, PHP, Perl, ASP, plain ol VB, XML and XSL. I still prefer PHP out of the lot.

insaneraptor
11-29-2002, 11:13 PM
well this is alot of contradictory info... I dont know who to believe...

I am leaning towards learning some web languages and some windows languages so i can do both things. And also start writing algorythms and getting good in calculus and trying to improve my logic and problem solving skills

anything im missing?

chrisb
11-30-2002, 04:59 AM
Well, I've worked with machine and Assembly; but that was over 20 years ago. The only other language I know is perl as of the last 3-4 years; and I haven't learned it fully.

However, from what I've noticed, basic math is all you need. A little algebra and geometry may help, too. I really don't think statistics courses or a trigonometry course is needed.

Logic? I don't know about that being so important. The most important thing is to be able to comprehend and grasp things, and understand the tutorials which are often poorly written and unthorough.

You also need a thick skin when asking questions to other programmers. And finally, you must enjoy people with no personality. :) I've found most programmers are quite eccentric, self included.

insaneraptor
11-30-2002, 11:04 AM
ok then...

thick skinned people
i guess ill talk to my brother more often then :)

irish
11-30-2002, 08:02 PM
sasha,

I remember the ZX Spectrum. I wrote my first game on it, it came with a booklet the had all the code, you just had to write it in and then prayed it would work. Hell, that was back in 1986 - 1987.

From what I remember it was a small black keyboard looking thing. I wish I had learned more about programming back then, but I decided to go another route into a different industry.

insaneraptor
12-01-2002, 02:00 PM
ok, i think ill take up 2-3 languages first
vb or c++
perl or php

any suggestions?

vito
12-01-2002, 02:40 PM
Very interesting thread. Makes me wish I went into programming in university back in '76. I really admire and respect the amount of knowledge you folks have. I only started getting involved in the Internet a couple of years ago. HTML was totally alien to me, and I read a couple of books on it, and still had trouble with it. Then suddenly one day it all clicked. It all made sense. Now I can get around in HTML with relatively few problems.

I wish I could say the same thing with programming. In the last 6 months, I've been trying (not hard enough, I guess) to pick up a basic understanding of PHP. Just can't grasp the basics. I realize that there are tons of PHP programmers out there already. I'm not really interested in competing with them. But in the various sites that I own, I can see SO MANY applications where I would benefit from knowing PHP. I find PHP to be incredibly powerful and versatile. I have so many new ideas for new sites where PHP would do the trick. I just don't fancy paying programmers to do all the work. I would love to know the language myself.

I consider myself to be a pretty intelligent guy. Always been very good in math and problem solving. But for some reason, I can't seem to get past Chapter 3 of all the PHP books I've purchased. It's like a little stumbling block that prevents me from being able to move forward. Very frustrating.

Does anyone have any suggestions for learning the basics of PHP? Considering that I do not have any previous programming training? I would LOVE to get past this barrier. The downside is that if I do, I'll likely end up spending 60 hours a week just exploring the endless possibilities that PHP has to offer. But, hey, I'm willing to risk it.

I have a couple of books on PHP. Do I just keep re-reading the first few chapters until it sinks into this thick skull, or can you suggest some other online/offline resources? Or do I just look for a local community college that offers a course in PHP?

Vito

cperciva
12-01-2002, 02:47 PM
Originally posted by vito
I have a couple of books on PHP. Do I just keep re-reading the first few chapters until it sinks into this thick skull, or can you suggest some other online/offline resources? Or do I just look for a local community college that offers a course in PHP?

I have a couple of books about the United States of America. Should I just keep re-reading the first few chapters until they sink into my thick skull, or can you suggest some other online/offline resources? Or do I just look for a local community college which offers a course about the USA?

Seriously now, if you want to learn about a foreign country, you go visit for a while. Likewise, if you want to learn a new programming language, you should start using it. All those books will be useful references; but until you actually use the language you're never going to remember it.

vito
12-01-2002, 02:54 PM
I understand your point. I'm just having some difficulty getting past the basics. So I'm asking if perhaps there is a better entry level approach than the one I'm taking. Perhaps the books I have are not quite as "user friendly" for the novice.

Believe me, I am pining to develop some PHP skills. I just want to take the most efficient route. But thanks for your advice... :)

Vito

tapster
12-01-2002, 03:12 PM
Hi Vito,

I'd recommend the wrox 'professional php programming' book to get you going.
Im lucky enough to have been programming in various languages since 1981, and as such find it pretty easy to pick up new ones, but I usually pick up a book for reference, and the first few chapters of that one seem very oriented to the complete beginner.

good luck, let us know how you get on :)

vito
12-01-2002, 03:20 PM
Thanks, tapster. I 'm not sure if this is the book you're referring to:

http://www.amazon.com/exec/obidos/tg/detail/-/1861002963/qid=1038770177/sr=1-5/ref=sr_1_5/104-1430636-5767940?v=glance&s=books

The reviews seem a bit brutal. Is this the book or did I get it wrong?

Vito

tapster
12-01-2002, 03:32 PM
yeah... some bad some good reviews there :)

as I said, Im a senior developer, with real world programming experience of many languages... so perhaps it seems clear to me for that reason

There are undoubtedly many excellent resources online too, but I have found the wrox book to be a useful reference

btw, how did you get on with your download script? :)

vito
12-01-2002, 03:38 PM
Well, I decided to buy a couple more books. I just placed the order. Your recommendation was one of them. Who knows? One of these days I'll actually understand PHP and join the ranks of so many who enjoy exploring the endless possibilities of PHP.

And re the download script, h2oski was kind enough to provide a great little bit of code that did the trick. Thanks for asking. :)

Vito

Rich2k
12-01-2002, 03:42 PM
I'd recommend the Wrox press books as well, the programmer to programmer series are very good.

However PHP.net's manual just has some great user contributed notes that can help you with almost every function.

vito
12-01-2002, 03:44 PM
Originally posted by Rich2k
I'd recommend the Wrox press books as well, the programmer to programmer series are very good.

However PHP.net's manual just has some great user contributed notes that can help you with almost every function.
Funny, I'm just going through the php.net manual as we speak...

Vito

Rich2k
12-01-2002, 07:45 PM
Originally posted by vito

Funny, I'm just going through the php.net manual as we speak...

Vito

I've never actually bothered to sit down and properly read the PHP manual, I simply decide what I want to achieve and then look for the functions that might help do it.

Sometimes I might read about the functions around it, for example the mySQL functions, it can be useful to read about the other functions than you need just in case there is something that you didn't think of.

MGCJerry
12-03-2002, 05:45 AM
I've never touched any programming languages in my life, but I managed to pick up php/MySQL pretty quick. I've actually written some quick php scripts, and I'm doing some extensive PHP-Nuke work.

In my opinion, basic math, and logic are very helpful in this. Once you get a grasp of the language, you'll be able to code in your head (well, I was anyway).

Before I write any code, I quickly think of the code and I have a general idea what it looks like, and does. Heck, I've even written code on notebook paper if I get a quick idea and not near a computer . :eek:

However, I do wish I was a little better in math (algebra) because there are some conversions that kill me and I have to look them up to get the formula and code them. *sigh*.

Just my 2 cents...

RobertB
12-04-2002, 01:47 PM
Problem solving i say is one of the factors.
Myself i write it all in my head, "executing" the program in my head, searching for errors or how to do it.
If your good at problem solving and love it as me (anyone got problems email me) then you will become a fast programmer atleast.

HellRaiser
12-04-2002, 02:04 PM
Everyone pretty much covered everything, but here's my part anyways. I'm a recent bachelor in computer science, here's my perception of this business and how to learn programming:

1- I think that as far as learning, its good to know a little of both communinities, open source and windows. C++ and VB would be my choices for windows. For open source, Java is a must i believe, since you can do just ANYTHING with it. Also, PHP for sure. So those are the technologies I think are good to learn for a student right now.

2- As fas as skills needed: Problem solving is #1 for sure. This is kinda like the scientific method too. Understand the problem and identify it clearly, then elaborate your hypothesis or ideas on how to solve it. Divide and conquer, meaning divide a big problem into smaller things that are easy to resolve. Also top-down method was mentioned. Another key skill is planning I think. Make a plan of how you will code your project. From my experience, every project I started by writing ideas on paper and after that designs (using UML or my own personal way of writing the design) ended up being good projects where I always knew what I was doing, where I was going and what was left to do. Planning is also great to put an approximate time measure on each part of a project, and that is often overlooked too much. Also Object-Oriented stuff always proved better and simpler but also usually more powerful and flexible in all the projects I encountered, so ALWAYS go for that when you have the occasion, it'll prove useful once you get used to it.

3-Maths: For sure they help, but I'm not 100% sure if they are needed for everyone. Calculus can be good, but you wont even need it in most areas of programming IMO, unless for physics and stuff. Linear and vectorial algebra is great for 3D stuff, so learn that extensively if you plan on going in there. Statistics and probability can be good if you want to understand concepts about testing / simulating situations with math laws. Operational research is good for optimizing solutions or proving that its the most optimized one. Algorythms are always a good thing to learn too, but you might end up not using them either, depending on how speed critical / what language you're using (since most of them already have most important algorythms implemented). For myself, I have learned algorythms but quickly forgot them because I'm not a "speed inclined" person, I rather like to focus on simple solutions and leave the hard core code to people who have stronger skills in that field.

4- Data handling: Database and XML... Everyone uses them today, so learn those, big $$$$ are involved there :P

5- For students: I'd say, one thing that is often overlooked and for which I really regret not doing before is start looking at the job market right away when you start your degree. Having dreams is a thing, but when you finish your degree sometimes dreams get a wake up call :) So if you take a look at the job market, you can get a clear idea about what skills are involved, but also what skills are often looked for.

Anyways, I'd say identify which field of computer science you're aiming for, and try and target which skills / languages / platforms you'll be needing for those, and focus on that. If you're going for 3D, you'll most likely need to have strong math / C++ skills, for web other skills will be involved mostly. Assembly would be a must if you're into programming for OS and doing speed critical stuff, cause you learn how the machine works directly. On the other hand, if you're into web dev, I wouldnt even bother with assembly lol. So in the end it all depends on what you're aiming for as a career.

Good luck, hope this helped :)

mccuem
12-04-2002, 02:37 PM
My .02..

You'll do yourself alot of good if you go into programming realizing it's not language centric, rather it's a mentality. Learn logic, learn to walk a mile taking baby steps... If you don't know what that means now, you will soon enough.

Pick a language that you can learn with, but don't just "learn the language". C, Perl, PHP are all nice, VB is good to learn with if you deal in Windows...

Learn to program, once you have that down, syntax of various languages will be easily picked up, and tasks will not be a problem.

:)

insaneraptor
12-06-2002, 02:00 PM
HellRaiser
thanks alot for your input it was really helpful :)

HellRaiser
12-06-2002, 02:14 PM
:) no prob!

Actually, its one of those things that I like to do because I'm currently looking for a job myself, and this helps me to remind myself about university days :P I forget stuff so fast its scary!!

And mccuem, I understand what you mean and yes, I agree that programming is more like a general skill to learn (using logic, O-O programming etc).

But on the other hand, if you end up with a university degree and have spent most of your time focusing on some language that almost never shows up in job offers when you start your degree, chances are there wont be more either when you have finished your degree and are on the job market. So, since languages themselves are not that important but rather more the concepts & programming techniques you use, why not focus your learning while at school on popular languages to make sure you increase your chance of getting a job when you go out?

I can tell you this, up here around my place, I have been looking for a job since July. I spent alot of time learning Python, which is a wonderful language btw, but I aint seen not even 0 job so far while looking for one, so its actually sad that I spent more than a year programming using that language. I still had fun tho, its a very powerful and rewarding one, but had I spent this time on Java instead, I'd already have a job :P

Rich2k
12-06-2002, 03:20 PM
Yeah I'd like to add some more to that.

Server side stuff is work big $$$$ these days

Especially anything to do with Oracle, SQL Server or XML. If you can do those well you've got great potential.

Now where did I leave my Resume ;)

SPaReK
12-09-2002, 11:48 AM
I would recommend taking several math classes. Mainly calculus. You may not ever use the actual calculus, but it teaches you to think. A lot of the Calculus problems aren't so much doing the math, its setting them up. It is this process of setting up the problem that causes you to think logically, which really comes in handy in programming. Also Calculus teaches you how to do Algebra fast and efficiently. A lot of the teaching you go through, isn't to memorize the stuff. You can always look something up in a book, or some place else, but its the process of thinking that is being taught. If you can learn to think for yourself, think logically, and do basic problem solving, then you shouldn't have any problem getting a job in the job market.

mpope
12-09-2002, 02:18 PM
The #1 thing that makes a good programmer is logic/problem solving. As many have said before me... many years have been spent on developing good data structures and design patterns, and it is unlikely that you will need to come up with a new one. (Ok, yes there are some people who come up with crazy new patterns, but these are likely just combinations of old patterns...)

Anyway... being able to problem solve and do so efficiently is key to programming. There is a reason that when you go to interview for a job at MS or any other major programming firm they give you at least one of the dreaded "so you're in a room with 3 windows, 3 light switches, and 3 clocks" questions. They don't look at whether you get the question right so much as how you attack the problem to try to locate a solution. :)

My suggestion for anyone who wants to be a programmer is to get a BS in Computer Science from a reputable university. It's only 4 years (or 2 if you already have a different degree). While you are in school, try to get a part time job at a programming company or at least some computer-related company. If you can't find such a job... maybe give yourself a project to do every quarter (one quarter.. maybe program up a good email ticketing system... some other quarter program up a referral tracking program, etc.)

Anyway... that's just my $.02 :D

soundguy
12-10-2002, 01:17 AM
I started out as a complete computer novice on a TI 994a. (16 bit CPU & 16 bit memory with 256 colors and a 4-voice sound chip...it SMOKED those 8-bit toys everyone else was using. :D)

The best thing about the machine (which I found in a pawn shop for $10) was the manuals. It had a REALLY good step-by-step beginner's book on the line-numbered console basic and for the terminally stupid, there was even an introductory primer to the beginner's book which pretty much assumed that your family had only been walking upright for one or two generations. I was doing sprite animation within a few hours.

I think Basic is a great place to start because there are really no rules and you get the positive reinforcement of creating something that more-or-less works very quickly. It also lets you clearly see what a mess you've made and you quickly start learning to code more efficiently. (this happened a lot faster in the olden days when you only had 16k or maybe 64k of memory - it filled up fast)

After a short while, you also start getting the message that the easiest way to code efficiently is to plan it out ahead of time and create a good structure in the first place. Everything else in programming is just memorizing syntax. :)