PDA

View Full Version : Career as Computer Programmer.. Should I be worried?



mishathegoat
November 14th, 2008, 10:12 PM
Hey everyone,

I've always loved computers, web design, and have had lots of experience programming in Visual Basic. I have other basic programming skills with HTML, JAVA, a little bit of C, a little bit of C++, and a little bit of Python.

I have started college majoring in computer programming and I'm sure I'll learn more JAVA and C++..

My question is, Do I even have close to the amount of knowledge in computers or computer programming to succeed as a successful computer programmer? What should I start learning now or what should I do at this point to be ahead of the game. I feel like I'm "behind" everyone else by a lot.

Any advice is appreciated..

Thanks

Misha

CptPicard
November 14th, 2008, 10:14 PM
Educate yourself in general as a human being :) Programming is just a part of it. Specialize in some interesting subfield and make sure your theoretical prowess in computing is strong enough to contribute there. You can't go wrong taking that path.

Don't become a code monkey, that is a sad and boring fate and will not allow you to become a gentleman in your own right...

aszxcv
November 14th, 2008, 10:34 PM
i think being good at math helps a lot. i am reteaching myself various math because i feel the better i know math the more it strengthens my programming logic. which math? discrete math.

doas777
November 14th, 2008, 10:40 PM
There is a lot to know, to be a well rounded computry-person. I usually tell folks to put more into your studies than your curriculum requires.

But thats just me. I'm one of those sad code monkeys that Cpt Picard is talking about. just a hint though, I'm loving every second of it.

stevescripts
November 14th, 2008, 10:44 PM
...
I have started college majoring in computer programming and I'm sure I'll learn more JAVA and C++..


Let us hope that your college exposes you to other tools in addition to
JAVA and C++ ...

Learn as much as you can about data structures and algorithms. Spend some time with higher level languages of some sort. Do some assembly...

Good Luck!

Steve

lykwydchykyn
November 14th, 2008, 10:50 PM
What I've learned from trying to get into programming is that programming is like writing or journalism. You can learn how to write, but you're not much use if you don't have any knowledge of anything else to write about.

In other words, anyone can learn a programming language, but when it comes time to write a program you need to know something about the problem domain you're working with.

mishathegoat
November 14th, 2008, 11:51 PM
Thank you everyone for your quick responses.. All of you have great advice I'm now taking to mind..

drumz
November 15th, 2008, 01:40 AM
As someone that's been doing this for years:

1. Learn languages, but also learn to think about it in abstract terms -> languages evolve, new ones come out that improve on older ones. You don't want to get stuck in one languages. If you can think about HOW to solve a problem in abstract psuedo code, you can then use that psuedo code and write it in various languages.

2. As someone else stated, learn data structures and algorithms. It's important to learn them in what ever languages they use at your school but also think about them in psuedo code terms so you can leverage that knowledge in other languages.

3. Always think about solving a problem for scalability, efficiency, long term support and cost effectiveness. (As someone else mentioned learn some assembly - I haven't written any since college but I learned so much about what happens at the lower levels that it's payed of big time on work projects because I understand how everything works.)Eventually you'll be working for a company and getting paid, which means you have to also think about what it's going to cost to implement something which leads to-

4. If you plan to eventually move up out of the coder trenches into team lead or higher, look at the project from different points of view. A piece of code you write may be really cool to you, but from a project leader was the projected schedule accurate and was it met? From a bean counters perspective is it making something more efficient and saving the company money? (At work a framework we chose is going to pay off for us big time because we'll be able to easily expand/integrate new apps that we would never have thought we'd have to write/support 6 years later - we didn't get lucky, we thought about our choice carefully when we started.)

One thing that helped me immensely as a programmer in two courses I had (assembly ironically enough) was the instructor. Most instructors won't really check your code, so a lot of students would fudge their results to make it look good (I never did) but this instructor was different. If you got it to work, you got a C. If you got it to work and documented your code well you'd get a B. If you got it to work, it was written as efficiently as possible (memory usage, instructions used, algorithm, etc.) AND it was very well document THEN you got the A. I probably learned more in his two classes than in any of the others I took. I complained the whole time, but it was worth the effort :-)

samjh
November 15th, 2008, 02:33 AM
I've always loved computers, web design, and have had lots of experience programming in Visual Basic. I have other basic programming skills with HTML, JAVA, a little bit of C, a little bit of C++, and a little bit of Python.

I have started college majoring in computer programming and I'm sure I'll learn more JAVA and C++..

My question is, Do I even have close to the amount of knowledge in computers or computer programming to succeed as a successful computer programmer? What should I start learning now or what should I do at this point to be ahead of the game. I feel like I'm "behind" everyone else by a lot.

Technically, you probably got enough technical knowledge to BEGIN your career. The "hard" skills are fairly easy to acquire.

The really difficult part is acquiring "soft" skills, like interpersonal communication, teamwork, project and time management (especially time!), and the ability to handle the pressure of having some cranky boss or client breathing down your neck. ;)

Employers seem to complain about a lot about the lack of these "soft" skills among computing-related graduates, some even recommend studying a few business management courses.

drumz
November 15th, 2008, 02:42 AM
SamJH mentioned a couple of really good items. When dealing with a bad/cranky boss it's easy to fall in with everyone else and just complain. Don't. Use what happened as a learning situation to learn what NOT to do and think about what might have been handled differently to resolve the problem. You can learn just as much from a bad manager on what not to do as you can from a really good manager on what to do.

And by all means, if your future employer offers management training classes (or you can take a couple as electives) take them up on it. As SamJH mentioned there's a lot of people who don't have the skills that are put into those positions because they did a great job as a developer but may not make the transition into becoming an effective manager.

Cracauer
November 15th, 2008, 03:05 AM
Hey everyone,

I've always loved computers, web design, and have had lots of experience programming in Visual Basic. I have other basic programming skills with HTML, JAVA, a little bit of C, a little bit of C++, and a little bit of Python.

I have started college majoring in computer programming and I'm sure I'll learn more JAVA and C++..

My question is, Do I even have close to the amount of knowledge in computers or computer programming to succeed as a successful computer programmer? What should I start learning now or what should I do at this point to be ahead of the game. I feel like I'm "behind" everyone else by a lot.


I'm afraid you have it backwards. To get and hold a job as a programmer, nobody cares how many languages or buzzword technologies you know.

What is important that you know one language very well (doesn't matter which one as long as you don't pick Intercal or a Mickeysoft-only language) and that you have shown a history of getting things that you started done. You need the experience of having banged your head against a debugging wall for weeks in a row, overcoming a problem, without getting into hospital or jail.

drubin
November 15th, 2008, 11:40 AM
I'm afraid you have it backwards. To get and hold a job as a programmer, nobody cares how many languages or buzzword technologies you know.

I would disagree. I feel one should most deffinately know one programming language very very well.

But the addition of knowing others as well shows your willingness to not be boxed in by the one language you know. There are many tools for the job and some languages are not suited to every thing. The fact that you are willing to try the others means you wont just always choose your *one* language for programming every situation.

Luggy
November 15th, 2008, 03:57 PM
When it comes to either knowing one language really well or a bunch of languages fairly well, I'd say that the most important thing to know is to know what makes good code and what makes bad code.

When you start work, you may not get to choose which language you get to code in. I went from one job were I became very good at C++ to LabView and Visual Basic that I barely knew at all.

I made this transition easily because I knew what makes good code and what makes bad code. It didn't even matter that I went from Objective Oriented Programming to Data Flow programming.

drubin
November 15th, 2008, 04:05 PM
I made this transition easily because I knew what makes good code and what makes bad code. It didn't even matter that I went from Objective Oriented Programming to Data Flow programming.

There is a HUGE difference between what makes good Objective Oriented Programming code and Data Flow Programming code.

Most of what you know about good programming practises in Data Flow/scripting is not valid in OOP and vise versa.

tbunix
November 15th, 2008, 05:37 PM
The business people control the purse strings. Learn to talk to them. Take some business classes.
Read! - take some literature above and beyond what's required, also history and psychology. You will be working more with people than machines if you ever aspire to rise above the ranks of code monkey. It will be harder for them to pigeon hole and dismiss you as a geek if you know how to converse - and have something to say by bringing different perspectives to the problem.

tinny
November 16th, 2008, 09:32 PM
Hey everyone,

I've always loved computers, web design, and have had lots of experience programming in Visual Basic. I have other basic programming skills with HTML, JAVA, a little bit of C, a little bit of C++, and a little bit of Python.

I have started college majoring in computer programming and I'm sure I'll learn more JAVA and C++..

My question is, Do I even have close to the amount of knowledge in computers or computer programming to succeed as a successful computer programmer? What should I start learning now or what should I do at this point to be ahead of the game. I feel like I'm "behind" everyone else by a lot.

Any advice is appreciated..

Thanks

Misha

The longer I spend in the Software industry the less impressed I become with “technical” ability. Most software development is done in teams and I tell you what, after a few years working in these environments you start to become tried of the same old “best language”, “best framework” and “optimised code” arguments.

I find it a lot more interesting working with someone with fresh ideas and the ability to articulate these ideas than with someone who “knows a lot”.

Academia will always play a big part in software development, but for me I rate fresh ideas and interpersonal skills above book smarts.

So work hard at collage to get those computer science fundamentals under your belt while still having a life outside of the computer ;-)

Maybe you could take some human communication papers...?

Paul Miller
November 16th, 2008, 10:03 PM
Google "fizzbuzz", and I think you'll see you've got enough technical skills already (for example, http://www.codinghorror.com/blog/archives/000781.html ). As far as additional techincal skills, I'd concentrate on stuff you think is cool or fun. When it comes time to look for jobs, keep those things in mind, and maybe you'll get a chance to actually use them in the real world.

drubin
November 17th, 2008, 09:37 PM
Google "fizzbuzz", and I think you'll see you've got enough technical skills already (for example, http://www.codinghorror.com/blog/archives/000781.html ). As far as additional techincal skills, I'd concentrate on stuff you think is cool or fun. When it comes time to look for jobs, keep those things in mind, and maybe you'll get a chance to actually use them in the real world.

I have found you should only try and work in a field you find fun! any thing else and it is just going to be work and not a career!

One of my teachers once told me

If I ever came to work more then 3 times in a row regretting what I am doing with my life I would quite
This is a great quote to live by(or at least try to). If only every one could do what they were passionate about the world would be a better place.

Kilon
November 17th, 2008, 10:05 PM
This is a great quote to live by(or at least try to). If only every one could do what they were passionate about the world would be a better place.

Personally i prefer having fun with my hobbies and work just to make money. Not that someone should not enjoy his work , but I don't think we all can have the luxury to have fun and work at the same time. Compromises is the meaning of life , "be flexible " is my quote.

drubin
November 17th, 2008, 10:12 PM
Personally i prefer having fun with my hobbies and work just to make money. Not that someone should not enjoy his work , but I don't think we all can have the luxury to have fun and work at the same time. Compromises is the meaning of life , "be flexible " is my quote.

Is there any reason why not try and enjoy work?

CptPicard
November 17th, 2008, 11:56 PM
Man, programming is the last thing I can imagine doing just for the money. (Well ok, I might not consider prostituting myself) :)

drubin
November 18th, 2008, 12:07 AM
Man, programming is the last thing I can imagine doing just for the money. (Well ok, I might not consider prostituting myself) :)


My main breadwinner (in a very literal sense) is a betting analysis toolkit that runs through really huge numbers of potential combinations of results and runs expected risk/reward analysis on them. Speed is quite adequate. Also, Java threads are easy... because the problem is easily divisible into separate chunks, development of multicore-leveraging algorithms is much more convenient in Java.


?

slavik
November 18th, 2008, 12:08 AM
No matter what the market is for ANY job, if you are really good at it, there is always a market for you.

drubin
November 18th, 2008, 12:11 AM
No matter what the market is for ANY job, if you are really good at it, there is always a market for you.

This not so amazing movie shows just this. The Cleaner (http://www.imdb.com/title/tt0896798/) Former cop proves him self as a cleaner!

CptPicard
November 18th, 2008, 12:36 AM
?

Nothing contradictory there? :)

Doing stuff just for the money -- that is, coding other people's boring projects -- would suck. This is very much my (and my friend's) project, and money is a nice side-effect ;)

The theoretical/implementation issues are also, fortunately, quite interesting. Keeps up my interest from the professional side of the picture too!

poebae
November 18th, 2008, 02:42 AM
My advice is not to quote HTML as a 'programming language' if you want to be taken seriously.

I'm not bashing on HTML, in fact I do web design myself, but HTML is scorned in many circles as a script kiddie language.

CptPicard
November 18th, 2008, 03:19 AM
My advice is not to quote HTML as a 'programming language' if you want to be taken seriously.


+1... HTML is not a programming language (not Turing complete) so calling it one does not look good on your resume...

Paul Miller
November 18th, 2008, 03:51 AM
+1... HTML is not a programming language (not Turing complete) so calling it one does not look good on your resume...

While you're at it, neither is "Ajax."

namegame
November 18th, 2008, 04:12 AM
Is there any reason why not try and enjoy work?

I agree. Regardless of your job, you should be able to find at least one aspect of it enjoyable. It could be the people you work with or the sense of accomplishment. If your job is absolutely terribly you could find happiness in your lunch break.

loell
November 18th, 2008, 04:41 AM
While you're at it, neither is "Ajax."

better yet lets go down further! http is not a real protocol. :lolflag:

Kilon
November 18th, 2008, 06:33 AM
Is there any reason why not try and enjoy work?


No there is not

pvella
November 18th, 2008, 06:43 AM
What you are learning is great. The only problem I guess is that everyone coming out of Uni pretty much learns the same stuff. What you probably could benefit from is to differentiate yourself a bit by learning something a bit more niche that most companies seem to use, and for which not as many people seem to have the skills, especially coming out of Uni. I am talking about CISCO, Oracle, Novell, Netapp, Microsoft etc... These are the products that large businesses buy and they are also the biggest employers. Oracle let you download all of their products for free and have lots of training material online. I am pretty sure that Microsoft is starting to head in the same direction.

The other area that companies will hire is business or business analysis skills. Being good at database design, architecture or business processes will take you a long way. If you cannot immediately get a job, do some business science subjects and get a post grad or something. Having Business and Technology skills would make you a very valuable asset in any organisation.

wrtpeeps
November 18th, 2008, 06:40 PM
Hey everyone,

I've always loved computers, web design, and have had lots of experience programming in Visual Basic. I have other basic programming skills with HTML, JAVA, a little bit of C, a little bit of C++, and a little bit of Python.

I have started college majoring in computer programming and I'm sure I'll learn more JAVA and C++..

My question is, Do I even have close to the amount of knowledge in computers or computer programming to succeed as a successful computer programmer? What should I start learning now or what should I do at this point to be ahead of the game. I feel like I'm "behind" everyone else by a lot.

Any advice is appreciated..

Thanks

Misha

FAR more important you learn how to interact with people, work in teams etc, than learning different languages.

Cannot stress that enough.

wrtpeeps
November 18th, 2008, 06:42 PM
My advice is not to quote HTML as a 'programming language' if you want to be taken seriously.

I'm not bashing on HTML, in fact I do web design myself, but HTML is scorned in many circles as a script kiddie language.

Don't put it on your CV. And if you bring it up at interview, make sure you talk about XHTML, and tell them how you think HTML is rubbish. :lolflag:

drubin
November 18th, 2008, 08:19 PM
Don't put it on your CV.

I disagree I say put every thing on your CV it is how your word it/structure that is important.



And if you bring it up at interview, make sure you talk about XHTML, and tell them how you think HTML is rubbish. :lolflag:
This I do agree with. :)

SNYP40A1
November 18th, 2008, 09:43 PM
If I had to do my life over again, I probably would have majored in CS rather than EE. EE is interesting, I enjoyed it, but life's too short. If you like it, definitely do it. CS is more than just programming. Programming is a small part of CS. In fact, instead of learning new programming languages, first learn data structures and algorithms. Most programming languages fall into three categories, systems languages / object oriented programming, functional languages, and scripting languages...with some blending. So if you learn the major concepts in each area, that's more important than knowing many languages in great detail. I have a hard time learning a computer language by buying a book on it, sitting down and then reading the book like a novel. CS is much more than just programming, but if you like programming more than other things (electrical engineering, building bridges, making cars, studying the financial markets, fixing people, litigation), then definitely do CS.

slavik
November 18th, 2008, 10:26 PM
here's some tips:

Usually, the stuff you know better should be towards the beginning of the list. With that said, if you are applying for Linux admin position, do not list Windows before Linux.

If you have done webdev, that would imply HTML knowledge. If you did sysadmin work, you either have Perl/BASH/KSH/Python on your resume or you got no chance at the job.

skullmunky
November 23rd, 2008, 04:51 AM
I can't really count myself a professional programmer in a real serious way, but ...

definitely +1 on interpersonal skills. lots of people are good coders, but we all prefer to work with the ones who aren't utterly obnoxious. of course there's an elite class of wizards who can afford to be as obnoxious as they want. But for the rest of us, it's extremely important to be able to take criticism, from our boss, clients, fellow coders, etc. It's also important to be able to give criticism well; when you work with other people you'll frequently get appalled at how they're doing it all wrong, but be nice about it.

I'm interested in this question about what specific skills to get. I'm one of those with what I guess you'd call an 'eclectic' set of experience and knowledge. In almost every job interview and client pitch I've done, I've said "sure, I can do that!" to things and then gone and figured them out afterwards. That'll probably come back and get me one of these days ... guess I just like living on the edge ...

However I worry sometimes about the kind of deeply specialized job postings I see out there, and whether the trend is more towards finding people who can really plug into a pipeline immediately.

slavik
November 23rd, 2008, 05:02 AM
I can't really count myself a professional programmer in a real serious way, but ...

definitely +1 on interpersonal skills. lots of people are good coders, but we all prefer to work with the ones who aren't utterly obnoxious. of course there's an elite class of wizards who can afford to be as obnoxious as they want. But for the rest of us, it's extremely important to be able to take criticism, from our boss, clients, fellow coders, etc. It's also important to be able to give criticism well; when you work with other people you'll frequently get appalled at how they're doing it all wrong, but be nice about it.

I'm interested in this question about what specific skills to get. I'm one of those with what I guess you'd call an 'eclectic' set of experience and knowledge. In almost every job interview and client pitch I've done, I've said "sure, I can do that!" to things and then gone and figured them out afterwards. That'll probably come back and get me one of these days ... guess I just like living on the edge ...

However I worry sometimes about the kind of deeply specialized job postings I see out there, and whether the trend is more towards finding people who can really plug into a pipeline immediately.
I don't have a link, but read Mark Shuttleworth's blog, he wrote ones how Debian is a plateu of things (equal support for all kinds of stuff), whereas Ubuntu built peaks and valleys on top of that. You should aim to become a plateu. It is much easier to take someone who knows Linux and teach them about AIX than someone who only knows Windows.

Basically, when asked if you have ever worked with technology A, you want to be able to say that you are familiar with technology B and could learn technology A.

I would say that it is better to know a bunch of languages somewhat decently (know as in not just using them, but actually writing good/clean/efficient code in them) than it is to be a hardcore expert in one. (unless that is what the job calls for).

drubin
November 23rd, 2008, 11:14 AM
definitely +1 on interpersonal skills. lots of people are good coders, but we all prefer to work with the ones who aren't utterly obnoxious. of course there's an elite class of wizards who can afford to be as obnoxious as they want. But for the rest of us, it's extremely important to be able to take criticism, from our boss, clients, fellow coders, etc. It's also important to be able to give criticism well; when you work with other people you'll frequently get appalled at how they're doing it all wrong, but be nice about it.

It is never ok to be obnoxious no matter how good a coder you are. If you are obnoxious or arrogant about how much you know you will fall far out of the current technologies very very fast.

The idea is to always know you have tons to learn and then carry on learing with the times.

There is NO way on earth any one human being knows every thing there is to know about one language, programming in general


Basically, when asked if you have ever worked with technology A, you want to be able to say that you are familiar with technology B and could learn technology A.

I would say that it is better to know a bunch of languages somewhat decently (know as in not just using them, but actually writing good/clean/efficient code in them) than it is to be a hardcore expert in one. (unless that is what the job calls for).

+1 honesty is always a good trait to have. People always can see if you are lieing. But know that not every one can have worked with every thing before.

In general it is not hard to pick up new technologies when you have worked with similar ones before. :)