11-08-2004, 11:31 AM | #1 (permalink) |
Too hot in the hot tub!
|
Real world programming
Hi all,
I am currently a part time student. I'm going back to school to get my CS degree (already have one in Art. Boy, was that useful). Anyway, I am in the top level C++ class right now and it got me wondering, what level programming knowledge does the general coder/programmer need in the workplace?
__________________
But I don't want ANY Spam! |
11-08-2004, 11:58 AM | #2 (permalink) |
Tilted
Location: reno,nv
|
It depends on what you do. I hold firm to the belief that you should program in the highest level language that will do what you need done. For example, don't use assembly if you simply need to input 2 numbers and average them.
Also, an important thing is that good programers aren't good because they know a language well, they are good because they know how to program well (i.e. they understand boolean logic, loops, how to use constants, how to comment, etc.) If you are a good programer, then you only need to learn the syntax of a particular language to program in it well. HTH kevin |
11-08-2004, 03:32 PM | #3 (permalink) |
Tilted
|
While I would agree with kebo, I would also say that since you are using C++ a good background in OO design would do you good. Just because you know a language, syntax, keywords, etc, that doesn't mean you can design large programs well. I would suspect no matter where you end up, if you program, you are also going to have to design as well. In fact if you can design something well, then you'll save a lot of time in the long run debugging / modifying code.
|
11-08-2004, 04:17 PM | #4 (permalink) |
Banned from being Banned
Location: Donkey
|
Personally, I don't have a degree and I'm a self-taught programmer of 8 years, and I can't even begin to tell you the amounts of people fresh outta college with their CS degree that I've had to train - the "programming" classes they took were just syntax cram sessions where they created absolutely nothing of use - just things to calculate math equations and whatnot. While it gives you an example of how to use the language, things like that hold no place in real world jobs.
It's not that they didn't know anything about programming - they did, but, like I said, it was mainly all syntax and very basic design (basic OO, DB structures, etc). What was lacking was the general understanding of how to apply it to a practical use. It's VERY hard to generalize in a single post exactly what you need to know, but the most common languages and platforms that companies use are frameworks like Java and .net, scripting like PHP, ASP, Perl, and desktop applications using Visual Basic or C# in .net along with a database of sorts (SQL Server, MySQL, Oracle, etc). There's many things from desktop application design, to web applications, to backend applications that handle data processing, so on, so forth. There are your more "complex" jobs out there that are done in c/c++, but usually you'll need a good few years of real experience before you'll even remotely touch those jobs. There's other aspects like teams where the coding is split up into different areas - for example, one team does user interface, the other does back end modules, or one team designes the HTML/ASP while another does the database structure, etc - that you'll learn how to work with in time. A lot of places use databases - so knowing how to properly create the right data structure is yet another skill you'll gain over time. You can get the basics (like indexes, etc) from school, but when you put everything together to get a task done is where the real world experince comes into play. For example, maintaining a database with many millions of records while at the same time creating queries that return results in the least amount of time because of the proper tinkering of indexes, foreign keys, data denomralization, etc.. There's things like general troubleshooting and debugging that you'll pick up over time. But in all, you shouldn't have trouble finding place to pick ya up and train you a bit. Once you spend a week or two understanding what that company does, you'll get the hang of things. After a year or so (depending on how things go), start looking elsewhere to expand your experience. Maybe go into e-commerce application design, or go work for another company that does something almost completely different of what the company you work for does. Also, spread out your knowledge in languages until you find one that suits you best. Personally, I find c/c++ entirely way too tedious to do anything worthwhile in. Very difficult to maintain, so considering the company I work for now mainly uses Windows server platforms, I choose asp.net (c#). I also do desktop application design at the same company, and while many people knock it, VB gets the job done (although I do want to rewrite our apps in C# using .net). If you work for a company that uses Unix, you'll probably be comfortable working with something like perl or java. Keep in mind there's more than one solution for a job.
__________________
I love lamp. Last edited by Stompy; 11-08-2004 at 04:20 PM.. |
11-08-2004, 11:15 PM | #5 (permalink) |
Crazy
Location: here and there
|
In general computer science is not about programming. The primary goal of an accredited computer science undergraduate program is to prepare you for graduate school. If you become a good programmer along the way, most likely you will have learned that on your own.
But what you learn in computer science will help you understand how computers work. and this will aid you in working with any computer language. Once you can understand the concepts, learning the syntax of how to implement them in different languages is just practice. I am a senior in computer science, have been working as a programmer for an ecommerce company for a couple years now. I cant even begin to tell you the messes i have had to fix that self taught programmers who didnt have a clue about time complexity or resource utilization had created.
__________________
# chmod 111 /bin/Laden |
11-09-2004, 08:31 AM | #6 (permalink) |
Banned from being Banned
Location: Donkey
|
Yeah, unfortunately there are a lot of self taught programmers who don't care to learn beyond what they're used to and have no concept of the items you mentioned
But I guess that's what separates great programmers from average "just to get by" programmers
__________________
I love lamp. |
11-11-2004, 10:24 PM | #7 (permalink) |
Upright
|
Every fresh out of school developer i've ever interviewed really didn't know that much at all (as it applied to the job I was interviewing them for), they are well grounded in the fundamentals, but are always woefully unprepared for the realities of the job.
|
11-12-2004, 08:48 PM | #8 (permalink) |
"Afternoon everybody." "NORM!"
Location: Poland, Ohio // Clarion University of PA.
|
I'm starting to think the reason why most programmers out of college don't know much because most classes don't really seem to teach anything. You learn syntax, and some very fundemental concepts, but you don't really ever go in depth into any particular language. Like with Assembly, we've barely even gotten into using procedures/passing parameters, and the class ends in 4 weeks. Our Data Structures class, you learn that they exist, and we write functions to push and take items from stacks, but we never learn how to actually PUT objects on the stack, take them OFF, and USE the items.
I mean, it seems like they try to teach us some concepts, but I have no real idea of how pointers work in any more of an advanced sense then that they point to a memory location. It just seems like they try to cram in as many languages as possible in your four years and wish you the best without teaching concepts, relationships, and similiarities between the languages.
__________________
"Marino could do it." |
11-12-2004, 11:25 PM | #9 (permalink) |
Crazy
Location: here and there
|
Computer science is such a broad field that it would be impossible for a college to teach you every thing about it in 4 years. The idea is to teach you the theory or the science of computers (hence the name) its not a computer programming degree. The goal of most computer science undergraduate programs is to prepare you for graduate school and/or research. Not to prepare you for the job market. I'm not saying this is how it should be, just the way it is.
Most accredited computer science programs CANNOT teach you much that is too practical. The accredidation boards (ABET in particular) see to it that a class cannot be too practically oriented. My school was forced to discontinue a good systems administration class by ABET, mainly because it did not contain enough theory to qualify for upper level credits. The idea is to teach you theory. Programming is simply a means to an end. While in a data structures class you don't delve too deeply into them, you may end up coding a linked list. Hell, in my data structures class we had to do it in Java. You will likely never code your own linked list. Especially not in Java. But i understand whats going on every time i include java.util.LinkedList. Assembly is not taught to teach you assembly. It is taught to teach you how registers work and how the computer executes programs on a very low level. If you ever find yourself needing assembly in your job, run away. run away fast and run away screaming (kidding). But if you see it or need it you will understand the basic syntax and will probably have the ability to pick it up if you need it. The only way to become an expert in a programming language is to use it every day. I must say though that the main thing that has frustrated me about my school is in the first two years there I got very good at Java. I also had an internship for a summer working for a company doing J2EE programming which certainly helped. For the last couple years, none of my classes would even allow us to use Java. If you want to get out of school and know how to program, get an internship or a job while in school. Many companies will hire you for part time work while in school. In my current job, i dont make nearly what i am worth to the company. But I get the flexibility to come and go when i want, I am learning quite a bit about web programming, and I am building my resume. I am optimistic for my career opportunities when i finish school (next month!!) since i have been offered my boss' job at the end of each of my three summer internships (all at different companies). If you want a good solid understanding of how computers work get a computer science degree. If you want to learn to program, go to tech school. If you want both, get a computer science degree and learn how to program on your own or through an internship. And if you learn nothing while you are in school this is likely your own damn fault.
__________________
# chmod 111 /bin/Laden |
11-13-2004, 05:36 AM | #10 (permalink) |
Insane
|
Computer Science trains academics (at least it does at my uni) to do theoretical work (none of our lecturers are really great with computers or programming it seems!).
Programming is an art rather than a science as far as I am concerned, yes you have to learn the words however its the music that makes the difference between a good coder and a bad coder. Knowing what a language contains (syntax etc...) is useful but nothing that a reference guide cannot help you with, however if you can fundamentally understand programming and the strucutres that underly all programming then you are a step ahead of most graduates I have met. Programming is about making something happen on a system which is dumb (how often have I written something which does what I tell it and not what I want?) and making that system work properly. Learning a language is simple but the fundamentals are what you need to get. As for getting a job internships or just applying to random companies for scholarships etc is a good system, I have a scholarship through my uni course and its great, over the summers between terms I get to work on real software projects and live in a real environment... nothing like having to come in at 7 in the morning to start coding rather than coding at 3am and having breaks to play game cube... Learning about the environment and the coding standards at work was one of the major things that I learned, picking up c and c++ was easy and took about a week however learning to apply it and comment it correctly was the major thing. Basically go out and see what you can get, part time coding is good and gives you experience, too many coders I have met have never left a university environment, some of them when they left uni just moved upstairs and set up a business on uni property... dunno if that counts as leaving really! |
11-17-2004, 08:34 AM | #11 (permalink) |
Addict
|
If you want to do REALLY well, I'd recommend taking CS as a minor, with your major being a Business degree.
Anyone that can think in a logical manner to generate an efficient algorith to solve a problem can be trained to use the correct syntax to program that algorithm. I wish there were more business oriented people with technical backgrounds to take up management roles. Too often I find myself at dead ends with people who were promoted to management roles due to them being the senior programmer/techie or pure management types that can in no way whatsoever relate to your role and tasks. The former focusses only on the gears and the latter on the numbers. If you are someone who after gaining their degree, can step into a role that provides on the job training, then once you have mastered a language and technology or two, you can move into efficiently managing others to perform their tasks and meld the technical side of a company with the 'business' side of the company. People who can do that are like gold dust. And they are paid well. My 2bits, don't focus on getting the training in college to do one job well, get the training to take your chosen job to another level. Once you do this you can then live the life you'd like to. |
11-17-2004, 09:38 PM | #12 (permalink) |
Junkie
Location: Florida
|
WillyPete nailed it. My boss is one of the guys who used to be a programmer and got promoted to management because he happened to have the most seniority. He always complains that he never gets to do any cool projects anymore because how he's constantly going to meetings and delegating tasks.
One thing that's always fun in the real world is getting along with the sales/marketing people. If you've never had the pleasure before, let me explain how it goes down. Let's say you are to develop a shopping cart so your customers can place online orders. You slave in front of a computer for months, developing the best, fastest, most efficient, secure, feature-rich shopping cart in the history of the universe. You show it to a marketing guy, explaining how you overcame every obstacle and invented never-before-used techniques to made this work of genius on par with the theory of relativity. I can guarantee you his response will be "Hm. The blue you're using is about 2 shades off from the company logo. And can you make all the fonts a point bigger? Thanks, let me know when you have something decent enough for our customers to see." |
11-17-2004, 10:56 PM | #13 (permalink) | |
Crazy
Location: here and there
|
Quote:
__________________
# chmod 111 /bin/Laden |
|
11-22-2004, 10:01 PM | #14 (permalink) |
Upright
|
I was originally a CS Major my first year of college. The university pushed alot of bullshit classes like Calc 4, Math Logic, which turned me off from that and getting my degree in MIS. I self taught myself ASP and started a freelance web development company my junior year of college. I've taken alot of computer classes and programming classes and have found that just trying to get them all figured out is imporssible.
Know what kind of career you want to get into. Do you want to be building software that is packaged and installed individually on computers? Do you want to program database driven websites? Maybe you want to just build computers or get into networking. In any of these cases, just try to focus on one area. Otherwise you will kill yourself. With ASP I find alot of companies in my area use it and so I have been an easily marketable item. Just don't go backwards. Learning legacy language will kill you in the long run. Fewer companies are using legacy languages and eventually, there will be conversion software to take care of that problem. |
11-22-2004, 10:37 PM | #15 (permalink) |
Psycho
Location: sc
|
computer engineer major. i learned the basics of java and had to dig pretty deep into C (still am). i'm an intern for the department of defence and all i do is build webpages and java servlets. go figure. i suppose i could switch departments to do something more like what i'm actually studying to do, but i'm good with web design. once you graduate with whatever major you are, the odds of you actually actively using what you learned in college is reasonably slim. odds are you'll have to learn whatever on the job.
|
11-28-2004, 07:44 AM | #16 (permalink) |
Tilted
Location: Maryland
|
A degree is a good starting point for the real world. The reality of school is you have written a couple of three to five thousand line pieces of code. In the real world you build and maintain hundreds of thousands of lines of code, if not millions. The reality of your first job is that it is an apprenticship.
|
Tags |
programming, real, world |
|
|