Joel Gives College Advice For Programmers 808
An anonymous reader writes "Joel on Software explains what college students should do with their lives. Interesting to note is how he justifies such trivialties as GPA scores and well-roundedness, the very things comments here tend to think are overrated. In short, learn to write English, learn to write C, and don't worry about India!"
Slashdot anti-intellectualism (Score:5, Insightful)
The anti-intellectualism here on Slashdot is extraordinary. I must admit to being rather surprised whenever I see comments like "PhD's dont know nothin" (sic), or a recent post [slashdot.org] saying I hate college with poor grammar and spelling. Responses to it basically stated that a college degree was worthless.
Amazing.
Do what I do... (Score:2, Insightful)
YES (Score:5, Insightful)
Seriosly, bad communication skills generate huge costs in lost time, and legal fees when something goes wrong.
My Advice (Score:5, Insightful)
So far, all the jobs and good friendships I have gotten have been due to what I do outside school hours. I do the minimum possible for assignments I don't like, and score good grades on the ones I do like, because I do them with enthusiasm.
Of course, I am one of those people who love to learn and experiment. If you're not that kind of person, most of what you learn probably comes from school. YMMV. HAND.
Enjoy your summers (Score:5, Insightful)
To anyone who questions why (Score:2, Insightful)
That is what college is.
It isnt training for your job, that is what other post high school education venues are for.
College IS the extra classes plus your expertise.
it is a combo of both so if you dont like it, college may not be the best choice for you.
value exists in those classes so enjoy them (even the pain in the ass ones)
Re:Good advice... (Score:3, Insightful)
About the only thing I can't stand to do is the 'helpdesk' role to my family.
"Mom, I don't know what 'thingy' you are talking about or how you broke it in the first place!"
That just makes my skin crawl.
Re:Slashdot anti-intellectualism (Score:3, Insightful)
Re:Good advice... (Score:3, Insightful)
I've been 'punching out code' at the same job for the last 3 years, and nothing could be further from the truth. You write code at work, then go home and play some Age of Mythology or even write some code for my personal projects; frankly my computer is my lifeline (queue the jokes). On top of that, I'm married and have kids - fact is you don't get a whole lot of free time when you've got a family, so I look forward to my free time on my home machine, despite 'punching code' for 8 hours a day at work.
I wish (Score:3, Insightful)
If there is one thing I want to say to those looking to go into Computer Sciene or a related field it is learn to communicate! Learn to write, and write well! Learn to communicate effectively with other human beings! This may require social interaction that involves not being at a computer. Get out of your room, or parents basement, and talk to people! Go to parties and talk to girls, get over any notions of fear or doubt you have. Be confident. Strong communication skills will get you further than you think.
The hiring manager at the company I accepted the offer from said, "We chose you because you could talk to us. You didn't talk to us like a programmer, you talked to us like a human being."
-J
The best advice... (Score:4, Insightful)
That means learn how to express yourself in a way that others will understand; tailor the message for your audience so they'll "get it."
And learn how to listen to what's being said; others may not be adept at expressing themselves, so if you can learn how to get to "what they mean" instead of just "what they said," you'll be much better off.
And the cool thing is, these skills will carry you through your career, no matter which field you study.
Re:Slashdot anti-intellectualism (Score:3, Insightful)
School is what you make of it. If that is your perspective, you will not take much away from the experience. School is not there to hold your hand and tell you what to think or believe. It is there to provide you with information you might not otherwise be exposed to. Schools should challenge you and provide opportunities to excel.
With respect to cheating: If somebody cheats in school, they are going to cheat in other aspects of their lives. That is a reflection on their character makeup and not on the failings of a school.
School is NOT about learning, it's about fitting in a given society.
I will have to call BS on this one. I and others absolutely did not fit into the mold in college. The crowd we ran with was decidedly counter culture and the kids with the funny hair (us) certainly did not fit into the rest of the class in terms of looks, political perspective or social acceptance. However, we all took something away from the experience and kept our punk ethos of DIY into our careers in science, medicine, engineering and business and music and we all are much happier because of it.
You can learn FINE on your own. Books exist, libraries exist.
Negative. This is not the same as guided education.
Re:Slashdot anti-intellectualism (Score:1, Insightful)
GPA useless??? (Score:4, Insightful)
My company gets thousands of resumes a week. We absolutely need a first-line filter. It is GPA.
In my career I have found that GPA is a very good indicator of a whole host of things. When I get a pile of resumes on my desk, I skip the 4.0s and throw out the 3.0s, if nothing turns up in between, I go back to the 4.0s.
4.0 = uptight asshole or passionless droid
3.5ish = smart but obviously had to work at it
3.0 = probably only excelled in things s/he liked
3.0 forget it, not worth my time because you shouldn't have been in college if you can't maintain a high-B low-A average.
The 3.0-3.5 range implies they are not suzuki-method droids, but actually had to work as proof by some low grades (so not everything came easily to them), OR, they cared about something enough to get an A and demoted things they didn't care about. This shows promise in my eyes.
Regarding college 4.0s, my gripe is that they tend to be passionless about what they master, but they seem to master quite a bit. I sound like I'm knocking them, but not really: most 4.0s in college studied their ASSES off and never developed a social life. While this is admirable, there is more to excelling at a career than studying what's in a book.
I can easily recall 5 superperformers at my company (4.0 doctorates from top schools with 3-5 years experience at work), and they all share the same traits: stubborn, egocentric, verbose, scared of precision error greater than 1e-10, and always in the goddamn way of deadlines!
Re:Slashdot anti-intellectualism (Score:1, Insightful)
Look, I don't see how that fact that I attended a school filled with annoying, noisy kids so I can listen to some rushed lecture once a week is supposed to be so much better than learning on my own?
Re:Slashdot anti-intellectualism (Score:2, Insightful)
Learn Learn Learn... (Score:3, Insightful)
Re:Slashdot anti-intellectualism (Score:5, Insightful)
sPh
The dangers of stereotyping (Score:5, Insightful)
Anyone who ignored these peoples' resumes because of the 4.0 would be an utter fool.
Yes, I've known a couple of the types the parent referred to, but only a couple. Of course, now that s/he avoids 4.0 people like the plague, s/he will probably never meet another, and thus the percentage of 4.0s that are weenies will remain fixed in this person's experience, as a self-validating proof.
Beware the stereotype!
Well-rounded is a must (Score:2, Insightful)
What's interesting to note is how well people who take advantage of the liberal arts nature of our university tend to do in CS. Of course perhaps these people value learning for the sake of learning, rather than seeing money signs when they're selecting their course schedule. I'm not sure exactly which it is.
Communications skills would seem to be the easiest way for Americans to differentiate themselves from foreign outsourced competitors. If we can eloquently communicate what we are doing to our employers and write very clear documentation, then we can add another reason to stay with us. That's not to say that Indians naturally have poor communications skills, in fact the few we have here are probably more adept at this than a number of my American peers. What it does do, is it makes it harder and harder to justify moving labor overseas because it makes it only about money, not capabilities.
One or two classes on technical communication can really make a big deal in how you are perceived if you take advantage of them. Isn't that what has been holding back OSS for so long? Arguably what has kept companies like Microsoft and Sun in the lime light for so long has been their ability to communicate to business people and developers.
Do you want to be Joel? (Score:5, Insightful)
Perhaps Joel's problem is that he doesn't see how exciting computer science can be. If all you do for a living is reimplement tired old ideas and trying to make the best out of inferior tools, I suppose that's not surprising. I'm sorry that a course on "dynamic logic" scared him away from grad school, but his poor choice of courses for his interests isn't the fault of grad school.
My advice is: do what excites you. Think about what you want to look back on in a few decades and say "this is what I accomplished". If you merely want to make a living, sure, just follow into Joel's footsteps and re-implement the wheel; that's a pretty safe bet for making money. But if you want to do something meaningful, you'll have to use your head and take risks. The choice is up to you. But you do have a choice--you don't have to become a little Joel clone.
Re:Good advice... (Score:5, Insightful)
Short answer: it depends.
Long answer:
When I was in elementary/middle/high school, I used to spend long hours programming and couldn't get enough of it.
When I was in college I found myself too distracted by other things to program.
When I was working full time (programming) for a company, even on projects where I worked solo on design and devlopment, I was definitely too tired/spent to touch a computer at home (in fact, I didn't even have one at home -- but this is before the Internet made "being connected" all the time a necessity).
However, as soon as I started doing independent contracting (and working from home) I found that the freedom to schedule my day allowed me to set aside time to program for pleasure. I wrote a couple shareware games, made no real money, but enjoyed having turned one of my passions (programming) back into a hobby.
Now, I run my own company and spend all my time programming -- in essence I've come full circle and now my hobby is my career. From this point of view, I completely agree with Joel's quote, with a caveat: if you enjoy programming computers, and your programming is not "owned" by someone else, then you are in an extremely fortunate minority of people.
So, to answer your question: yes, I really enjoy my job and it's not old or tedious in the least bit, but, it took me some time to get to this point.
Joel's Remarks on Grad School (Score:4, Insightful)
With all due respect for Joel, I found his remarks on grad school a bit discomforting. It's not that I don't like Joel and I think he has the occassional interesting word but I'd have to disagree with his remarks over why/when he chose NOT to go to grad school.
I went to Berkeley and worked in the research labs in their CS department. From what I saw the CS grad students did very interesting things. At the time some of them were doing high quality streaming media, using millions of robots the size of pennies, building the next generation peer-to-peer networks, etc. Sure there will be your handful of professors who want to prove that 1 = 1 but most others in tech are out there to do something cool (examples: Sun's RISK processor (berkeley), Google (Stanford), Inktomi (Berkeley), etc.)
I'm not an expert on this but from what I've heard it only pays off if you go to a GOOD grad school in CS while the mediocre ones are probably equivalent to going to a good undergrad school. I'd say that sounds about right.
Re:Internship?? Get a real job. (Score:3, Insightful)
Either I don't know what a real job is or you took some really shitty CS classes. First off you don't learn dick about CS as a help desk lackey. As a programmer you honestly learn little more aside from bad habits that become hard to unlearn when you are shown proper theory.
CS != fixing computers and CS != programming. My advice to you go to a real school, the kind where you are constantly being challenged and the kind where you are taught actually CS not just here is a tour of programming languages. Its people like this that are ruining Computer Science as a science, instead they look at it just as a trade ie programming.
"They" is NOT singular! (Score:1, Insightful)
Well, I won't take seriously an advisor who pretends to care about programmers' English-language skills, yet considers "they" a neuter singular pronoun.
Whether you like it or not, "he" is the neuter singular pronoun in English.
If you wish to avoid offending gender-sensitive people, simply use the plural. if Joel really values literacy as he says he does, he should have written:
I won't hire programmers unless they can write, and write well, in English.
Re:Slashdot anti-intellectualism (Score:5, Insightful)
Apathy is a huge problem at Georgia Tech, where I attended college. People bitch about how nobody wants to help them, about how professors don't offer any guidance, about how everyone is out to screw them. Fact is, the professors rarely even get approached by the students. How do you think these people that devote there lives to research and teaching feel with 99/100 questions they get are an attempt to get a higher grade? Most students show so little interest in anything other then grades it is no wonder the professors don't go out of there way to help more often.
At any good school, GT included, if you make an effort to get to know your professors it really does pay off. Professors usually love to do research, especially in new and interesting fields. In my experience most of them are more then happy to assist there students in getting involved, especially if your area of interest overlaps with theres.
If any of you are in college, or about to go to college, don't be fooled. Sure, everything they teach you there can probably be looked up in a library. However, where else are you going to be surrounded by so many people who have insight into so many different things? Don't throw away your chance to use the professors a bit and learn as much as possible.
People skills (Score:5, Insightful)
As an advertising/marketing student, the most important thing i've learned is "KNOW YOUR AUDIENCE". It is a philosophy that applies to every aspect of your life, since you always have an audience. If you know your audience, you know how to approach things with them, and can get better results.
Wonder how this can help you? Well..for starters, with building your resume, talking on the phone, and landing an interview, and then hopefully nailing that interview.
And remember the ever important 80/20 rule. Its 80% WHO you know, and 20% WHAT you know. And while I wish it weren't true, it is, and the sooner you learn that and accept it, the sooner you will go further in life.
Re:GPA useless??? (Score:2, Insightful)
3.5ish = smart but obviously had to work at it
3.0 forget it
Translation... You're damned if you do, and you're damned if you dont
What a hypocrite! (Score:2, Insightful)
The rest of his points seem to be on the "obvious" side; who the hell is this guy? Maybe I'm not up on all the writings and books but I've never heard of this guy at all. He obviously needs to go back to college for writing if he has anything to do with publications. I was disgusted after the first two "paragraphs", if that's what you can call them.
Joel Gets it Write (Score:1, Insightful)
As Joel says, Linus Torvalds' success probably lies *equally* as much with his communication skills as his technical abilities. His accomplishment was not so much the design of Linux as the catalysis of a far flung herd of cats into inventing the next 'insanely great thing'.
Excellent advice from Joel. Slashdot, get a clue.
Randy
Re:Slashdot anti-intellectualism (Score:2, Insightful)
You sir, are a fucking moron. There is rampant cheating in the workforce. In my years of professional software development I have been witness to many, many incidents of code-stealing, backstabbing, taking credit for the work of others, and so on. If that isn't cheating in the workplace, I don't know what is.
Asshole.
Re:Response to Joel (Score:3, Insightful)
And you expect people to take you seriously when you care more about the font size than the content? Some people may not be design experts, but they may have interesting stuff to say.
Re:Response to Joel (Score:1, Insightful)
Disclaimer: I don't know which is Mr. Krishnan's first language actually is. For an Indian it could be one of about seven. Hindi is just a likely candidate.
Re:Slashdot anti-intellectualism (Score:3, Insightful)
What kind of attitude is that? Schools have an admissions process to keep people with that kind of attitude out so you won't be wasting your money or their time.
All of the information your school has is available for far less money
That's true.
On the other hand, a lot of the information you get in school comes from experience and from the experiences of the people you work with and are taught by. Sure you can get all that knowledge on your own, but almost certainly not as quickly, and you'd have to be lucky enough to be in the right place at the right time.
Anybody who is worth their salt can guide themselves just as well as a professor with 200+ students to deal with.
Here's your biggest inaccuracy. First of all in the later years of a college education you should have smaller scale relationships with certain professors (typically project/paper advisors or your thesis review committee). Secondly, you may be able to guide yourself, but not "just as well" as somebody who already has experience learning the lessons you're trying to teach yourself. In the right environment you should be able to avoid the rat holes that can slow down your learning process because somebody with experience is looking over your shoulder just enough to keep you on the right path.
Oh, and one more thing (Score:3, Insightful)
I often compare it to being a lawyer (as any analogy, it breaks down, but it's useful to consider). Like lawyers, tech people have a basic skill/knowledge set that is unfamiliar to execs. Like lawyers, we are highly specialized in our training and in applying intellect to solving complex and comprehensive problems. And like lawyers, mistakes can be extremely costly. Unlike lawyers, however, we do not give programers any kind of insight into business structures, concerns or patterns in school. As a result, many developers don't really know where they fit into an organization, how they can partner with other business units, or when to compromise "ideal" for "useful"--i.e. when expediency is required and how to evaluate trade-offs from a comprehensive perspective. That leaves us wandering a mine field with no idea that tap-dancing isn't very wise...
GPA, degrees, et al (Score:5, Insightful)
Second, the "job prospect" value of a degree, GPA, certification, etc, has nothing to do with the quality of the subject matter. It has to do with the fame of the place. A Cisco certification is going to land a network engineer a job, even if they know bugger all about networks but can pass exams without trying.
These two should never be confused. Good scientists, researchers and engineers will remain good, even if they have little or no paperwork. You can identify them because they get good results. Crick and Watson didn't need certifications in genetics to do DNA research, they needed some modelling straws, a few stolen photographs, imagination and phenominal intelligence.
On the other hand, hiring managers and Human Resource divisions aren't equipt to evaluate candidates on practical skills, because they can't be expected to be experts in all relevent fields. They rely on test results, exams and other easily compared data. They have to.
The best "college advice" anyone can get is to learn how to learn (important to actually DO anything) but ALSO focus on the quantifiables (because you'll never get a chance to DO, if nobody believes you CAN).
The day and age where people with actual skills could make their own opportunities has long since passed. There are no "self-made" people out there. Success and failure depend on a twisted mess of trust and codependency in the job markets, COMBINED with actual skill in the field. You need both. (Stupid, but that's the way it is.)
High scores only mean you can do exams of the type you were set. "Multiple Guesswork" exams are common and require no skill or knowledge beyond being able to eliminate the obviously wrong. (In a typical multiple choice exam, you're set 4 possible answers, of which two are often so far out that they're tied to the paper with a bungee cord. By eliminating those, you're guaranteed a score of 50%. If you can eliminate "unlikely" answers, you'll do 75% or better.)
"Good" practical tests of real "real world" cases are rare. Practicals are typically simplistic and free of typical problems. However, those "problems" are often not "noise", but characteristics of the cases in question. So, eliminating them renders the case study meaningless.
eg: Programs that can't run into memory problems, require CPU cycles, or have sync problems with threads, are not real. Everything costs, and programming is about figuring out how to maximise the benefits while staying in the costs - complexity, cycle count, financial expense, RAM, etc. The reason for the bloat in modern programs is that costs are neglected in education and therefore understanding isn't important to get a good test score.
Other examples would be latency-free infinite-bandwidth networks. Or parallel code that doesn't consider Ahmdal's Law. Or microkernel OS' that don't consider the expense of the added layers. Or real-time systems where components are running at such disparate speeds that they cannot function together.
If you don't know why things happen, you can't know what to do about them. Having a bunch of "facts" is merely having a religion - received wisdom with no backup or proof that all too often conflicts with what people actually see.
You've got to be "initiated" in the religion of the job market, if you are ever going to be hired. But you cannot afford to believe in it, if you expect to do more than blindly and robotically follow a set script. Sure, many employers WANT robots,
Re:Good advice... (Score:3, Insightful)
I love my job (control systems engineer).
I work a 40 hour work week. Sometimes 50, sometimes 30, it balances out to 40.
Am I married? Do I have a kid? Own my own place? Not yet, but someday; nothing about my job would prevent me from doing these things.
Find the job you love, and the rest will happen. The American Dream is *not* slaving away doing something you hate so you can own a bigger home than the next guy. At least, it shouldn't be.
Re:Good advice... (Score:3, Insightful)
OTOH, if you can get into an area which requires real analysis, puzzle-solving, thinking and designing, you've got a great programming job and you'll enjoy it.
I'm happy to say that most of my career has been spent in the latter category.
Re:Slashdot anti-intellectualism (Score:5, Insightful)
I think every kid should be forced to do one year of grunt work somewhere before going to college. I don't care if it is Peace Corps, picking up trash along the highway or working a minimum wage slot at the 7-11. I know a bit of 'real world' experience would have helped me focus in class.
I know, I know... There is always a way to game the system and the upper middle class kids won't get their hands dirty. But a trip abroad is a good way to open up closed minds. Maybe that would be a good subsitute. I currenty live in England and it isn't at all uncommon over here for the kids to take a 'gap year' before going to university. It is actually kind of expected and the entrance system is built to handle it.
Just my
Re:College Question (Score:4, Insightful)
I think the answer is "it depends." Some hiring managers might put great stock in the "eliteness" of your school, some may not care at all. Myself, if I were doing any hiring, I admit I would be somewhat impressed by someone who graduated from Stanford or MIT, and might be a bit more tempted to call those folks in to interview. But I certainly wouldn't exclude someone just because they went to North Carolina Central or East Carolina (or, God forbid, UNC-Wilmington) instead.
All said, I think that going to a more prestigious school is more likely to help, than hurt, your career opportunities. So if you are accepted to, and can afford, the more prestigious school, I'd say go for it.
Re:My Advice (Score:3, Insightful)
Hah! Wait until you get out and have to explain away that 2.8 GPA (3.6 in your major and 2.0 in the other crap). Employers and graduate schools are more impressed with GPAs than you might think, at least in my experience. And don't even bother applying for internships with a low GPA, which will make your post-graduation job search a living hell.
I wholeheartedly agree those liberal arts classes are worthless (I even had to take a gym class, WTF?!), but you still need to maintain a decent GPA. Don't slack, even in the useless courses.
Re:Slashdot anti-intellectualism (Score:3, Insightful)
Re:Slashdot anti-intellectualism (Score:3, Insightful)
I and others absolutely did not fit into the mold in college. The crowd we ran with was decidedly counter culture and the kids with the funny hair (us)...
So you did fit into a group, and a fairly solid one that most people have no problem envisioning. It wasn't the "preppy" group, but it was a group nonetheless, and almost certainly displayed the same kind of requirements as the more "mainstream" ones. You may think not, how do you think someone who typically wore Gucci, Prada, and the like would have been accepted into that crowd?
Re:Slashdot anti-intellectualism (Score:3, Insightful)
Yep, it's much better.
My best bet is that some people thrive under guided education, and some people don't.
I know that I really enjoy having a teacher help me along in my learning process. Unless your interests really are very specialized, there usually isn't a dearth of material on a subject, there's a surplus.
As a result, it's very difficult, not only to determine *what* you can learn (already a daunting task to someone like myself, who can be interested in anything) but ways to learn it.
A good professor takes time to find out what their students are really interested in learning, and figure out ways to balance the "must learn" subjects with the "want-to-learn" subjects.
A good professor can collect resources (books, articles, movies, etc.) which at their surface are unconnected and reveal their connections and how they shed further light on the subject being taught.
A good professor can take large complicated ideas which are generally in the realm of the specialist only, and distill them so they can be understood before requiring you to gain the additional knowledge required to understand the ideas fully. A perfect case in point was the "Quantum Physics for Poets"-type course I once took. It required only pre-Calculus math and did not delve as deeply into the nature of Quantum Physics as a traditional class might, but it still covered the subject in an interesting enough way that I feel I could, if I wanted to, delve more deeply into the subject without getting seriously confused.
There are many people who find they learn subjects perfectly well on their own. I'm dead certain that this is the case. There are no doubt many experts in specialized subjects who taught themselves the subject almost entirely on their own.
There are other people who welcome guidance and support. I'm one of them. And I don't feel that I'm any worse for being that way. I can learn just fine on my own -- once I've determined what I want to learn and how -- but if I don't have those two questions answered fully, a teacher is invaluable.
I guess my take is that sometimes, especially when starting out in a subject, hand holding can be very useful. A good teacher will no when they are guiding, and when they are forcing.
As usual, a mixed bag (Score:5, Insightful)
When I'm interviewing a recent college grad, though, I don't look at GPA as much as he does. Too often, high GPA indicates that a student figured out what the professor wanted to hear, and said it in the way the professor wanted to hear it. This is even true in the hard sciences. While you won't get a high GPA without having some grasp of the material, the difference between a 3.0 and a 4.0 is often how much you pander to the professor or TA.
But the seven points of advice are right on, especially "Learn to write" and "Get a good internship". To these, I would add "do something career-related outside your courseload".
There are many recent CS grads who did well in coursework, can write acceptably, and don't stink up the interview. I want one who has enough drive and intellectual curiosity to do something beyond what's required.
If you've got an industry-related blog [blogspot.com] or website [windev.org], or you've written a couple of programs out of curiosity or for your own use, then you have a major advantage over your fellow students at interview time, at least if I'm doing the interviewing.
Re:Slashdot anti-intellectualism (Score:3, Insightful)
That's sort of like saying, "Yes, Suzy *is* a diseased skank, but it's very easy to get into bed with her."
QED, IMO.
Re:Disagree on two points: (Score:2, Insightful)
Actually, if you want to take matters into your own hands and start a business, you will need micro. I took macro, and while I understand why daily newspaper a lot better, I still wish I knew the business basics that are covered in every micro class. Sure, I can read "microeconomics in 30 seconds" or "microeconomics for idiots," but those are a poor substitute for a good teacher, a good text, and good assignments.
Re:YES (Score:5, Insightful)
-b
Re:Slashdot anti-intellectualism (Score:1, Insightful)
Not really. You are just an idiot
Some of us ENJOY learning, liked going to college, and will continue to try and better ourselves (through education and other means) for the rest of our lives.
Colleges tend to pull a great deal of things together in one place that make learning easier for most people than "doing it yourself" would be.
Can you learn without being in a university? Sure you can.
Can you go to college and NOT learn? Sure you can.
Should you? Not if you value the money you spent on getting there in the first place.
Stop whining about the crappy classes.
Go and talk with the professors that have a real passion, and learn from them. Many really enjoy teaching and want to help you.
Don't dwell on the freshman classes, or ones with large attendance. Instead immerse yourself in the learning that is possibble in an environment where a great deal of educated people are working together. If all the classes suck, you picked the wrong school.
The opportunities are there, you are just being pissy and are causing yourself to miss your best opportunity to learn.
while (*s++ = *t++); (Score:5, Insightful)
Probably the most talented debugger I've ever known is not coincidentally a somewhat poor programmer. His ability to understand complexity and obfuscation is second-to-none, but those same skills work against him when he writes his own code, because what he sees as "resonable complexity" ends up resulting in unmaintainable code for the rest of the programmers.
Knowing what happens under the hood is a good thing. Writing code like you're under the hood isn't.
Re:Slashdot anti-intellectualism (Score:3, Insightful)
I suggest you purchase the ARRL's Radio Amateur's Handbook to go along with your interest in electronics, but read those magazines when you can, especially the application notes. Maybe you can find EDN, Electronic's Design and maybe other technical publications. Get a catalog from MP Jones, and have fun!
I agree (Score:4, Insightful)
And I don't agree about his C thing either. If you really want to know how the machine works, why not learn directly assembly instead? And when you actually want to produce something, switch to Python
Good, although brief article (Score:2, Insightful)
Re:Joel's Remarks on Grad School (Score:3, Insightful)
I also was a little put off by his discussion of that class--it sounded to me like he didn't really have a good understanding of how proofs work, and, more generally, theoretical mathematics and computer science work.
But now is not then. (Score:3, Insightful)
Actually caring about what you're doing, be it your work, or you school, can make a significant difference in how well you do it.
My former boss's roommate said that he was glad that he didn't go straight to college after high school -- because it gave him a chance to appreciate how important the degree was, and if he had gone straight to college, he probably would have spent all of his time partying, and have failed most of his classes.
Re:Joel buys into "love your work" brainwashing (Score:1, Insightful)
Slashdot anti-slashdotism (Score:4, Insightful)
Amazing.
Re:Slashdot anti-intellectualism (Score:4, Insightful)
You didn't fail because "we haven't learned that yet" . You failed because you were given a project with defined objectives and your work product did not meet the design criteria. It works like that in the real world too. Perhaps there was more than one lesson in there?
Re:Slashdot anti-intellectualism (Score:3, Insightful)
A fine sentiment. However, you confuse the average college experience with "guided education". Do you really claim to ignore the faults of teaching things the current American college way?
I was immensely disappointed in the so-called Engineering Physics program at UMass/Boston. It had such potential, and it wasted it all on what could only be called "continuing ed". From that experience and other anecdotes, I can only have become the college protester (i.e. I actively opposed the collegiate system of education) I am today since I am honest about all the promises that colleges make yet don't deliver on.
The average college experience really is just a mind-control program for getting you to sit, regurgitate, and shut the fuck up otherwise. Independent thought is highly disruptive to established orders
I'm not the only one who has noticed this "little problem" with the gargantuan disappointment that American colleges provide.
I'm also not alone in noticing how functional that practical and self-directed education can be. This means that a library and Internet in the hands of a motivated man are every bit as good as a college degree.
The problem with this attitude on Slashdot is the presence of all the people with degrees who have to somehow (and falsely) justify having spent all that money and time acquiring them. Methinks thou doth protest too much, alla youse.
Re:Slashdot anti-intellectualism (Score:2, Insightful)
TRUE. Very True. The IT industry does not need smart alecks who think they can do a "better" design of a 1.3 million LoC Asset Banking System and incorporate some funky GUI with Easter eggs inside it.
No wonder the prof. failed him. First Learn to draw INSIDE the box before thinking outside it.
Better Advice For Programmers... (Score:2, Insightful)
Re:while (*s++ = *t++); (Score:3, Insightful)
Secondly there was nothing wrong with strncpy all along.
Thirdly I've always hated the "testing the result of an operator =" thing because it always looks like a operator == gone wrong.
Fourth, it has no comments. The fact that we're sitting here debating what it does is a problem in itself.
Fifth, if it's some wanker showing off because they can write l33t fast C code they need beating over the head with a copy of an Altivec book. Or a SIMD book. Maybe even a DMA book.
Do I need to go on?
Dave
An couple of additions (Score:4, Insightful)
1. Take an introduction to finance
Learn how to read and know the differences in a financial statement including a balance sheet, an income statement, and a cash flow statement. Learn the differences between operating and capital expenses. Learn how the income statement can say you are making a profit, when the cash flow for the period is negative!
Finance (along with the law) are the programming languages for the operating system called business. If you understand them, you can hack them just fine!
2. Take an introduction to business law
Learn what is and isn't a contract. Learn what a tort is. Learn the differences between a patent, a copyright, and a trademark.
The Legal System (for good or for ill) has a tremendous influence on our lives. Being illiterate in the law can result in self-inflicted wounds!
Yours,
Jordan
Re:while (*s++ = *t++); (Score:3, Insightful)
And if you can't explain why you should never use this to copy a string, then I don't want you coding at my company. (Hint: What if t isn't null terminated, or len(t) > memory allocated to a?)
And if you think strncpy(2) is the solution, I still don't want you coding at my company. (Hint: If char a[256], *b = "string longer than 256 bytes," then strncpy(a,b,256) will leave a non-null-terminated.)
Re:Good advice... (Score:3, Insightful)
An excellent question! What indeed? There are a lot of reasons not to send work overseas, but I'll just touch on two here: transaction costs and knowledge theory.
One of the reasons that companies exist is to reduce transaction costs in achieving a goal. If we assume the goal here is to develop software to a particular set of requirements, then one of the transaction costs involved in getting to that goal is the requirements discovery and specification. It's my experience that discovering and specifying requirements is a job that requires a lot of face-to-face interactions, meetings, document revisions, more meetings,
The second reason it doesn't often make sense to send development work overseas is based on the knowledge theory of the firm. In a nutshell knowledge theory asserts that firms exist to facilitate sharing knoweledge in a trusted environment. Software development is really just the embodiment of specific knowledge into an automation process. It's tough to share knowledge with someone who's working when you want to be sleeping and vice versa. It's even tougher to do it when you've got to rely largely on electronic communication (instead of meat-space interaction) to transfer this knowledge from your head into the software via the outsource company.
Both transaction costs and problems with knowledge transfer (really just another transaction cost if you want to look at it broadly) are barriers to moving this kind of work overseas.
Re:I agree. (Score:2, Insightful)
A college degree is supposed to represent something, namely an "education". Ideally, an "educated person" should be a well-rounded individual, with a solid understanding of civilization and how it came to be that way. This includes a basic understanding of a wide variety of subjects, from economics to biology to history to mathematics, with no major "holes" in this liberal arts foundation. An educated person should have a well-developed ability to think critically, and should have established a solid rapport with the innate self-education apparatus that all humans are born with.
Learning how to self-educate is the most important lesson of college, because that skill will be valuable throughout life. It involves using whatever resources you can get your hands on. Those might be classes, books, newspaper articles, people, the Internet(s), trial-and-error experiences, etc. Each resource has a lesson to teach.
In today's world, however, more people go to college than ever before, and as a result, the degree has been "dumbed down" to the point where it no longer means that a person is "educated".
A college degree is not (and never has been) the one true path to the end result of being "educated". There are many other ways to get there, and this is what people forget in our metrics-obsessed society.
That was my main point.
Advice for who? (Score:1, Insightful)
The advice is almost always obvious "Get a good GPA!" but never practical "if you didn't get a so-good GPA, here is how to compensate..." It is almost always written by people who were lucky in life (money, connections, looks). It is almost always not applicable to people like me.
So here is my four 2.079 Yen.
Advice for people seeking jobs out of college is like advice on losing weight. It is everywhere, it is always the same, yet people keep packaging it in different ways. If you are getting career advice from Joel, then you are not utilizing your university to it's fullest. Shame on you! What are you paying tuition for?
If you want advice about getting good jobs when you graduate, talk to your professors who teach courses in subjects you wish to pursue in your career. Ask them. And do it your freshman or sophomore year.
The only people who start asking about how important a GPA is are those who are struggling with their GPA. My advice? Get as high a GPA as you can. That's it. Enough said.
In my experience, people who are interviewing you for the job are just as likely to be dumber than you as they are to be smarter than you. Don't assume anything on their behalf. And act like an adult. When I was in boot camp, I told my mother that if we had only listened to our mothers, boot camp would be half as long. Why? Because they taught us things like stand up straight, look people in the eye, comb your hair, don't walk and eat at the same time, tuck in your shirt, etc. etc. The same applies to interviews. Sounds trivial, doesn't it? You would be amazed...
Realize that a university is a social institution, with all that that implies. Our society places certain assumptions on a diploma and the people who carry them. (Whether those assumptions are valid or not is irrelevant to your situation, but knowing what those assumptions are, is.) It cuts down on the "get to know me" process. The lower-tier school you go to, the more you have to prove yourself. The less contacts you have, the more you have to prove yourself. The less work experience you have, the more you have to prove yourself. This is not a whine or a fatal blow to your opportunities. It is a fact.
Which leads me to my last piece of advice. Depend on nobody for your success but yourself. This does not mean to burn all bridges and go it alone. Use every opportunity (people/places/thing) that you have! But always remember, in the end, you alone will get you to where you want to go. If a door slams shut, go to the next one. Never give up, never give in, and always believe in yourself. Sounds trivial, doesn't it? You would be amazed...