Stack OverflowWhat is the most important thing you weren't taught in school?
[+140] [129] Alexandre Brisebois
[2008-11-03 12:57:13]
[ education school real-world workplace ]

What is the most important thing you weren't taught in school?

What topics are missing from the CS/IS education?

Posted so far


Missing knowledge:

This question has been preserved for historical reasons, but it is considered off-topic, so don't use it as an excuse to post something similar. More info here:

(15) CIS and CS teachers take notice! - Will
I believe writing secure code and good regular expression comprehension should be left to the coder himself. You can't expect school to teach you every single thing, sometimes they simply show you the way, and its up to you to look into it. - lyrae
(12) How about teaching people that a degree isn't everything? - Matthew Whited
About treating people with respect and kindness: It's even worthwile if you know you will never ever meet someone again. It's a question of civilized behaviour and culture. - EricSchaefer
I think the question should be "What is the most important thing that they don't teach in school". Otherwise, you could say e.g "Java" or "C++ because it wasn't invented when I went to school, or practically any area of computer sciece because you failed to take the course in that area, etc. - Larry Watanabe
(3) Instead of "How important is backup", I think instead "How much you will hate yourself when you didn't backup" is more accurate and to the point. - Sneakyness
Just as a matter of curiosity, why CS/IS? Why not ask what's missing from the Physics/Civil Engineering curriculum or English Lit/Advertising curriculum? There isn't a whole lot of overlap between Computer Science and Information Systems, assuming you're using the phrases anywhere near properly. - David Thornley
(4) Learning how to learn. A subject not taught in school, but critically important for doing well in college, and to some degree, in "the real world." - Tangurena
@David Thornley, the programs for CS and IS were very different in the schools I attended. In the industry they are often not well understood. - Alexandre Brisebois
With "The importantance of backup" comes "The importance of encryption". Encryption, just like backup, is something everyone knows they should do, but doesn't do because of the overhead and the trouble... and then regrets after their laptop got stolen... and the sensitive information on it. - Konerak
(2) @Carl how can this be rep trolling? It's a community wiki... - Dave DeLong
[+171] [2008-11-03 13:00:18] Bill the Lizard

We weren't taught about source control [1]. Luckily, I had a good mentor who taught me before I finished school and embarrassed myself.


Source control was week 2 of SE361, the first Software Engineering course, at my university. It's a required course for all CS and SE (and I think CE) majors...I feel kind of sorry for you. - Thomas Owens
(3) We weren't taught it, but we were forced to use it at mine. How do you do group projects without source control? - tloach
We were made peripherally aware that it existed. We didn't use it in any project in any course that I took in school. - Bill the Lizard
(7) I'm still pissed off about it. Not that it wasn't easy to learn; its just one of those very important things that shouldn't be left out. I'm of the opinion that ALL CS AND CIS CODE WORK (assignments etc) SHOULD BE DEVELOPED USING AND TURNED IN VIA SOURCE CONTROL. Any other way is foolish. - Will
@tloach: There was a university server that we could use, and most of us just shared a directory for group projects. It sucked pretty hard. - Bill the Lizard
@Will: I agree. It would have taken an hour to teach a roomful of new students. We then could have used it for the duration of the program. - Bill the Lizard
(6) Actually, that's a good way to detect cheating. If the student has to do their assignments using source control, you can look at the list of changes, and stop people from just copying assignments of others. You could still pay someone to do your work, but it's a little harder to game the system. - Kibbee
@Kibbee: Yeah, you'd either have to trust them with your svn login, or have them submit multiple revisions to you, so you can check them in. At that point cheating becomes harder than doing your own work. :) - Bill the Lizard
(1) We were taught to use source control but they told us to Use RCS... - Omar Kooheji
We got together a couple of students, learned subversion, taught other students, demoed it to the teaches, got a server from IT, begged management to accept it.... but NOTHING ever happened. It was left completely unused when we graduated. - Christian Vest Hansen
(33) Source control? You had SOURCE CONTROL? We had rubber bands for the card deck and an pencil to number them with, and we were happy to have them! Geez... - Ken Gentle
I didn't have any classes where they taught source control either. Although I did have professors who told us to "use version control" for our group projects. Frankly, its not something insanely hard to figure out on your own, if you are aware of it. - TM.
(2) @Taylor: Java isn't insanely hard to figure out either, but a lot of schools are teaching it. Version control should be taught and used at universities, IMHO. - Bill the Lizard
Sadly they don't teach this at my school. The worst part, most people you have to team up with absolutely refuse to use it, or do not want to learn. - Flame
If I hear another story about how somebody left their stack of punch cards on top of one of those pop-top printers and had to spend a whole evening ordering their cards when the top popped open I WILL KILL SOMEBODY. - Will
(2) You had punch cards? I had to toggle the machine code into the console with those little switches, every time my program ran. - Michael Petrotta
Thanks for the link! - Petey B
After discovering my ignorance (well, one of the depths of it, there are many) I went back and told two teachers they should integrate Scource Control into some project work, and spend a little time explaining it. - peacedog
One of the rquired cs classes at my college required us to use source control. Some of my non-required classes came close to requiring it. - Brian
(1) Toggles? You were lucky. I remember my first introduction to computers came at a typesetting job where my manager (he was also my GO instructor, he got me the job as a typesetter) had to etch a circuit board with acid in order to be able to program the machine in binary. He was a Berkely EE engineer, he was pretty good -- and he told me I would be good at computers, although I had never touched one, and that's why I eventually switched from English to comp sci. (I would have switched from English anyways, but I remembered his words and decided on comp sci) - Larry Watanabe
@Ken Gentle: YOU had RUBBER BANDS? :) - David
@Thomas - Sounds like you attended RIT. Ah...I remember learning about source control. SE361 is also where I learned about Eclipse for the first time (at that point, I had done everything in VIM). - JasCav
I think using source control at school would help cheating. You could always look-up how other people have done it and try to copy it. Plus most people dont commit the code everytime they save the file. - IAdapter
@Ken: better than numbering is running a thick diagonal line up the side - it's easier to see which card is out of order/flipped around. - Wayne Werner
Submitting assignments via source control would be infinitely better than using the crappy Blackboard system. Or email. Or anything else. I'm about 100% certain when we do our Software Engineering course that we won't be using any VCS, though I'll be incredibly happy to be proven wrong! - Wayne Werner
@Wayne: Where I got my CS degree we either used email or the Linux server to submit assignments. They later started using Web-CAT, which is pretty cool, but still not VCS. - Bill the Lizard
[+140] [2008-11-03 13:02:32] Adam Liss

Often, good enough is better than perfect.

(3) I prefer the step above "good enough" but a few steps below "perfect" myself, but yes, you do need to know when to stop "perfecting" component X. - Thomas Owens
(3) "too often, 'perfect' gets in the way of 'good enough'" - warren
(1) I heard it as "the perfect is the enemy of the good." Close enough! - Walter Mitty
(2) "If a thing is worth doing it is worth doing badly" as my old man used to say! - Loofer
If I were you, I'd edit this to add a link to the Rise of Worse is Better essay. - T.E.D.
(1) I hate to admit that this is true, I like perfect better :( - the_drow
(1) Now if only "not nearly good enough" wasn't good enough for so many people. - BlueRaja - Danny Pflughoeft
[+105] [2008-11-03 13:19:16] Ken Gentle

It is ok to be wrong, it is ok to make a mistake, it is ok to say "I don't know"

(5) and its ok to not meet deadlines :) - Vijay Dev
(44) I love deadlines. I like the whooshing sound they make as they fly by. - Douglas Adams - Rorschach
(11) But it is not OK to make the same mistake over and over again. - z-boss
I find that generally these things are only OK when you actually own up to them/admit them. If you make a mistake but refuse to admit it then it's not OK. If you're wrong but don't learn from it it's not OK. - Herms
"As long as you actually learn from the experience." -- Me - Adrien
(2) That is actually one of my confidence tests. If someone can admit when they don't know then I don't have to worry as much about them guessing at the "right" answer. - Oorang
[+71] [2008-11-03 13:43:05] Onorio Catenacci

Critical thinking. [1]

I wish more kids were taught how to analyze a problem, how to avoid fallacious thinking etc. etc. I can't tell you how many times I've got caught in the error of "all or nothing" thinking--for example, if we can't fix all the problems with some software we shouldn't bother to fix any of them. I'm sure there is a name for that logical fallacy--I'm sure some bright commenter will tell me what it is. :-) My point is that learning to think critically is a skill that serves any developer well and it isn't taught in any schools that I know of.


(3) This might be what you mean (via Google): BIFURCATION: (either-or, black or white, all or nothing fallacy) assumes that two categories are mutually exclusive and exhaustive, that is, something is either a member of one or the other, but not both or some third category. - Agent Conundrum
(1) Hmm... I'm pretty sure the bulk of my later coursework was full of critical thinking exercises. This is definitely a very important skill, but how many didn't practice it at school? - TM.
@AgentConundrum--thank you, yes, I think that's the correct name for this fallacy. - Onorio Catenacci
@Taylor Marshall, I guess your experience of school was different than mine because hardly any of what I did in school required what I'd call critical thinking. It was only when I started working that I learned the skills needs to think critically. - Onorio Catenacci
I agree. The fallacy of the "false dichotomy" ( is quite common. - kurious
(2) Similar concept is the "Sucker's Choice": I can either keep quiet about an issue that's really a problem or tell the truth and lose my best friend. We tend not to think, "How can I resolve the problem AND keep my friend? - kajaco
(1) I think this was taught... just not learned - Matthew Whited
Philosophy for living was probably the hardest class I've had to take so far, but also the most rewarding A I recieved. I don't think you should be allowed to go into Junior High without passing a good critical thinking class. - Wayne Werner
[+65] [2008-11-03 13:24:55] Will

TDD/Unit testing.

My school started teaching this in the "new curriculum" when I was still finishing up in the "old curriculum". Luckily, I was tutoring new students at that time and got a chance to learn it with them. - Bill the Lizard
We were taught this if you took the optional SE courses. Really I don't think it should be mandatory for a CS degree, since CS != SE. - tloach
I was taught this in school, we had automated unit tests that would grade our labs for us, it was pretty sweet - Allen
My degree was called "Computer Science and Software Engineering" ;-) - helloworlder
I don't think I've ever heard this term in school. Luckily I'm a Pythonista, so the concept of testing is pretty popular. I haven't done much of it myself... but I know it exists ;) - Wayne Werner
[+55] [2008-11-03 13:48:44] Rihan Meij

How to teach yourself.

Often in the real world you will not have the tools/skills/expereince to resolve a problem, that is one thing that the human brain can do that machine's cant. It can figure it out.

(14) Surely the whole point of going to university is learnign to teach yourself. Thats one of the main things I learned... - Omar Kooheji
(2) @Omar: I agree, my university had a lot of "go figure it out on your own" type of things, in addition to the straightforward instruction. - TM.
(5) School education seemed to encourage doing everything exactly like the teacher said, and I saw little benefit in just producing carbon copies. I was not fortunate enough to attend university, and guess you are right about university, just wish they did that since I was 5 - Rihan Meij
@Rihan The focus of my education did have some elements of "do what I say" as they taught fundamentals, but the vast majority was about self reliance and learning. - James Schek
Teaching students to "how to teach themselves" is not the same as giving them an assignment without any instruction and saying go. The latter is just laziness. - helloworlder
The education system in the United States is similar to the Prison system, but they're a lot less honest about it. - Wayne Werner
Continuing Education: How To Teach Yourself Almost Anything - gives a 10-step process to achieving exactly this :) - warren
[+52] [2008-11-03 18:06:03] Jim Buck

Working with large codebases and pre-existing code.

Yeah - they did not allow copying. That is what I usually do at work on a daily basis... - Shaihi
[+48] [2008-11-03 13:23:14] Bob Probst

How to communicate effectively.

Getting people to understand you and taking the effort to understand others is critical in all endeavors.

I consider communication to be THE most important thing in business (and life in general). - Techboy
Sometimes, I think it's a subset of communication--selling your ideas. Too often, I find that good salesmen get there way over a good communicator... It's not alwasy about getting people to understand your idea, but rather getting folks to react with their emotions instead of reason. - James Schek
Communication comes in two forms: verbal (speaking/listening) and written. There should be 1-2 courses in this in every engineering discipline. Very few apps are single-author with no user input. - Mark
[+42] [2008-11-03 13:11:51] Jaywalker

That the real world is unfair.

(2) I think they generally stack those lessons under the 'Philosophy' label ;) - tloach
(8) Heard from a friend: "You'll never get what you deserve, but what you are able to negotiate" (And he said he was told that at school) - Null303
(65) That is a really great point. And to illustrate it, I will vote you down. - Bob Probst
(3) Every time I get my grades I´m taught this one. - Seiti
The real world is as fair as you make it. - James Schek
I totally agree with you. This should have had a class of it's own. "The world is unfair: How to take it like a man and move on" - AntonioCS
@Seiti Haha! I love it! - helloworlder
[+36] [2008-11-03 13:57:20] Adam Liss

Making mistakes is actually a Good Thing™ -- as long as they're new mistakes.

(2) "Success does not consist in never making mistakes but in never making the same one a second time." -- George Bernard Shaw - hlovdal
"The way to succeed is to double your error rate." -- Thomas Watson - hlovdal
[+36] [2008-11-04 05:47:11] TM.

How to read code on a large scale.

In the "real world", there is a lot of code that you have to read, understand, build upon, and refactor.

Sadly, most university projects are "start from scratch" type things, which are more the exception than the rule in industry.

[+27] [2008-11-03 13:19:09] CoderChick

Choose your employers wisely.

Bad employers = bad references, which can follow you around forever.

(8) And then you can sue them for blacklisting you. :) - Sam Schutte
(3) I learned this at school... - TM.
(1) Why reference bad employers if you have better references? - Noctis Skytower
[+26] [2008-11-03 13:00:17] tloach

How to resolve a technical disagreement.

It's amazing how many developers I've met, and worked with, who are very poor at this. Always remember this: you are not your code, don't personalize something that isn't personal. - Wedge
i love my code! - Petey B
Can you point us (me, i guess) to resources/articles that describe things to keep in mind when trying to do this? - poundifdef
(3) it's easy, remember that my technical decisions are always right - Nathan Koop
@rascher There's a great book called "Crucial Conversations" which describes techniques of maintaining useful communication in difficult situations:… - Wedge
[+26] [2008-11-04 00:31:16] Adam Liss

In the Real World™ they're all open-book exams, and it's ok to copy from your neighbor. It's more important to know where to look, or whom to ask, than to have all the answers in your head.

Can't emphasize this enough. I know it makes grading more difficult, but team-based assignments should replace most "every man for himself" assignments by grade 7. - sep332
@sep332: Yes, "plays nicely with others" often trumps "budding genius." - Adam Liss
I think individual assignments are extremely important. It teaches independence. If you can't even work independently, then you're going to have trouble working as part of a team. Then again I might be biased, I am fiercely independent and value individualism (which is strange for gen Y apparently). This is not to say that I don't value team work, of course it's important. I don't understand just why people confuse valuing individualism and independence with the unwillingness to work as part of the team. Ugh... - helloworlder
@helloworlder: Well said. My environment often requires me to be ultimately responsible for projects from conception through implementation, deployment, and support; but it's important to know when a few minutes of someone else's time will save hours of your own, or when it makes sense to share tasks to make the best use of everyone's time and skills. In other words, individual contribution and responsibility ensure the team (or company) succeeds as a whole. - Adam Liss
(2) "When you steal from one, it's plagiarism. If you steal from two, it's research!" - Wayne Werner
@Wayne Werner - Lobachevsky .. I am never forget the day I first meet the great Lobachevsky. In one word he told me secret of success in mathematics. Plagiarize! - warren
@Warren: Plagiarized expertly from my favorite piano-playing mathematician! (Only is please to call it "research.") - Adam Liss
[+25] [2008-11-04 02:36:51] Wedge

How to formulate problems in the form of a problem, rather than in the form of an unimplemented solution.


  • "I need to be able to place my online photos into different directories to organize them."


  • "I need to be able to categorize and organize my online photos."

Only one possible solution which may be difficult to implement depending on design vs. many possible solutions which may be easier to implement or even superior in solving the underlying problem (such as Flickr's tags+sets+search system).

Another example: "I need firewood." (Solution: more firewood.) vs. "My house is too cold." (Solutions: better insulation, electric/oil/gas/geothermal heating, wear a sweater, etc.)

also known as "state the question you have, not the question that will fix the problem you think you have" - RCIX
Interestingly enough, SO and similar forums/lists have taught me this lesson many times better than anything at school has. Except maybe programming contests. - Wayne Werner
[+25] [2008-11-03 13:03:35] Adam Liss

You can't help learning when you teach. And explaining something to others is an excellent way to find out exactly how well you know it.

(2) Or... how much more you can learn about it - Brad Bruce
@Brad: How true! - Adam Liss
That's how I learned (and still learn) Python - I actively participated (top 10 contributors for the first 2 years) on the tutor mailing list. I'm sure I've spent hours researching answers to questions and trying to phrase my responses in a useful fashion. That's also why I'm such a fan of SO. - Wayne Werner
[+25] [2008-11-03 13:01:30] Adam Liss

You never know when you'll meet someone again ... or where. It's always worthwhile to treat people with respect and kindness.

(1) The computing industry is a small world. The absolute idiot you cursed out and got fired will have a big smile when you walk into your next job and find out he's the manager. - wadesworld
@wadesworld ... and some parts of the industry are even smaller than others: my current niche, for example, has only few score folks in it on the support and services side - warren
[+23] [2008-11-03 14:03:29] Techboy

The link between technology and business. i.e. Technology is driven by the business requirements.

(5) I love this. I told a blackberry guy at a trade show that they should add an mp3 player. He maintained that they would never. Two years later. tada! What people want tech will prvide :) - baash05
Here's something interesting - many of our technological advances are driven by the porn industry. At least according to my Social Implications of Technology professor... - Wayne Werner
[+23] [2008-11-03 14:20:04] dsimcha

How to ask my own questions. Too often in university, you're simply asked to answer a canned question. Sometimes the key to succeeding at something is knowing what questions to ask.

[+21] [2009-05-20 22:36:53] rmz

The fact that you're often doing more harm than good by over-commenting your code.

int count = 0;  // variable to store the counter

should NEVER be taught as good programming practice.

(3) @Aaron: From a teaching perspective, this can be counterproductive. Over-commenting can be quite helpful to graders when the code is heavily broken. E.g. consider the code, {string i = "0"; // variable to store the counter}. - Brian
(2) @Brain: depending on the language that may be vaild. Beyond that your "}" would be commented as well causing a syntax error :o) - Matthew Whited
That comment is a wasteful distraction. I wouldn't call it "over-commenting" though. My advice is "make your code speak for itself; comment if and only if there is more to say." - Jay Bazuzi
(1) I think for beginners over commenting is good to help with learning. I code commented a lot on my early assignments - I put in comments to help me remember things like how a particular data structure worked etc. Apparently my marker didn't like that and graded me down for what I found helped me to learn. He said it was the comments were irrelevant to the code. - helloworlder
(1) @helloworlder, I would have killed for a grader like that. Instead I've had points docked for not enough comments when I had a function like getX(){ return x;}. Seriously??? Although it does sound like your grader was overzealous. - Wayne Werner
[+19] [2008-11-03 15:22:22] edgar.holleis

To tell hype from substance.

In school/uni I was taught, how great Object Oriented Programming is, and how to normalize data into normal forms for storage in RDMBses, and the value of high-level abstraction which will make Java the last language ever, and how XML will replace all network protocols and configuration files, ...

What I had to learn for myself is how every one of those technologies have their respective place but that none of them is the Silver Bullet.

Non-programmers always know about the next big thing and how it will once and for all magically make complexity go away. You constantly need to remind them, that what looks good in Powerpoint, doesn't necessarilly do so in a source code editor.

"...but that none of them is the Silver Bullet" - or too often was a silver bullet:… - akf
(3) I think when students are fooled into thinking object oriented programming is the "proper" way to do things, then the university has failed big time. - helloworlder
Interestingly I had a 1 or 2 subjects where we were told what OO design pattern to apply, despite the fact that the pattern was not even needed or appropriate for the assignment scenario. - helloworlder
[+19] [2008-11-03 17:41:15] Kasper

That good colleagues is a 90% guarantee that you will enjoy your work, no matter what you do or how you are supposed to do it.

(1) Lower Pay + Cooler Workplace and People > Higher Pay + Assholes and Shit Equipment - Sneakyness
I have seen that in school on group projects with people that suck. So far I haven't had much opportunity to work on a good team. - Wayne Werner
[+17] [2008-11-03 14:24:55] Steven A. Lowe

Marketing and sales. Not in the selling-sugar-water-to-tourists sense, but in the ability to effectively 'sell' your ideas to your peer, managers, and customers.

[+15] [2008-11-03 12:58:36] Codebeef

How to teach others effectively.

[+13] [2008-11-03 13:01:06] warren

Paul Graham summed this up well, I think: What You'll Wish You'd Known [1]


The link is down. - Ramiz Uddin
@Ramiz Uddin - as of 0842EDT on 20110707, it's working fine :) - warren
It is working now. I don't know why id didn't for me first time. Sorry about that. - Ramiz Uddin
@Ramiz Uddin - no worries =D - warren
[+13] [2008-11-03 14:43:52] CYBRFRK
  1. Source code control
  2. Unit Testing (testing in general)
  3. Agile Development
  4. Code Commenting
  5. Code Review
  6. Standards compliance
  7. Proper architecture compliance

(3) I don't really see how most of this has to do with Computer Science. CS != SE. You aren't being trained like a person out of a tech school for a specific job, you are learning a set of core theories about the field which you will apply in more specific ways after you graduate. - Simucal
(2) @Simucal I believe you're missing the point entirely. Maybe the fact that CS != SE is a huge tipoff that a CS degree is the wrong education for a software engineer (even though that is the industry norm). - Wedge
(1) All of the things listed are valuable things to know as a software engineer. I just don't think they have a place in a CS curriculum other than in a SE class you might take. I think the "theoretical" integrity of the CS program should be maintained. Maybe there should be more SE degree options. - Simucal
@Wedge, I know some schools have started to differentiate between SE and CS and I hope we continue along this line rather than muddle the two fields together. - Simucal
I don't know if the original question was regarding CS specifically, but this discussion does not make sense in light of the current question, which asks only what you wish you'd learned in school. - Mike Burton
@Simucal The reality is that people with a CS degree goes out, and most likely to get a SE related job, so the hardline I want CS to be pure theory is bunk. As a matter of economics, if a person receives a purely theoretical CS education, and can't find a reasonable job to get a return on the time and money invested, the schoold would close. - Calyth
We were taught code commenting. I think once I lost 30 out of a possible 100 marks for having crappy comments. Hah! - helloworlder
[+13] [2008-11-03 20:32:55] Rorschach

How to fight fires. In school you always have time to complete your assignments - there is never a time when you have to get something working immediately that is critical to the business. Especially something that you either didn't write yourself or had little input on. The biggest thing about fighting fires is keeping a level head so you can quickly debug without losing it.

(6) Try being on a programming contest team. A number of school CS departments have them, and they compete. You have to code under the gun, which can be a little like fighting fires. - pearcewg
(3) I've learned more about good programming from programming contests than any class I've taken. - Wayne Werner
[+11] [2008-11-05 23:03:07] David Frenkel

Debugging. Real debugging.

If you made it through school you know how to debug your own stuff. But now you a new frontier awaits you when you meet legacy code. Unless you are working in a startup writing all your own stuff, you will come across this problem someday, and when it's bad, it's REALLY bad.

This is because sometimes you will have code that is 5 years old, has major flaws, and has 5 years worth of hacks/workarounds/aborted-attempts/semi-completed-attempts piled on top of it, masking the real problem.

And this is what real debugging skill comes down to... figuring out where the real problem lies, and then figuring out if you are actually have enough time and are competent enough to fix it properly, or at least leave things in a better state than you found it (sometimes leaving comments is the best you can do)

Our exams were composed of debugging real code. We would get our points if the code compiled and executed properly. This was code that was never seen before and in many cases which did things we had never seen in class. - Alexandre Brisebois
@Alexandre I wish more of academia would use that strategy to educate. - James Schek
(1) There should be a course in elementary school, named: Debugging. How to debug anything. Everyday people could need much better problem solving skills. - neoneye
[+11] [2008-11-20 21:04:24] Mark Bessey

Always prefer simplicity over complexity. The best code is the code that you don't write.

I didn't learn this in school either. I don't think this value can be taught. - TokenMacGuy
[+9] [2008-11-03 13:58:27] Adam Liss

We weren't taught that the consequences of poor quality go far beyond a bad grade!

(2) There's actually no good reason why this couldn't be taught. Give students an chunk of ugly code and ask them to a: Explain what its purpose is, b: explain what its side effects are, and c: refactor it. - T.E.D.
This can be so critical, I'm surprised it wasn't upvoted more! What would happen if there was poor quality code on the Space Shuttle? Poor quality code generating your paycheck? Doing your taxes? - Ogre Psalm33
@T.E.D: Actually, that was (unintentionally) part of my undergrad final exam. :-) You bring up an interesting point: writing good code is a very different skill from recognizing, interpreting, and correcting bad code. Both are critical and, IMO, should be taught. - Adam Liss
[+7] [2008-11-03 13:07:18] Adam Liss

What people think you're capable of accomplishing is a good indicator of your success.

I bumped you back up. Whoever downvoted you hasn't been around much, or just doesn't like reality. - T.E.D.
[+7] [2008-11-04 01:10:32] community_owned

People skills. Organising teams. All my greatest headaches are nearly always problems of 'soft' skills.

Estimating delivery times (especially delivery as opposed to just feature-complete code), handling difficult customers, organising & motivating teams, methodological questions, estimating process duration, understanding the importance of tests, did I mention ESTIMATION, agile methodology, estimation for agile methodology, considering the unestimatable quality of bug fixing VS the estimatable quality of writing comprehensive unit and acceptance tests before writing the code, understanding when something can be unit-tested or requires integration or functional tests, understanding that ANY technology that makes unit-tests difficult to program is therefore inherently bad (BPEL I'm looking at you!) ... the list goes on.

As a senior developer these are the things that take up my day. Not the purely-technological problems.

[+7] [2009-05-20 22:46:59] Aaron Fi

"A problem well-defined is half-solved."

So focus on defining the problem, and clearly communicating the problem; convincing others and yourself that there is a problem and that you know what it is.

All this before you jump playfully into "solution space".

I've met people who aren't even aware that they're in solution space, when to them they think they're in problem space.

[+6] [2009-05-20 22:58:03] shoosh

"There most certainly is such a thing as a stupid question."

Yup. I would give you ten upvotes for this if I could. I'm a teacher, and I tell this to my students all the time. (I'm reasonably gentle, however, about pointing out which of their questions are stupid. It has to be a whopper for me to come right out and say so.) - Telemachus
(1) I can't believe you would sya this! BTW, what is a variable? - Alex
"there's no such thing as a stupid question, but there are an awful lot of inquisitive idiots" - warren
[+6] [2009-09-14 15:51:50] bludger

Social Skills

Closely related to communicating effectively are social skills in general. After you graduate, you’re not going to be dealing with your high school or frat buddies anymore.

You’ll be dealing with many people from different backgrounds, countries, and more importantly different age groups, so it would be wise to learn how to socialize outside your own group.

Cut the slang. Learn to respect customs from other countries. Learn how to listen – few people do. Learn when to speak and when NOT to.

Build rapport. Learn the art of networking – that’s key. Networking is a big skill that’s not taught enough in schools. Learn to compliment. Mingle. Make small talk.

Learn to approach people – that’s another big skill. Most people don’t have the guts to take the first initiative and introduce themselves. Be the big man. Take the first step.

I missed all these things. :-(

(1) sep 14th is my birthday - and I also missed this the first time.. - Tomkay
[+6] [2008-11-03 21:14:09] tolomea

Regular expressions.

I learned about regular expressions... In discrete mathematics... By the way there were no real-world uses for this abstract concept they were teaching >.> - TokenMacGuy
[+6] [2008-11-03 18:24:57] Whytespot

Not enough emphasis on technical writing.

[+6] [2008-11-03 20:04:53] Bogdan

They never told me that once you build a good application that users love to use you can never escape it.

They also never taught me that the success of fixing a bug after struggling with it for hours on end is much sweeter than getting it right at first. It is also addictive.

(2) That explains why C is so much more popular than Ada. :-) - T.E.D.
(2) Thats why we do what we do :) - Egg
[+6] [2008-11-04 03:21:48] kenny

At school plagiarism is bad, at work plagiarism is good.

(1) Yes and no. Steal where you can, and give proper attribution. Know when you cannot steal, as the theft will violate licenses or agreed-to terms. Be an ethical thief. - Will
(4) Know what you are stealing. Many folks I know who "plagerize" in the professional world also have no idea what they stealing. This can often introduce many unwanted problems. - James Schek
Good point James. - kenny
[+6] [2008-11-04 03:54:48] user33891

refactoring, and build only functionality that has a use, don't build more than that for some abstract completeness concept. Every line of code has a corresponding percentage chance it will contain or introduce a bug.

[+5] [2008-11-03 13:21:59] Kevin

Just how important being able to effectively communicate really is.

(1) "I feel that, if someone cannot communicate, the very least he can do is to shut up!" -- Tom Lehrer - Adam Liss
(1) I would agree. Unfortunately that is also something they don't teach in school. :) - Kevin
[+5] [2008-11-03 15:23:55] Gulzar Nazim

How to survive and succeed in the ever changing technological landscape?

that's easy: leverage solutions - f100
(3) @Duncan but only if you leverage enterprise solutions to empower synergy in the marketplace of ideas - Wedge
(1) I hate marketing bullshit speak. - Simucal
@Simucal, that's why your boss will make twice as much as you, even though you are twice as smart. - Alex
[+5] [2008-11-03 15:24:47] pzycoman

The majority of people are idiots and liars

I thought that was politicians? :) - Rorschach
@Rorschach, I think it's a pretty inclusive group. - kenny
[+4] [2008-11-03 15:25:03] Mr. Brownstone

Real world is dirty. Problems are hard to define and understanding them thorougly is a big part of a solution. Tech knowledge is usually not enough, solving real-world problems requires a lot of communication and improvisation skills.

[+4] [2008-11-03 16:11:02] cciotti

Curiosity is a Good Thing . . . no one really likes cats anyway.

curiosity killed the cat...but satisfaction brought him back! - Steven A. Lowe
(4) +1 for curiosity being a good thing... but -1 for not liking cats - codeinthehole
@codeinthehole +1 for curiosity AND not liking cats :) - warren
[+4] [2008-11-03 13:39:44] community_owned

The skills to keep on learning.

[+4] [2008-11-03 13:09:07] Daok

The most important thing I've learn is that knowledge need to be up-to-date in software and that I'll need to learn for the rest of my life :)

be aware that there is already a product that fits your ideas.. or at least there is a framework for your creative needs - Tomkay
[+4] [2008-11-20 15:29:09] Soltys

How important is backup.

[+4] [2008-11-03 20:13:16] CAD bloke

Confidence. You can be white-hot at what you do but if you come across as a bumbler then you won't get far. There are plenty out there with lesser talent who sell themselves more confidently so they get the gong.

Not to be confused with arrogance.

[+4] [2008-11-03 17:18:47] Ather

How to conduct myself in a job interview

(1) How is it the job of your Computer Science department to teach you how to conduct yourself in an interview? Go to a career services department for that or if you don't have one, talk to a counselor. Interviewing has nothing to do with Computer Science. - Simucal
(1) Amazingly, when I went to school, they didn't make me take only Computer Science (or Engineering) courses. I had to take writing courses, humanities, courses in giving a presentation, etc. I think this is a valid point. - Ogre Psalm33
@Simucal - that's still at "school" :) - warren
[+4] [2008-11-04 01:34:09] Paul Beckingham
  • How to work as a team
  • How to maintain old code
  • How to debug
  • How to productize code
  • How to write secure code
  • How to write portable code

[+4] [2009-06-15 21:47:41] gehsekky

how to ask your boss for a raise.

[+4] [2009-06-12 13:52:44] Dinah

Here are the most important wrong things I was taught in high school + college:

  • I was taught that my efforts were mine alone. My successes were mine. My failures were mine. The same applied to others. Being an intelligent island was what was important. Cooperating and networking with others was irrelevant and even potentially detrimental.

  • I was taught that it was ok to be shy and not want to speak in front of others.

  • I was taught that my interpersonal skills were of far less importance than my mental abilities.

  • I was taught that I would be doing interesting and mentally taxing tasks all day.

  • I was taught that being smart and having "potential" would get you into a good school even if your parents didn't have much money. And it would especially be enough to get you a good job that you're able to do, even if you don't yet have the experience.

  • I was taught that proper grammar was important. If you don't know exactly how to avoid sentence fragments and comma errors, you will be looked down on because everyone else knows this and follows it closely.

  • I was taught that higher math was highly valued and that you'd use at least some of it after high school.

  • I was taught that learning the arts adds little value to life since you can't turn it into income.

  • I was taught that the quadratic formula was worth studying for a month or two but compounding interest was only a formula worth memorizing for a few days.

  • I was taught that the most competent person would be in any given position in business. The unqualified would be kept out of a position.

  • I was taught that every smart woman must pursue a BA and a career. What confident self-assured woman could possibly want to be a stay at home mom? At best, it's weak and ambitionless. At worst, it's squandering the gains made by hard-fighting sacrifice-making previous generations.

  • I was taught that a textbook any older than 2 years is obsolete and must be replaced.

  • I was taught that Lotus was the future that I positively must learn if I am to have any competitive edge in business.

  • I was taught that writing lengthy papers was a valuable skill. The more advanced courses had longer paper requirements so it only stands to reason that longer = better.

  • I was taught that there were no long term effects to any of my actions. If I failed a class or simply lost interest, I would only take a small hit on my GPA and in many cases, I could take it again without consequence.

  • I was taught that choosing to take Calculus is more important to your life than choosing a "marriage and family" course.

  • I was taught that all projects could be completed in 5 months or less and would never have to be maintained -- by myself or by others.

  • I was taught that school taught the important things. By corollary, the items never even mentioned in school must be trivial: writing a resume, establishing good credit, how to dress and act on an interview, balancing a checkbook, determining the long-term impact of purchasing something on credit, taking initiative in a group, negotiation, diplomacy.

  • When science and religion disagree, if you are in my urban highschool, if you take science's side then you are objectively right and everyone will come to agree with you. And if they don't, their feelings aren't worth considering. Moreover, if you ostracize them, there's no real-world harm that can come back to you if you attack their views. It's not like someone else can affect your island.

  • When science and religion disagree, if you are in my rural university in the southeast, if you take religion's side then you are objectively right and everyone will come to agree with you. And if they don't, their feelings aren't worth considering. Moreover, if you ostracize them, there's no real-world harm that can come back to you if you attack their views. It's not like someone else can affect your island.

[+4] [2010-02-22 15:48:59] The Jug

How to effectively communicate to non-programmers and design a program for what they need, not what they want.

thats very very important - Tomkay
[+3] [2009-06-15 21:05:27] DJ.

That passing these courses have very little to show how you will perform in the real world.

More important concepts:

  • being able to work together with other people. (ie dont lock yourself in a room writing code)
  • memorizing something that is in a book is pretty much useless. (the index is your friend)
  • if you know what you are doing the language/os being used is close to irrelevant

(2) Search engines are your friends - Alexandre Brisebois
[+3] [2009-01-11 10:43:06] JohnnySoftware

How to debug code. From my first year as a professional programmer, I keep marveling why they did not teach us this in school.

This could have fit nicely into a course on software quality assurance or engineering (SQA/SQE) as a big chunk of it.

Beyond "putting print statements" in our code, instructors taught my fellow students and I nothing about debugging code.

They taught us how to do anti-bugging but not debugging.

The debugger is a vital tool in both fixing problems and inspecting code to understand it and look for problems.

These days, with continuous integration practices/mechanisms, widely available free tools for doing static code analysis to check for errors and compute complexity/instability, help automate unit and even functional testing - and all sorts of other things that drive quality out and bugs up - a one semester course on these things would be powerfully useful for coursework and future professional work.

[+3] [2009-09-14 17:50:31] community_owned

Self learning.Educate yourself.

[+3] [2009-09-14 18:28:03] Larry Watanabe

The most important things that I didn't learn in school couldn't really be taught there anyways.

  1. The people around you, in particular your family, are more important than your work, your ideas, and what you think is your "future". There is no future, only an ever-changing now.

  2. Your work is more important than your salary. By this I mean what work you do, who your boss is, your corporate or non-corporate work environment, co-workers, hours, commute, life-work balance. Salary should be an afterthought - if you are doing work you enjoy, then it is probably fun and challenging and will be paid what it is worth.

  3. Work determines life outside work. If you are working stressful hours, that will determine what your hours outside work will be like - stressed out, or recovering from stress. if you are working long hours, then your life outside work will be short. If your work is not well-paid .. then your life outside of work will be frugal. But it's better to have lots of stress-free hours outside of work, having fun frugally, than a few stressed-out hours with lots of money.

  4. At your funeral, no one's going to remember or care that you were a great student, whiz programmer, or great worker. They will remember what you were like in your personal interactions, the times you were kind or understanding, and the fun you had together, and hopefully how much you loved them and how much they love you.

(2) "Your work (environment) is more important than your salary" I completely agree with you. It's taken me some time to really understand this. It can radically affect your mood and quality of life. - Alexandre Brisebois
(2) I really like No. 4 - helloworlder
(2) wish i could upvote this about 20 times! - warren
[+3] [2009-12-23 17:12:34] helloworlder

Critical thinking. It's not the same thing as problem solving but often it's confused with it. We're just given assignments and told to do it, we're taught data structures as if they were formulae, and we're taught OOP just because it's the thing in the industry at the moment. Teachers just assume students will "pick up" critical thinking skills as they do the work. I don't think that's a good assumption to start off with.

I think the worst thing is when university courses over focus on the industry. For example, one of my courses was "LAN Principles". In reality, what is was, was what Cisco Systems wanted potential employers to know. I don't want to memorize what key combination does what to the Cisco console. For certifications, that's OK, but for University that's bullshit. True Universities don't churn out lemmings for the industry - they create people who can think for themselves.

[+3] [2009-12-23 17:19:16] Pavel Minaev

One thing that I wasn't taught in school is that not everything they teach you in school is a good idea, or even correct.

(2) I think teachers should admit it when they don't know something :-) No one knows everything. - helloworlder
[+3] [2008-11-19 11:31:27] John with waffle

Nobody will tell you that as an adult you will have a choice on working at things that make a positive difference or just taking any opportunity that puts food in your mouth, and the ethics of the goals your workplace sets and the ethics of the people around you should be a fundamental criteria, because otherwise you will find your work put to ends you don't want to admit.

(1) Yes. I suggest a screening of Real Genius for all engineers to perhaps get this point across. - T.E.D.
[+3] [2008-11-04 03:20:01] baash05

if a user can break your code they will. Users of your applications will break it if you leave a hole. Users of your code will use it wrong if you let them.

Make sure what you write works, because if it doesn't then you'll pay for it.

(1) with your weekends and evenings - Alexandre Brisebois
[+3] [2008-11-03 13:05:00] Adam Liss

Don't discard your mistakes -- they may be more valuable than your successes, even if only as bad examples ... or SO questions!

(1) In other words 'learn from your mistakes'. I sometimes let people make mistakes before I help them out - it is the best way to learn. - Techboy
(1) @Techboy: Yes, you can learn a lot from their mistakes. And you can learn even more when their "mistakes" are better than your solution! - Adam Liss
[+3] [2008-11-03 14:34:46] Dining Philanderer

All the nuances and issues that arise between 100% academically correct and 100% employer correct:

100% academically correct will get you a good grade. 100% employer correct will get you a good paycheck.

How to cover your ass when instructed by time constraints to do something that is not 100% academically correct.

[+3] [2008-11-03 14:23:30] Coderer

Requirements gathering. If you show up at your first day of work expecting to be handed a program description that a TA could grade you on how well you followed, you're going to be in for a surprise. I know I was.

"Well, how do you want it to work? What do you mean 'I don't know'?!?"

HUGE eye-opener for lots of people. And it's like this: You:"Well, how do you want it to work?" They:"Just like Google but with more colors." You:"But you're selling novelty dog toys..." They:"Right, so the website has to Bark whenever they click somthing." You:"...." They:"Call me when it's done." - Bob Probst
[+3] [2008-11-03 14:05:12] Jim C

That most things you learn will be obsolete in 5 years. I haven't programmed in FORTRAN using a deck of punch cards since I left college.

(2) ...unless you go work for the government, or a government contractor. In which case, you'll be welcomed with open arms and never have to learn another language until you retire =-) - Coderer
(2) I'd hope that a "good" CS curriculum would teach core concepts and techniques that transcend time, platform, and language. As an EE who writes software/firmware to make the hardware work--unattended for 10+ years--my philosophy is that programming is essentially the same task regardless of implementation specifics. Sure. there are plenty of differences (OO? Procedural? State machine? Client-server?), but all of the vital, eternal concepts of architecture, supportability, extensibility, efficiency, etc.apply regardless. Everything else is a question how how to talk to the compiler. :-) - Adam Liss
[+2] [2008-11-19 14:28:04] T.E.D.

Self confidence is way more important in getting ahead than intelligence.

I felt kinda ripped off when I figured that one out. All that effort lavished into learning things...

[+2] [2008-11-07 11:51:48] Eliza

How to make software to sell.

We were taught all about how to write great software in the context of an existing business. However, it's quite another animal when you're starting a business with your software.

[+2] [2008-11-04 01:57:07] isc_fausto

How to speak, discuss and correct or be corrected by my boss.

I have been stressed out because I don't know how to talk to my boss (specially when I think I'm right, and he thinks he's right)

(1) I have found that it is best to keep in mind that we are equals in worth as human beings and equally deserving of respect, but he's still the boss. - Larry Watanabe
[+2] [2008-11-03 17:06:19] glenatron

This is a programming site, so I'll talk about my CS education- I wish someone had said: "Hey, all this academic maths stuff like big-O notation that you think is nothing to do with the real world will actually turn out to be very useful if you pay attention to it. Except for your Formal Methods Of System Specification course, that really is the waste of time it seems like."

Would you have believed them if they did? :) - Christian Vest Hansen
I haven't seen a need for predicate calculus since I did it at Uni...unless you are going to program nuclear power stations / traffic lights and the like it is pretty useless. Though it is all part of a rounded education. - Craig Norton
(3) It's funny. I had a teacher who repeated this kind of thing like a mantra. He said things like "I know you don't believe me now, but later you'll wish I'd pushed you harder, to learn more." We thought he was crazy. Well, he was crazy...but he was also right. - Beska
[+2] [2009-08-21 18:35:21] Emrah GOZCU

Actually, i have learnt everything about programming all by my self. But if you let me talk about my complete education life, i would be glad if someone let me know how to learn something! if you learn to educate yourself, you can learn anything you want.

We have a saying says that "There is no age to learn"

Since i have studied in Turkey, that may not apply you :)

[+2] [2009-08-31 08:10:08] Learner

Successful are not the one who know better but the one who present better.

[+2] [2009-09-14 17:56:31] Adam Backstrom

I came out of an IT program with no idea how to structure complicated web applications. Many of the courses were centered around PHP, but I had no MVC knowledge, no best practices for where to store certain types of files (templates, css, images), no idea how to organize files logically. It has come to me over time, but some help would have been nice.

I wish I could vote more than once on this one. - Alexandre Brisebois
[+2] [2009-08-21 14:17:44] tkotitan

I wasn't taught how thankless a job programming is. Even your fellow programmers often don't know, don't understand, and therefore can't appreciate what you did. So in a comfy corporate programming job, there is no risk-reward. It's an entirely different game showing business value out of all that difficult coding you did.

eyecandy is a good way to gain some praise from non-programmers.. but thats mostly the easiest stuff to program - Tomkay
[+2] [2008-11-20 15:54:36] Jason L

Self-measurement. Specifically, how to identify my weaknesses, my strengths, and my market worth.

You can easily tell if your haircut looks bad. Unfortunately, there's no mirror for our personality or work patterns.

[+2] [2009-06-12 13:16:08] Paddy

Be aware of what you don't know and don't be afraid to ask questions when you need to.

[+2] [2010-02-22 15:50:40] Clean

Project management.

[+2] [2010-10-13 22:18:04] jwiscarson

How to work on a mature application -- that is, when to make wholesale application changes (or lobby management for the time to make them), as opposed to plugging holes in your application.

At my first job, I was handed sole ownership of an application over 20 years old, and I had no idea what to do with myself. I had real choice anxiety about the changes I made up until a few months before I left the company, because I couldn't pace myself or prioritize issues. The naivete of being so young and "knowing" how things "should be" often left me feeling that everything was of the utmost importance.

[+1] [2010-11-22 19:05:33] Rami.Shareef

Principles I never learned at school:

never every make fun of anyone

treat people the way you like to treat you

all viewpoints are correct

put yourself in the person's shoes when treating him

Don't do or act anything may lead to self-image damage

Get what you need not what you want

focus on smaller things, and do one thing at the moment

Dont take every thing seriously nor personal

focus on relationships a bit more.

love the job you do, read more about it, live it

[+1] [2010-04-07 02:31:16] iamgopal

learning how to learn anything. thats the only thing one education needs to teach any one. rest can be taken care of.

[+1] [2010-02-23 21:34:23] Earlz

Life is not multiple-choice.

[+1] [2010-02-23 22:19:56] Il-Bhima

One thing that doesn't seem to be explained in universities is the real-world importance of code optimisation. I used to find that developers fresh from school (me included) tend to suffer from the following issues:

  1. Miss the critical sections which require optimisation.

  2. Waste excessive amounts of time optimising code which is not executed frequently enough to be of any benefit and reducing its readability.

  3. For many graduates optimisation means moving variables out of loops, something compilers will do for 99% of high-level languages, rather implement caching, and appropriate data structures.

  4. CS students tend to think in exclusively Big-Oh notation, so that a 2x speed increase on a critical section is not something worth chasing.

Profiling is another technique which many graduates are unfamiliar with.

[+1] [2010-02-23 22:58:20] Bobby

That the world doesn't turn around me, and that it doesn't care about me either.

[+1] [2010-03-24 22:04:08] Chris Cooper

Spending even 20 minutes planning your projects (however small) can save you hours or more of headaches, refactoring, debugging, etc.

[+1] [2009-10-15 12:46:18] JuanZe

Building software is a social activity, more than a technical one.

(1) I think its a balanced mix of both. - Alexandre Brisebois
Alexandre, I agree with your comment. I was trying to point out the fact that is mostly seen as a technical activity without thinking about the whole social aspect of it. - JuanZe
[+1] [2009-06-12 13:18:47] Dana Holt

salary negotiation [1]


[+1] [2009-06-12 13:43:31] SomeMiscGuy

That unlike school and if you played sports, there is no such thing as good sportsmanship. Two people going for the same job, there will be blood. The person sitting in the cube next to you WILL throw you under the bus at review time, and when projects come late your boss will sacrifice you up to their boss in order to save their own arses.

It's nice that we teach little kids that all is fair, and that we can't keep score and that despite the fact that the other team kicked your ass 10-0 you still have to smile and shake their hands and all go get ice cream... Reality is a cruel wakeup call and kids are shown a great injustice by not being prepared to be kicked in the gut now and then.

Sad isn't it that this is a cultural truth? - helloworlder
[+1] [2009-06-12 13:53:41] jCuga

How to integrate different skills and languages in a single project.

[+1] [2009-06-12 13:57:34] Makis

One university professor had something like this in his sig (not from my university, and I was never taught this there):

"If you get 90% correct on my assignment, you pass the course. If you get 90% correct at work, you get sacked."

[+1] [2009-05-20 22:31:26] ChiperSoft

That a lot of what you just spent four years learning became obsolete eight years ago.

[+1] [2009-05-20 23:00:16] James Schek

The developers (people?) who claim to know the most tend to understand the least.

[+1] [2009-06-19 04:50:10] Meetu Choudhary

•How to communicate effectively

[+1] [2009-09-14 18:13:08] amischiefr


My school didn't offer any classes on databases. I think this is the stupidest thing to not include in any Computer Science degree. What are computers without data? What is corporate IT without data?

Every single company / place of work has data and understand how to access it, how it is stored and how to manage it is kind of important.

though this is generally stuffed into CIS programs over CS - warren
[+1] [2009-08-21 18:38:30] Will WM

Time management.

(1) weird thing thought. Aren't assignments supposed to teach students to hand thing in on time? - Alexandre Brisebois
[+1] [2008-11-03 22:05:23] community_owned

How to write a debugger or at least how does it work

[+1] [2008-11-20 15:34:25] Ben Aston

How to learn effectively (based on cognitive science).

i really whish to know that. - Tomkay
[0] [2008-11-20 15:38:21] Derek B.

How to deal with bosses. My last boss micro-managed me to insanity.

[0] [2008-11-20 15:39:51] Ben Aston

Oh, and, most people have a very fuzzy definition of the truth, which is annoying for techie types who prefer a more binary worldview.

[0] [2008-11-04 09:21:50] Alexandre Brisebois

Herms posted this comment earlier and I completely agree with this: origin post [1]

I find that generally these things are only OK when you actually own up to them/admit them. If you make a mistake but refuse to admit it then it's not OK. If you're wrong but don't learn from it it's not OK.


I think part of the problem is getting excellent feedback from teachers. Poor feedback = you don't know what you did wrong = you can't learn from your mistakes. It's usesless to admit that you did something wrong - you have to know exactly what you did wrong and why you did it that way. - helloworlder
I somewhat agree with helloworlder, it's useless to be told exactly what you did wrong, because when you get everything handed to you, you miss out on the actual point of learning to learn and learning to be autonomous. To be creative and to rely on your own knowledge to find out what went wrong and how to fix it is very important when it comes to debugging. If the teacher always tells you exactly what when and how, how can one ever become a good debuger. and without being good a debugging how can you produce quality code in the first place? Creativity and Curiossity is extremly imporant! - Alexandre Brisebois
feedback is important! but it's also important to teach someone to find things for themselves. - Alexandre Brisebois
[0] [2008-11-04 04:18:59] Kyle Hodgson

The most important thing:


Same as mine, but much more succinct. Upvoted. - T.E.D.
[0] [2008-11-06 12:40:00] Svante

Working, straining myself to achieve something. I got through school without ever doing my homework or learning for a test (outside of class), and still got acceptable grades.

[0] [2008-11-03 21:28:28] Cybis

That no matter how much fun I had programming as a hobby, it really sucks being a professional software engineer. Then again, being a professional anything probably sucks.

I'm not kidding. Univ. graduate (w/ honors) and 2 years exp in industry... and I still can't figure out what I want to do with my life.

(1) Find another employer. My Dean_of_Engineering polled our freshman class and suggested I find another career when I answered, "I chose engineering because it seems like fun." 20+ years later, I'm still convinced my reasoning was sound. Still designing neat stuff, still enjoying it! - Adam Liss
Life doesnt suck if you love your career - Egg
Freelancing is another path :-) - helloworlder
@Egg - and life doesn't suck when you realize your career is not as important as your life :) - warren
[0] [2008-11-04 01:59:12] Geoff Cox

Starting from nothing when creating a program - professors always had scaffolding and starter code for us. In a real project I often start from scratch and that opens the possibilities and that makes me realize that school should have been explaining the different possible starting points.

[0] [2008-11-03 21:10:26] Magsol

This may seem picky and trite, but a very overlooked skill that would have come in SO much handy was a solid teaching on how to properly construct Makefiles, including and certainly not limited to setting the include and link paths. I cannot begin to describe just how painful an iterated HTTP server development was in C without solid Makefile knowledge. Same for C++, same for Java Ant files, and so on.

[0] [2008-11-03 14:37:56] roryf

Until you've been in the business for at least 10 years you really don't know anything.

(3) This is very, very untrue. Experience is gained by active learning, it is not a counter that just ticks away as time goes by. And there are many, many great developers out there who have much less than 10 years of experience in the business. - Wedge
I find the more I learn the more I don't know. I tried to patent that, but apparently its a common tenet of learning. Who knew? - Will
(1) Yeah, I definitely don't agree with this answer at all. - Fostah
[0] [2008-11-03 13:09:56] RichieACC

Whether you think you can, or think you can't, you are right.

[0] [2008-11-03 13:39:19] Carl Seleborg

You'll be working with real people. Correct code and command-line switches ain't good enough in the real world.

[0] [2009-08-21 18:46:11] THEn

I never had User Interface design/optimization. Usually my form has bunch of (too many) text boxes and combo boxes. I would love to get rid of many of those controls...

[0] [2009-09-15 16:33:11] community_owned

Think from the output point of view and not the process how we achieve it.Getting the output is important.

If I were in North America I would tend to agree, but different cultures have a different point of view on this issue. In France the process is quite important. - Alexandre Brisebois
[0] [2009-07-03 00:29:52] mahalie

I'd like to know the most important thing learned in school, since I never went!

throughout this thread you will find many important things which were either partially taught or not taught in school for many of us the real learning experience occurs once we start working. In school I personally learnt the base upon which I've built my upon. Most of what I've learnt could have been learnt on my own, but it would have taken me much more time. School is an accelerated / express knowledge acquisition platform. This then gives you the basic principles needed to piece the rest together. - Alexandre Brisebois
[0] [2009-08-21 18:26:20] JB King

How to keep up with the rest of the world would be my answer. For example, when should someone start trying new tools or new versions of things? How do I get into something that I haven't done before in a quick and efficient way? In some ways I'm still working on this answer but it would have been nice if school could have given me a starting point.

often enough, the curious people will be the first to try new things. It can be a real headache to try new pre-beta software! I honestly do not think that this is something that can be taught. A teacher cannot teach motivation. - Alexandre Brisebois
I'll agree that teachers cannot teach motivation, but my challenge is more about technique. How do I absorb large amounts of information in a short period of time? This isn't about why but rather the how. - JB King
[0] [2009-06-11 06:38:16] community_owned

how to sell an idea

[0] [2009-05-20 22:21:36] community_owned

Creativity Independence Free thought

[0] [2009-06-15 09:30:36] Ivarska

How to program - I learnt it by myself.

[0] [2009-06-15 09:49:32] Sam Nardoni

No code is better than no code.

this may depend on the goals and perspective of the code and reviewer. - Alexandre Brisebois
[0] [2009-06-15 21:46:01] Bernard Dy

It is better to be lucky than good.

(1) then again we make our own luck :) - Alexandre Brisebois
@Alexandre Brisebois: I agree that preparedness leads to success. But I have also seen completely raw instances of dumb luck benefit the totally unprepared. Sometimes, I get to count myself among their ranks...if I'm lucky :) - Bernard Dy
[0] [2010-03-24 22:06:12] Jay

be careful what you ask for, you might get it.

[0] [2010-02-23 22:39:30] fastcodejava

You need to test your code before saying done.

[0] [2010-05-14 09:10:18] rgksugan

Code conventions

[0] [2010-07-23 22:22:07] damian

To work as a team

[0] [2010-08-06 13:35:56] neoneye

Debug code in a systematic way.

[0] [2010-09-03 12:11:09] bludger

The importance of commenting your code and how to do it well.

(1) this is something that heats up many discussions, people have manyu different views on this. I agree that comments are important, but readable, clear and concise code is quite important too. - Alexandre Brisebois
[0] [2011-05-17 20:52:21] osknows

What you read and what you believe is almost certainly not true.

I like this one - Alexandre Brisebois
[0] [2011-06-19 01:21:56] Adel

Use Google when you are stuck!

And don't type too long at a time or else you get carpal tunnel synd.

funny how easily injuries occur at a computer - Alexandre Brisebois
Well our hands were not designed to punch buttons for hours on end. Also, some people have small wrists(like me) so they are more prone than bigger folk. - Adel
[-1] [2010-02-23 21:58:27] robert

The following things have nothing to do with 'computer science' and instead belong in a class devoted to scamming microsoft fanboys.

* How to sell an idea
* Often, good enough is better than perfect.
* If a user can break your code they will.
* In the Real World™ they're all open-book exams
* Self confidence is way more important in getting ahead than intelligence.
* You never know when you'll meet someone again ... or where. It's always worthwhile to treat people with respect and kindness
* Lack of Softskills experience
* How to productize code
* How to self-measurement. To evaluate ones true competences and market worth.
* How to read code on a large scale (being able to adapt and build upon existing projects)

The following thing just plain sucks, and if someone is going to be a 'computer scientist' then they'll need to be smart enough to obviate the need for it:

* TDD/Unit testing

Instead of learning buzzwords that out-sourcing contractors use to sell garbage code to government contractors, maybe students in CS should learn some basic skills:

* How to use vim
* How to type
* several languages that adults would use: Haskell and Python would be a good start
* How to recognize pitiful failures by their undying love of commercial progamming languages.

[-1] [2009-09-14 18:02:37] Larry Watanabe

They didn't teach me how to use a personal computer in school. They were $10,000 at the time, and way too expensive for student use, so we had a few departmental vaxes that were so overloaded that vi was disabled (we had to use ed instead). It did teach me regular expressions ... even ed was way too slow, so I learned some powerful regular expression search-and-replace methods to save on keystrokes (this way I didn't have to scroll the screen).

[-1] [2008-11-03 16:16:15] J.J.
  • A deeper understanding of things I thought I knew everything about.
  • Several new and insightful ways to think.
  • networking with people of like mind.
  • Actualized things I could theoretically do.

[-1] [2008-11-04 02:09:29] Paulo Guedes

Write neat code.

[-1] [2008-11-04 05:53:12] community_owned

...that you have to learn most stuff yourself if you really want to be good at something.