tag:blogger.com,1999:blog-8675954.post116180087287905269..comments2023-08-11T07:21:18.064-04:00Comments on D for Effort: Ass-First ProgrammingZachhttp://www.blogger.com/profile/00997884321890742030noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-8675954.post-1161924239615550232006-10-27T00:43:00.000-04:002006-10-27T00:43:00.000-04:00Let me tell you about the place I work. Names hav...Let me tell you about the place I work. Names have been changed to protect anonymity.<BR/><BR/>Joe sits next to me. Joe started at Microsoft many years ago as a tester; within a couple of years he was a developer, and by the time he left he was an architect. After 20 years in the industry, he still wants to talk about and solve computer science problems in his free time. He took a year off from Microsoft and... wrote code, on his own, for fun.<BR/><BR/>Fred, who sits next to Joe, started at Microsoft about 5 years before Joe (which is going *way* back). Fred was 19 when he started at Microsoft; he went there from Atari. Fred can hang with anyone on any computer science topic, from game theory to networking to low-level Unix architecture.<BR/><BR/>Neither Joe nor Fred has a CS degree; indeed neither of them has an undergraduate degree, period.<BR/><BR/>Every concept Steve mentions (btw, Steve -- yeah, his real name -- sits a couple offices down from us) is absolutely necessary to being a kick-ass programmer. But they aren't sufficient: you also have to be truly fascinated with programming (and it sounds like you are). Want to learn pointer arithmetic? Learn C; it's the first thing you'll need to grasp. Want to learn to write a compiler? Write one.<BR/><BR/>I've found the best thing I've done to increase my programming chops is being around people who are smarter than me and getting in a little over my head on projects. That way, your *job* is to learn all this cool stuff -- which doesn't make it less fun, it just means you get to spend more time doing it.<BR/><BR/>I don't know how easy it is to find projects like this in web development, but I'll bet it's possible. Maybe you've got a site which needs to be faster -- improving perf is a great way to learn all sorts of deep CS theories. Or hell, maybe you've got a bunch of JavaScript on a page and it's slow on your friend's crappy old circa 1999 computer -- figure out how to make the page itself faster.<BR/><BR/>Anyway, I dunno how useful that is, but I hope it's some encouragement. There are plenty of *awesome* programmers (yep, with jobs at Google or Amazon or Microsoft) who don't have rock-star CS pedigrees.Moishehttps://www.blogger.com/profile/17017454778237716869noreply@blogger.com