"Things I learned about Software while NOT in College" by Scott Reynolds
As usual, Scott creates a great topic and has great insights:
- People talk a better game than they play - don't get too caught up in the latest and greatest, or if you don't speak patterns, or if you never programmed a C64, because at the end of the day everyone does what they need to do to keep getting paid, everyone has written and continues to write hacky code, and everyone could stand to learn a new trick or two.
- When you catch yourself saying "this will only be a problem if x happens, but the likelyhood of x happening is so low we'll never see it" you're gonna want to go ahead and reevaluate what you just did, and do it better. I once said that about some number generating scheme that was hacked together. Day ONE of the system going live there was a collision.
- The next version of technology x is going to make what you are currently doing easier/faster/more secure/more elegant. The release after that will do it again, and the effect is multiplicative rather than additive. See: Generics. You have a job to do today, so do it with the tools available. Waiting is folly."
With respect to #1, I agree but not exactly. I didn't start out as a Computer Science major. By the time I took any > entry level courses, I had already earned my Master's degree and was about 8 years older than most of my counterparts. I did more growing up in my 4 years in college than I did all of my life before that (a pattern which seems to repeat itself) so I had a slightly different perspective. When I started, I spotted this guy who was about 10 years older than me who was on the 20 year plan. He was really strange looking with poor hygeine and drove a Pacer. But he had a killer notebook (and this was when that was impressive) and talked a killer game. I was in a group with him and saw that no matter what people recommended, he'd start talking about Assembly language stuff that negated it. He made me very suspicious. When it was time for him to do his part, he'd never have his stuff done and have some speil about reading registers and how he spotted issues with the compiler and blah blah blah. He then took it upon himself to do all this crap no one ever mentioned and that we weren't asked to do. When we called him on it, he would get all arrogant and talk about how we couldn't see the big picture and didn't get it or whatever. The next semster I had a course again with him, this time instead of C++ we were using VB and Java. I remember the last semester he was constantly berating Java and VB talking about how they weren't real languages. Someone challenged him and he said he trashed them b/c he knew them. Well, I knew VBA from my work in marketing automating excel for statistical modelling. And he knew squat. That's when I realized he was completely full of it - I mean, if you can't learn VB please don't tell me you are some uber genius programmer.
So I actually learned Lesson 1 in school - which is that with very few exceptions, the more people talk the less they know. I've worked and known more than a handful of people who played the "eccentric genius' role and people would always say "People that smart are always weird". They would also say "He's really good in X and his problem is he's so smart and knows theory so well, he gets caught up in it". X was always something like some obscure graphics API (something no one else knew so no one could call him on). Any time I hear that someone is "Ivory Tower" or "Knows the textbook answer to everything but has no real world experience" my BS detector goes off - the only text book knowledge these clowns ever have is that they know how to use big words no one knows about or cares about. Similarly, when I hear "Well, when people are that smart they are always strange like him' the same thing kicks in. Sure, there are a lot of weird smart people. But there's way more weird dumb people and plenty of really smart people aren't weird in any real sense. Sure, a little different sometimes but in general, the uberwierd genius is usually just uberweird and only genius about pullng the wool over others eyes. Another tipoff is folks that "Used" to be some bigshot and used to work on 30000 Server clusters or whatever but are doing UI work on ASP.NET and don't know CSS or HTML - or some crap like that. How many really smart people who are good at what they do do you know who moved down dramatically in IT over time? Hmmmm? Yah, me neither. I don't mean to say everyone who had a better job at some point is full of it, but what I mean is the type who has done all sorts of amazing things in the past but who is painfully unimpressive now. The type that 'used to make 200k a year' but now settles for 60k doing front end work on web sites. At the end of the day, it's all about what you've done lately. It's all about what you can do now. And when you see a huge mismatch between history and the present, it's because someone is truth challenged. Talk is cheap, especially in this arena.