Understanding Programming Industry

kuphryn

Senior member
Jan 7, 2001
400
0
0
Hi.

I never anticapate I would consider what I am about to discuss six months ago. I am considering my options *if* I decide to leave college and enter the software industry to an entry level C++ programming position (something I LOVE *C++*).

I am in my third year of college and I doubt I will finish all required course until another two years, which is a year beyond what I originally planned. I am really tired of boring and meaningless classes that are part of the computer science curriculum. In terms of programming, I am at a level that is beyond any of my fellow class. I take a class that was designed for seniors (program solving). I am making considerable progress with MFC and I have complete confidence I will be proficient with MFC within six months (at most).

I would like to know the *significant*/*importance* of a computer science degree in the software industry.

First, I am still in school and can of course stay. I really am tired of the boring and meaningless courses that waste my time and energy. I love programming! Heck, if possible, I want to solve programs using C++ 12 hours a day or until I can no longer stay awake.

If something were to change and I look elsewhere, what are my options? I would like to know from real programmers. How secure are your jobs w/ or w/o degrees?

Thanks,
Kuphryn
 

singh

Golden Member
Jul 5, 2001
1,449
0
0
A CS degree teaches you the "science" behind programming, and lays the foundation for more formal aspects such as program specification and design. Also, the more "advanced" concepts in programming need some theoretical frame-work (ex. compiler construction).

Although I too love programming and hate much of the theory classes I have to deal with, there were some courses that I really enjoyed. For example:

Assembly Programming
Data Structures
Operating Systems
Programming Languages
Graphics Programming
Software Engineering
Automata


In the end, you have to remember that Programming != Computer Science :)
 

singh

Golden Member
Jul 5, 2001
1,449
0
0
Oh, and while we are discussing programming involving C++, be sure to learn to use STL really well (the Standard Template Library). It is worth all the effort and really cuts down on development time (I just started learning myself).
 

kuphryn

Senior member
Jan 7, 2001
400
0
0
First, thanks for your honest thoughts. I really appreciate it in a topic that could affect a person's life, forever.

I basically knew before I posted that the majority would recommend getting the degree. I, too, agree with staying in school and finish the degree.

Now relative to the job market, I think that it is so unfair that employers judge a *person* by some resume and application. How can you know whether one can *get the job done* and *are passionate about the job* when they have not seen the person face to face? I mean in this day and age you would think someone has invented a *better* way to evaluate true talent in all fields and especially programming.

I can honestly say that I have complete confident in my programming/C++ skill. I would go up against anyone at my school and even the professors (the majority are NOT very good). I do lack experience since the first time I programmed anything was at the beginning of the 2001 fall semester. I love C++ so much I was able to learn quick. Practice is the key to success in programming.

My plan now is to stay for now and deal with arrogant professors and the boring and unimportant (to software) subjects. I am trying hard to go through as many classes as I can and still pass them. In short I want to get the degree the sooner the better.

If and when I do look for maybe an internship or a full time job and send in my resume, do past programming projects (programs) help? I did some sample, but original, program I worked out just for fun. I want to know so I can start program some more stuff for later show and tell.

Thanks,
Kuphryn
 

Armitage

Banned
Feb 23, 2001
8,086
0
0
Why would you want to leave college a year early?
University is likely the most fun & free time of your life (most broke also of course :))

Aside from that, whether you think its fair or not, many employers won't touch you without a degree. For one thing, it's a tangible and verifiable example of your ability to set a difficult goal and achieve it. Also shows discipline & independence to some degree.

And frankly ... you should probably learn a little humility. You may be god's gift to computer science ... but probably not. And if you are, you should be going to grad school, or starting your own company. Not dropping out just when things are getting interesting!
 

BuckleDownBen

Banned
Jun 11, 2001
519
0
0
I agree with the above poster that you need to learn some humility. Programming is not about writing hard code. Its about writing simple code that documents itself. You probably think you are a top dog because you can write a routine that is three lines shorter or executes in 5 cpu cycles quicker. Businesses want routines that 10 lines longer and execute 5 times slower, but are written simply enough that anyone can look at it and immediately know what is going on (obviously this doesn't apply everywhere, but 99% of the time speed of execution is not a factor).

Now for some practical advice. Do not drop out of school unless you have a job. If you want to drop out, start applying for jobs and going to interviews. Even if you don't want to drop out, its a good idea to start interviewing as soon as possible. See if you can get an internship, just make sure its doing programming, not help desk or some crap like that. Sometimes the best thing to interview at a company and tell them you'll work for free.

Also, you need to stop programming 12 hours a day and start enjoying your college years, because that is by far the best time in anyone's life.
 

kuphryn

Senior member
Jan 7, 2001
400
0
0
Okay. Thanks!

I agree with the explanations of how employers consider new applications.

I wanted to test the water before getting in it. I think I better stay on shore for the time being until I have enough experience.

I find it interesting that, if I am not mistaken, most of the hard work is just so you will get an interview. Heck, an interview does not mean a job, yet, it is half if not two-third of the way.

---

BuckleDownBen:

You said something that really touched me. You said, "you need to stop programming 12 hours a day and start enjoying your college years, because that is by far the best time in anyone's life."

Why did you say that? Can you elaborate as to why college years are the best? I am doing what I love!

Well, I honestly really, really love programming (C++). I would do it for free if I can work with *real* programmers in the field where I can learn from them. You also gave me a very good idea about working for free. I can definitely handle an internship maybe on weekends for free and more during the summer.

It is not about money. I have *not* once even considered anything about money. Heck, I would work for minimum wage if I get to do what I love *C++ programming* and work with elite programmers so I can gain the most experience. Ultimately, I want to be a consultant. I want to walk into a company and solve their problems.

Kuphryn
 

DaveSimmons

Elite Member
Aug 12, 2001
40,730
670
126
Yet another vote for getting your degree -- I've been part of the hiring process for developers, and can tell you a 4-year CS degree will put you way above candidates with just a certificate or 2-year degree.

It seems unfair, but most small-to-medium companies are looking for people who can start doing real work right away with little or no additional training. They don't have time to try out several people who say they are good at X (C++, MFC, etc.), they look first for people who have already done work with X. Failing that they look for the person with the best education including looking at GPA. Even if you offer to work for free to prove yourself it's not really free to the company because other developers have to spend time getting you up to speed on what the company is doing.
 

kuphryn

Senior member
Jan 7, 2001
400
0
0
You made a very good point.

Talk is cheap. I will definitely stay in school unless I can complete one or more considerable windows programs (ftp server, etc.) by the time I graduate. So in reality, I am basically stuck in school.

As for limited training issue, I will give it my best to walk into a company and have at least the minimum background to catch on with the other programmer. Give it another year.

Kuphryn

 

BuckleDownBen

Banned
Jun 11, 2001
519
0
0
Well, college was the best years of my life, and most people my age(~30) say the same. Provided you aren't A) living with your folks and commuting to school or B) working like a dog to pay for tuition, room, and board, you have all the freedom in the world to do whatever you want. Another huge plus is that you have tons of people your age with the same interests as you with tons of free time to do stuff. I virtually never meet people my age except for a few losers at my gym and a few geeks at work. (I don't go to bars). In college, I had dozens of people who to hang out with. I could always find someone that was interested in the even the most bizarre interests of mine.

 

CodeJockey

Member
May 1, 2001
177
0
0
Kuphryn,

Good to hear that you are leaning towards completing the degree (I didn't, but sincerely wish that I had). Once you leave school, start working, get a car, apartment/house, etc. it is very difficult (almost impossible) to quit and return to school.

My cynical 2 cents worth concerning why a degree matters when hiring a developer...consider this scenario:

A manager is asked by the VP to assemble a team and develop an application for use in the company by year end. Manager is given requirements and a budget that will let him hire 2 junior developers.

Scenario A - Manager hires 2 university drop outs who seem eager and knowledgeable.

Scenario B - Manager hires 2 university graduates with CS degrees who seem eager and knowledgeable.

Time passes, developers write code, end of year approaches....


There are two possible outcomes of the above project, it can succeed, or it can fail. This is equally likely regardless of who the Manager hired.

If the project succeeds, the Manager is fine, the developers are fine, and all is well at the company.

If the project fails, the developers are blamed by the Manager (but they are still retained to work, since they are needed to fix the problems in the code and to get the project back on track). If the Manager followed Scenario A, he is in trouble with the VP for hiring drop-outs who couldn't produce. If the Manager followed Scenario B, he argues that the developers he hired were qualified graduates who just didn't meet expectations.

Regardless of the outcome of the project, if the manager hires graduates, he is less likely to end up in trouble with his boss.
Therefore, a manager will always prefer a graduate to a drop out.

 

MGMorden

Diamond Member
Jul 4, 2000
3,348
0
76
Also, keep in mind that CompSci teaches you how computers and programs actually work. The theory classes are the most important part. You keep mentioning C++ and MFC. You do know those won't be in use forever right? What happens when they "go out of style". You're stuck in a rut where you can't pick up anything new because you simply learnt a programming language, not truly how to program. If you considering all the upper level theory classes and such too boring to sit through then I've a gut feeling that you're not quite as good as you're boasting . . .
 

kuphryn

Senior member
Jan 7, 2001
400
0
0
Very good points. Thanks.

As far about upper theory classes, I have not taken one of them yet so I cannot give my perspective. As far as C++ and MFC going obsolete, there is still ASM and other languages.

Take this into consideration. One, Computer Science is ultimately about mathematics and theory of computer (software and hardware). Okay, those are nice to know. Now here you are with a Computer Science degree but limited design and implementation skill. How can you contribute to a team working a high profile project?

Theories and concepts are much, much easier than the *practicality* of Computer Science. Anyone can walk into classes and learn Computer Science. What the person can contribute to Computer Science is what ultimately makes the person a computer scientist.

I will sit through and learn all the necessary Computer Science theory/concept classes. Ultimately I still feel you need to have *experience of something* to really get the job done. That is if you want to do real-world software design and implementation. Maybe some of these people who are good with theory/concept become professors. They are very good with theory. Try asking them to work under a team of elite programmers working 12-14 hours.

Kuphryn
 

MGMorden

Diamond Member
Jul 4, 2000
3,348
0
76


<< That is if you want to do real-world software design and implementation. Maybe some of these people who are good with theory/concept become professors. They are very good with theory. Try asking them to work under a team of elite programmers working 12-14 hours.

Kuphryn
>>



Don't know where you go but most of the professors I have had (I'd say at least 70%) have all worked in the software industry before they became professors. Heck one of our professors still contracts out (at a rate of roughly $2000 per day) for software design as he's one of the leading experts in the contry, and guess what: he never looks at a scrap of code. He for the most part lays out the entire software design scheme (heavy UML and such) and then lets the "grunt" programmers that work for the company go ahead and code from his design.
 

BuckleDownBen

Banned
Jun 11, 2001
519
0
0
kuphryn-

i think you'll find yourself pretty disillusioned when you get out into the real world.

(the following is a generalization, so i'm prefacing here with a most of the time)

most people in the software business are absolute morons. the guys busting their butts making 35,000 a year do all the actual coding. the "elite" coders you talk about are 40 to 50 year old idiots who drink coffee all day and make life miserable for the 35 K guys with their poor design choices. you won't believe all the sloppy code their is in "high profile" applications.

(end generalization)

seriously, i have been programming for 5 years at 4 different places. not one of them was run professionally, in my opinion. i worked at a bank, a health insurance company, and a health insurance data mining company so its not like the work i did wasn't mission critical. the best thing for you to do is to think up an idea for a program and write it. you will have a hard time finding coworkers with your love for C++. C++ for most people is just a way to put money in the bank.
 

kuphryn

Senior member
Jan 7, 2001
400
0
0
MGMorden:

I am sure there are many people like that. They are experienced programmers. I began programming about eight months ago. There is no comparison. As for my professors, they know the fundamentals. However, few have proven worthy of my deepest respect. Why? Easy, they are not doing anything I cannot do with five-ten years of experience, period.

BuckleDownBen:

Yeah. That sucks. I think a programmer should do both the design and implementations. Laying out some arbitrary design and forcing other programmers to get it to work is downright unconceivable. I respect the players that are in the field and not the sideliners.

Kuphryn
 

Armitage

Banned
Feb 23, 2001
8,086
0
0


<< MGMorden:

I am sure there are many people like that. They are experienced programmers. I began programming about eight months ago. There is no comparison. As for my professors, they know the fundamentals. However, few have proven worthy of my deepest respect. Why? Easy, they are not doing anything I cannot do with five-ten years of experience, period.

BuckleDownBen:

Yeah. That sucks. I think a programmer should do both the design and implementations. Laying out some arbitrary design and forcing other programmers to get it to work is downright unconceivable. I respect the players that are in the field and not the sideliners.

Kuphryn
>>



That's alot of attitude for somebody who's only been programming for 8 months. I think you need to wake up & smell the coffee here if you think you're ready to drop out of college and "work under a team of elite programmers" and "walk into a company and solve their problems".

About your profs ... unless you're at a community college or some outlier campus in a state university, they are probably more bored then you are. For the most part, they teach undergrad classes because they have to, and to identify promising potential grad students. With your 8 months experience, you probably don't even comprehend what some of these guys are doing, so to state that you could do it with a few years experience is nonsense. Go to the department office and request a Curriculum Vitae for some of your profs, and see if you even understand the titles of most of their publications.

About design vs. implementation...
What's the biggest project you've ever worked on? How many 100 KLOCs? What's the biggest team you've ever worked with for a significant time period?
Have you ever read a significant amount of somebody else's code? Here's a hint ... your first job will likely be working on somebody else's code ... and maybe your second and third as well.

When you get into big, long term, non-trivial projects with big teams, architectural & design choices early on can make all the difference in the success or failure of the project. Making those kinds of decisions without years of experience is asking for trouble. As a "grunt" working the implementation, you likely have little idea what the overall concerns are.

 

kuphryn

Senior member
Jan 7, 2001
400
0
0
hahahha.

Maybe I am a little arrogant. Nonetheless, I know what I am capable of and I can *predict* how somethings can be under crucial moments in the real world. So what's the worst thing that can happen? Okay, I maybe I was not able to get the job done. Fine, then I"ll lear from the mistake and move on.

Failure makes perfect. I know that very well. I never said I will *not* fail. Heck, I set myself up to fail a couple of times before I get a feel of the flow.

So ultimately, criticize all you want. I accept all criticisms as long as they are logical and make good sense. Programming is all about the love of job and experience. I need to work on the second part. Give it some time.

As for the issue about college professors in the Computer Science department, well, maybe *some* of them have great experience, but that just means they have spent years on something. If you do something for years after years, it is conceivable that you will be good at it.

Kuphryn
 

Descartes

Lifer
Oct 10, 1999
13,968
2
0


<< most people in the software business are absolute morons. the guys busting their butts making 35,000 a year do all the actual coding. the "elite" coders you talk about are 40 to 50 year old idiots who drink coffee all day and make life miserable for the 35 K guys with their poor design choices. you won't believe all the sloppy code their is in "high profile" applications. >>



I know you prefaced this by saying it was a generalization, but it was a very poor one. The very few programmers I know that are 40-50 are "wash outs", and the "best of the best" are in their 20s, or 30s.



<< arrogant. Nonetheless, I know what I am capable of and I can *predict* how somethings can be under crucial moments in the real world >>



No you can't. That's what experience will teach you. You absolutely cannot predict everything, no matter how good you are. It's how you design a system in a nature that handles these unknowns in a feasible manner that makes you a quality engineer. The ability to design a system that can adapt, is extensible in nature, and cheap to facilitate these "crucial moments" is key.



<< Programming is all about the love of job and experience. I need to work on the second part. Give it some time. >>



If you have the "love", you'll do fine. You can spend a lifetime in college, but you can't learn to enjoy this type of work. The best software engineers I know all love what they do.



<< When you get into big, long term, non-trivial projects with big teams, architectural & design choices early on can make all the difference in the success or failure of the project. Making those kinds of decisions without years of experience is asking for trouble. As a "grunt" working the implementation, you likely have little idea what the overall concerns are. >>



Note, experience is not directly proportional to the quality of one's work. Just because you have n years of experience, does not mean someone w/ n - x (so long as n - x > 0)years of experience isn't capable of making the same decisions. A few years back, I worked with a software consulting firm with software engineers that have their doctorate and 15+ years of experience that produced complete crap. There were so many problems with the system they designed and initially implemented that it ended up costing us literally millions of dollars. We spent almost a year rewriting as much of the core as possible.

It just depends on what you make of your experience.
 

Armitage

Banned
Feb 23, 2001
8,086
0
0


<< Note, experience is not directly proportional to the quality of one's work. Just because you have n years of experience, does not mean someone w/ n - x (so long as n - x > 0)years of experience isn't capable of making the same decisions. A few years back, I worked with a software consulting firm with software engineers that have their doctorate and 15+ years of experience that produced complete crap. There were so many problems with the system they designed and initially implemented that it ended up costing us literally millions of dollars. We spent almost a year rewriting as much of the core as possible.

It just depends on what you make of your experience.
>>



Yea, experience isn't everything. There are certainly old hands who still can't find their a$$ with both hands despite decades in their field. But at the same time, your odds of fnding somebody who can succesfully architect a large project are much greater among the grey-beards then it is looking in the recent college grad (or dropout) population.

And then there is the whole consultant thing. I would never hire a consultant for this type of architect/design work. First of all, it's not a once-and-done deal. It's an evolving process over the life of the project. Second, the consultant has no buy-in. They typically aren't there for the long haul so they don't have to deal with the problems their initial choices might create.
 

kuphryn

Senior member
Jan 7, 2001
400
0
0
Experience or not, I think the desire to be the best will get anyone become elite programmers.

Give a young inexperience and passionate computer programmers the same time as any other typical programmers these day. I bet you the young person will move that much farther.

Kuphryn
 

singh

Golden Member
Jul 5, 2001
1,449
0
0
There are some lessons that only time can teach. Try an experiment: save this thread, and look back at it 4-5 years down the road when you gain some more experience. You'll be surprised at your comments :)

I remember having almost exactly the same feelings about Programming and professors that you have expressed, but time and experience have gradually washed them away...