"Things I learned about Software while NOT in College" by Scott Reynolds

Published 23 July 7 6:51 AM | William

As usual, Scott creates a great topic and has great insights:

 "
  1. 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.
  2. 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.
  3. 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.

Comments

# Andy said on August 1, 2007 1:41 PM:

In school:

1.) Whether something is correct or incorrect depends on the instructors interpretation of the subject matter not the actual correct answer.

2.) Professors base a lot of things on their opinions not any basis in fact.

3.) Math professors tend to be a lot more grounded and without bias then say, English Lit professors.

After school and after more than 10 years in the GIS, CAD and embedded systems industry:

1.) You will use every piece of Geometry, Trig, and Calculus you ever learned in school and still need to learn more.

2.) You will need to use every trick you ever learned for speeding up calculations in school because geometry is hard and if you don't know this stuff your software can literally take days to execute instead of seconds.

3.) Understanding how computers work is essential, especially where it concerns floating and fixed point math.

4.) You will use C, C++, and Assembler nearly every day of your career so you really need to understand them.

5.) Walk through every piece of a new systems design with as many people as you can find and be ready to listen to criticism because mistakes you don't fix at the design stage will become incredibly difficult to fix once the system has been coded.

6.) Developers who work on other types of systems such as medical, financial, web, etc. are never going to get what you do and won't get why you think certain things like pointers are important for developers to know. But you can learn a ton from them on how to design good user interfaces.

7.) Things developers think are intuitive are generally completely opposite from what a user will think is intuitive.

8.) Code like you will have to maintain it after totally forgetting what it does and how it does it. Because you will.

9.) You will very likely end up going back to school to take more math even if you minored in it.

10.) Keep the contact names and numbers of your math professors it can be a life saver.

# Bill said on August 8, 2007 4:20 PM:

Not surprisingly, I agree 100% with each of your comments Andy - great minds think alike

Search

This Blog

Tags

Community

Archives

News

  • William G Ryan William Ryan Bill Ryan W.G. Ryan Charles Mark Carroll Charles M Carroll
    My Blog Juice Microsoft MVP
    Bill Ryan W.G. Ryan William Ryan
    Cuckooz' MySpace Page View Bill Ryan's profile on LinkedIn
    My Profile on Twitter
    Please note that this is my personal blog and the opinions expressed are my own. Also, comment moderation is about one of the least important things in my life so please keep that in mind. I can't vouch for the authenticity of any of the posters so please don't hold me accountable. And whatever you do, don't pretend to be Noted Option Strict Off expert and AspFriend Charles Mark Carroll when you post. Doing so will lead him to become apoplectic and write absurd accusatory posts about me that are as coherent and thought out as they are factually correct. He does a stellar job proving his reputation is well deserved and he doesn't need any help from you making himself look foolish. If I have to listen to him banging his spoon off of his high chair one more time, I'm going to burst into flames so please don't make that happen!

    My other sites

    Cool Stuff

    Book Stuff

    Security

    ORM

    Data Access

    Funny Stuff

    Compact Framework Stuff

    Web Casts

    My KnowledgeBase Articles

    My MVP Profile

    Design Patterns

    Performance

    Debugging

    Remoting

    My Fellow Authors

    My Books

    LINQ

    Misc

    Speech

    Syndication

    Email Notifications