How I Got Started in Programming
Dave tagged me in Michael Eaton's software development meme that's being floating around. So here we go ...
How old were you when you started programming?
About 20. I know most folks started at a much younger age but I didn't get into programming until I went off to college. Before that I just used computers to play video games. Choplifter for the Apple II is the first one that I can remember, but id software's Doom is the one I obsessed over. With a weapons like the BFG and Chainsaw what's not to love?
How did you get started in programming?
My wife Katie (girlfriend at the time) made me. I was just entering my third year in college and my major was university studies. At that point college really wasn't going too well for me. I failed an entry level Trig class (no joke, I went the first day and then never went again. I had planned on dropping it but completely forgot. So when the end of the semester came around I got an F). And I remember her saying that I should figure out what I was going to do. Good idea Katie ;)
So I talked to my advisor who recommended a career in technology. Sounded like fun so I enrolled in a bunch of computer courses and went on from there. It was an uphill battle because I wanted to complete all of my CompSci courses in 4 semesters so I could save a few bucks. I made it through - and even went back for more a few years later.
What was your first language?
Java - That was the 101 programming class at NDSU. Yep - that's right North Dakota State University. And before you ask, yes we had electricity and no, Mount Rushmore is in South Dakota, not North Dakota.
What was the first real program you wrote?
The first real program I wrote was in assembler for the Motorola 68000. All it did was spin a CD, but I thought it was pretty cool. Before that I had written 17 different varieties of Hello World in my programming 101 course and I needed to see something that connected programming with doing something useful. I know I should have picked up on all of the other stuff that was going on (i.e. The Internet), but I didn't. For me that spinning CD flipped the proverbial switch - I was pretty well hooked after that.
What languages have you used since?
The usual suspects: C#, Java, Perl, VB, C++ and JavaScript.
What was your first professional programming gig?
I interned with Microsoft and then somehow convinced them into giving me a full-time job. It was very cool and I learned a ton. For some reason I was never invited to BillG's intern party, but I don't hold too much of a grudge.
If you knew then what you know now?
I would like to think I would still do it, but there is part of me that is not absolutely sure. Programming is fun, but I find that doing it for money is less fun. I enjoy the challenge of solving problems, but I dislike some of the other stuff that comes along when doing it professionally. I am not one of those people that insist they aren't doing it for the paycheck. I certainly am. I blog for fun, but work to pay the bills. Sad but true.
What is the one thing you would tell new developers?
No way I can stop at just one ...
- Check your ego at the door. True for just about every situation, but especially true about programming
- Not everyone cares about writing great software. Just try to work around them
- Don't write code that you can get for free. Odds are you aren't the first joker to solve whatever problem it is you are working on. Get in the habit of asking Google - she knows a lot of stuff. Most of what you find will not be cut and paste, but at least you will get a feel for how others have solved the problem
- Don't get all worked up when someone finds a bug in a bit of code you wrote. It's gonna happen. Focus on understanding why the bug occurred and how to minimize the chances of it happening again. Stuff like unit testing and code reviews seem to work well ;)
- Defect free software (pretend for a second it actually exists) does not guarantee a successful project
- Understand what the opportunity cost of feature XYZ means to your project. If you push it off to next release how many more bugs could you fix? What adds more value? Sometimes the best features are the ones that aren't implemented
- Look out for yourself. The company you work for is a business that needs to make money to survive. If your boss has to chose between cutting himself or you guess who he is going to choose?
- Have a good understanding of the difference between a symptom and a problem. Focus your efforts on fixing the problems
- Be careful of people who think primarily in absolutes (i.e. never use Reflection, always disable ViewState, etc...). Software is hardly ever black and white
I hope I didn't get to preachy here, but these are just a handful of the things I have learned over the years. These are the things I wish someone had told me told me early on in my career.
What’s the most fun you’ve ever had … programming?
Easy - creating this blog is by far the most fun I have had programming. I sort of view my blog as an on-going software project. Each post has its own topic and scope, I have a backlog of topics that I have prioritized based on my interests, and each post comes with a bit of documentation, a download as well as a live demo. Its great, and over the last year I have managed to 'ship' over 100 features/posts. What a blast!
Tag, You're It!
Well, thanks Dave. It is fun to think back on my live in software over the past ten years. And thank you Michael for starting the chain, its makes for a nice break to learn a little bit more about some of my favorite bloggers.
I am tagging Simone Chiaretta and Janko Jovanovic
Comments
NDSU, eh? Did you work at MS in Fargo or somewhere else? Love the blog BTW :)
Hi, Matt. You have a pretty similar background to me. I think im going to email a link of this to my boss as im always asked to chuck features into our cms which i know will escalate and become unmaintainable. "Sometimes the best features are the ones that arent implemented" - think i might borrow/steal that line :).
@Joel -
Yep - I worked for MSFTs Fargo campus. I was actually hired by Great Plains, but between me accepting the offer and the first day of work Microsoft had acquired GP.
@Lee -
Yea, I think sometimes lessons like that one have to be experienced first hand before you can truely understand it. Its funny, but most of the challenges I face in developing software arent at all related to technology - not really what I had expected.
I appreciate your honesty. thank you:)
Ive seen these posts all over the place lately, and most say the same thing (programming since i could crawl, love every minute, no complaints). There is value in loving your craft, but the honesty of why you program and the lessions you learned I find more practicle. again, thank you.
OMG, that image above brings back memories! I always thought it was weird seeing that pentagram in the game too...
Anyways, when I was in college, I was originally going to be a physical therapist. That idea looked good on paper, but it just want my passion, and it only took a few classes to realize that. My creative side kept peeking through the door pushing me towards something more "creative". At the same time, I was just beginning to fool around with the internet (dial-up). I remember buying HotDog software for creating websites and from there on, I was hooked. Here was something that satisfied my technical AND creative cravings!
I feel so fortunate being able to make a generous living doing something I really enjoy doing.
Matt, thanks for sharing your story.
Great stuff, Matt. I frequently find your work and tips helpful (link to your blog and tips in C# comments - credit where credit is due =) ). Great tips also - certainly very valuable.
Hey Matt,
DOOM 4 is under development ^_^.
I love these stories! Ive picked up a few along the way from the blogs I read.
...and dont fret on the trig. Things got REALLY rough for me after Calculus 1 and it was the help of my smart friends that helped me eek by. Oddly enough I did well in linear algebra. Something about those matrices boxes just made me giddy with all sorts of fun.
Ive always felt like a "bad programmer" because math really stunk, that and my 400 level engineering classes got rough 8^D
Keep doin what youre doing! Im still reading! 8^D
Thanks for sharing your story! I seen that Dave tagged you last week and was hoping youd write up a post. North Dakota, eh? Im in Nebraska, we have electricity AND running water here, too ;)
@Jason -
No problem.
@Matt Brown -
Ah - another fellow Doomer. I remember geeking it up on a Friday nights by hanging blankets over my bedroom windows to keep out the light and unplugging all of the phone jacks so no one would interrupt my deathmatch sessions. Life was great.
Well, I am have no idea if you were any good at physical therapy but your site looks pretty sweet ;)
@Simon -
Thanks Simon.
@Joseph Ghassan -
Nice - I might have to pick that up. If for nostalgic reasons only ...
@Sean -
Me too, it’s great hearing how others ended up in technology. And looking back on college – yea I should have paid more attention in Math classes, but I am glad I was listening in Psychology and Sociology – cuz I use those skills just as much as the Math.
@Josh -
Hi Josh. I was actually back vacationing in ND/MN last week and didnt see Daves post until I got back. I was hoping he didnt think I was blowing him off.
Its funny all of the things some of the folks in the south have to say about ND. Stuff like
- thinking it snows year round
- not differentiating between North Dakota and South Dakota and just referring to them both as Dakota
- thinking ND has mountains
What? You dont read my blog daily while youre on vacation?!
Thats an interesting path you took. It just goes to show there is a such thing as natural aptitude for this stuff, independent of experience.
Isnt the geographical center of the continent in ND? Mount Rushmores got nothing on that!
Hi Matt,
this is a nice article like your programming codes. Now we only miss your picture :). Put somewhere and we can put a face on the code... hihihihi...just kidding.
thanks for sharing your ideas and thoughts with us!
-cheers,
mesut
@Dave -
Jeez Dave, you are making me blush.
@mesut demir -
I am going to do an about page one of these years. When I do I will make sure to include a photo. Until then, you can just imagine me as a better looking version of Brad Pitt.
thanks Matt..
Matt, Ive been pouring over your blog most of the day and was surprised to see you went to NDSU. Shows how small the world is considering I live in Fargo,ND. Thanks for all the great articles. Are their any .net groups in fargo? I am just starting out and would like to learn as much as I can.
Hi Matt,
I've been reading your blog for the ages but this is the first time I am leaving you a comment. I just wanted to ask you why some guys, like you, work for Microsoft but some others who have started programming with you (I mean myself!) still have tons of problems in writing simple programs? :-)
May you let us know what made you a great developer?
This is a nice article like your programming codes. Thanks for sharing your ideas and thoughts with us.
"Not everyone cares about writing great software. Just try to work around them"
I think I will be working around them for the rest of my software career, no other choice, specially when 90% of the so-called "Software Engineers" in my country are plagued with this disease.
Even the project managers could not care any less. But they are not to be blamed. Coz, after all they dont know a thing about technology!
Nevertheless, awesome blog you have here.
Thanks for all the great knowledge your share with us :)