13 ms·
How to Level Up as a Developer
- jswinghammer 15y agoYou can also decide to be less ignorant today than you were yesterday and just let that work itself out. If that's your attitude and you stick with it you'll do well. I interviewed one guy recently who seemed smart and if he stopped playing Warhammer and Starcraft 2 he might have a decent career. As it stands now he did terrible in the interview and showed no signs of being interested in not being ignorant. If he picked up a book or two he might be good.
- bartonfink 15y agoI agree. I work with a fellow who is intelligent, but has absolutely zero interest in learning technology on his own time. He's a decent Java guy who came from a C++ background, but the only area he stands out in (Swing development) isn't terribly marketable. He has no web experience, no knowledge of non-OO programming and his CS degree is far enough in the past that he has retained only limited knowledge of more interesting topics (e.g. compilers, AI, math coursework) that would give him a frame of reference to rebuild from. The sad thing is that he's going on job interviews right now, and is having about as little luck as you might expect. He just got told by one interviewer that he's almost at the point of no return where his experience is so stale, it's going to be hard to transfer out to another job. From his perspective, he's caught between a rock and a hard place - because he's stuck in a job that he doesn't like, but that same job is keeping him from getting another. It would be so easy for him to jump out of this trap simply by dedicating a couple of hours a day to reading about things outside his experience. However, based on our conversations I doubt that's going to happen. It's especially disturbing because he's otherwise an intelligent guy, but he believes that his job is responsible for giving him marketable skills, and this is how people get stuck in jobs they don't like. Don't be that guy. Tolle, lege!
- pavel_lishin 15y agoIf you wanted to be a white knight, you could invite him to work with you on a project in a language or domain unfamiliar to him - it might force him to catch up. Or he could just go back to doing whatever.
- wallflower 15y agoI would argue that I have learned more about critical thinking and problem analysis and iteration by taking up Salsa dancing than by coding more. Guys and girls, you don't have to sit in front of a terminal to become a better developer. The OP's achievement list is daunting, and I wonder if time might be better invested in life rather than coding. The beauty of life is that success is not transitive (e.g. being good at coding does not make you good at graphic design). But being better at graphic design or anything outside coding (try CrossFit, for example) may make you a happier coder.
- jkkramer 15y agoAfter 5+ years in the salsa scene, most of the best male social dancers I've met work in a technical field -- software, engineering, etc. It requires tremendous mental acuity. EDIT: I should add that it does not come naturally most of the time. It still requires hard (physical) work and persistence.
- toumhi 15y agoBeing myself a software developer and a (half) serious salsa dancer, I find that intriguing. I have also noticed there are quite some technical people in the salsa scene, but I thought most did it out of the need of meeting people, after spending all day at work. Salsa dancing requires some coordination, thinking a few steps ahead etc, but tremendous mental acuity? I think you might get a bit far here :-) But hey, I would also second taking up salsa classes but mostly because it's tons of funs and a very healthy hobby that makes you meet tons of people. All good!
- wallflower 15y agoAwesome to see some fellow salseros here! I argue that Salsa challenges your mental acuity because there are not many things more thrilling and challenging than dancing with a beautiful salsera while trying to remember some moves, track potential collisions with other dancers (always protect the follower), keep track of the beat, smile, do not think, and (for extra credit) keep count of the measures for breaks usually happen on multiples of eight measures (8/16/24) -and- if you can anticipate the breaks -that is what makes women believe you can dance. Yes, mentally challenging but lot more fun than writing unit tests under the fluorescent day sun. And I know a lot of engineers and programmers who dance, too. If you are even thinking of getting started with Salsa or have taken a few classes but have gotten discouraged, here is my favorite article: "The Magic of Time: The last one standing" http://www.unlikelysalsero.com/2007/08/magic-of-time-last-one-standing.html http://www.unlikelysalsero.com/2007/08/magic-of-time-last-on...
- sun123 15y agoI don't think anyone would have time to complete such a big list. Is it worthwhile anyway?
- fogus 15y agoThere's nothing to it but to do it. Seriously, there are many developers who have lives, kids, sick relatives, etc. who are able to accomplish the equivalent of this list and more. It will take a very long time to get through this list, but you should always view your skills as a long-term investment. The best in any field realize that increased skill comes with pain and sacrifice. If you were to perform every action on the OP's lists you would be a better programmer. It's up to you to decide just how much better you'll be and if that gain is worth the cost. No one else can answer that for you.
- 3pt14159 15y agoI don't think his point is that you need to complete every single one, just like you don't need to get every single achievement in TF2 to be considered a master. His point is that you can make things more incremental and if your goal is to steadily become more and more cognizant of everything software then you can complete these badges one at a time.
- bhousel 15y agoMost people will never run a 5 minute mile either (the author's analogy, not mine). I was all ready to comment about how it wasn't a very fair comparison, but then I thought about it more and realized that I actually do agree with the analogy. My belief (and I realize this is probably a minority opinion) is that most people can never be great developers - it requires some combination of hard work and just "getting it".
- ThePawnBreak 15y ago"Getting it" is usually the result of hard work in most cases.
- bhousel 15y ago
- plamenv 15y agoI'm pretty sure that most the programmers, who we consider to be at the top of the professional ladder, won't be able to check off even 30% of those "achievements".
- rhizome 15y agoMy impression is that people with CS degrees have done at least half of them through coursework.
- sj11 15y agoIf not through the coursework, through some participation in some open source work, he does achieve a part of the list during his university days.
- dpark 15y agoStick the word "nontrivial" on the rest of the achievements and that number will drop rapidly. CS students do a lot of these things, but often not with much depth.
- treetrouble 15y agoLists like this are designed to discourage developers, not help them "level up".
- Jun8 15y agoAnother nice quantitative measure may the number of questions you answered and got accepted in SO in your selected area of expertise.
- patio11 15y agoGrind up on apps which solve business problems in underserved markets. The gold drops are better, the mobs easier to kill, and you'll get ganked less than in the hostile PVP zone of Stuff For Poor Twenty-something Men. Your support inbox may end up looking like Barrens chat; this is normal. A note with regards to specs: you may be tempted to dump all your points into the Programming tree. Don't. It gets nerfed every few years anyhow, and respec costs will be murderous. Instead, spread some points into Soft Skills and Domain Expertise. Get the ult in Domain Expertise and you'll melt your competitors' faces regardless of their programming ability on virtually any raid except Next Google. (P.S. Expected rewards per hour on that raid are terrible, since everyone wipes. If you're good enough to do it you could AFK your way through any number of raids, pick one of them instead.) Many developers get deeply into debates over who has the best class. "My class is better than your class" doesn't kill mobs, no matter how many times you repeat it. Improving one's grinding skill can improve gold per hour marginally, but understanding the economic meta-game has a much, much better ROI.
- dman 15y agoAlso hone your communication skills until they are as razor sharp as the post above.
- bhousel 15y agoIs that really you, or are you outsourcing your HN comments now? Just saying, it doesn't really sound like you.
- JshWright 15y agoYou don't think he would have a little fun with the "leveling up" concept? Have you seen this video? http://blip.tv/business-of-software/patrick-mckenzie-marketing-to-minorities-4951666 http://blip.tv/business-of-software/patrick-mckenzie-marketi...
- patio11 15y agoIt's mostly a joke playing on the years of my life wasted in WoW, except I'm totally not joking about anything I said.
- perlgeek 15y agoAlso important: stop doing stupid shit. http://jinfiesto.posterous.com/how-to-seem-good-at-everything-stop-doing-stu http://jinfiesto.posterous.com/how-to-seem-good-at-everythin...
- dcotter 15y agoI totally agree. Personally, I've been using checklists. I use them to remind myself to put good architecture in place. I use them to remind myself to check for common bugs (calling functions or methods of null objects, forgetting to update the database schema when I update the model, etc). I use them to remind myself to go ahead and add the sorts of features that make a new feature more complete (email alerts, audit trails, reporting, etc). It may be a basic step, but it makes the development and testing go much more smoothly, and in my opinion, most web devs would become better developers faster by boning up on the basics than by learning more advanced subjects like algorithms and functional programming.
- sunchild 15y agoKatas are such an apt analogy for any skill building. Japanese martial arts (in the past 100 years anyway) are a mature game system. The ranking and achievement systems might seem basic from the outside, but there is plenty of nuance (and precedent for gamification) under the surface. I've trained in lots of Japanese martial arts, and the lesson that was drilled into my head is this – mastery of basic skills and sequences is a prerequisite to further progress. For example, unlocking the "hidden achievements" in something as simple as a front punch. I'll never forget the day I noticed that the correct torsion of my body causes my lungs to breathe properly when I use proper form for front punch. Even explaining that phenomenon is next to impossible – it has to be experienced to be learned. I like the OP's list of achievements because it represents a good selection of basic skills. All learners should focus on basic skills. You can't practice your kata too much!
- MrHobbes 15y agoThat is a really great list. I mean a really, really great list, but, and I may be quite wrong about this, I think that it is missing something very important. While a well-rounded computer-science curriculum should enable someone to check off at least half of those bullet points, I do not think that list would actually make someone a great developer. I think that in order for someone to become a great developer, they should have knowledge that enables them to solve really hard problems in efficient ways. They must understand algorithms. I don't mean a surface level understanding either. They must have a deep, familiar, and complete comprehension of algorithms in general. I'm not one to lecture on this subject, because I'm not quite there yet myself, but I really do think that if someone has a mastery of algorithms then the rest of the items on that list become significantly more achievable. They would have a nice, strong general purpose set of tools that they can not only use in their own projects but also (and perhaps more importantly) in examining third party code and libraries as well.
- troels 15y agoA lot of people seem to believe that being strong on algoritms and data structures are important skills for a programmer. Maybe it has to do with the problem domain, but I have a hard time accepting that. I couldn't implement bubble sort from scratch if I tried - let alobe anything actually complicated. I could back in school, but in the 12 years since then, I have not once needed it. Understanding the finer details of coupling and coherence are much more importabt skills in my book. It's not as easy to messure though.
- svdad 15y agoCouldn't agree more. Most of the crap I've seen in the various codebases I've worked on has nothing to do with poorly implemented or understood algorithms, and everything to do with bad designs and ill-conceived architecture. Lack of abstraction, unnecessary coupling, etc. But those skills are not only harder to measure but harder to teach -- you often don't see the problems with a particular design until you've seen it fail in production.
- 15y ago
- cletus 15y agoThis isn't a plan for becoming a better developer. It's an aimless laundry list of all possible things a developer could do (if they had limitless time and no particular goals). It kinda reminds me of the "shotgun marketing" employed by, well, almost all companies, which comes down to "we don't know what people want but if we do everything then surely something will stick, right? If not, we'll withdraw the product and fire another random shotgun blast." This list is the shotgun approach to becoming a better developer.
- chc 15y agoA more directed approach would be good, but it's not that bad. Breadth of useful knowledge is actually a good thing, if maybe not the best thing. Breadth of topics within a single conversation (which is basically what advertising is) just makes you sound like you have a disorder.
- mberning 15y agoNot really related to the discussion at hand, but your last sentence resonated with me. I hate talking to people when the conversation meanders around to every errant thought they ever had and you never come to a coherent conclusion. I get the impression that they don't truly understand what they are talking about and/or never had an idea that they thought was bad. I love brevity.
- Jgrubb 15y agoI was just coming here to say the exact same thing. Write a program in assembly language Write an application in a functional language Write an application in an object-oriented language Write an application in a prototype-based language Write an application in a logic programming language Write an application using the Actor model Write an application in Forth [C] I totally respect the author's POV, and have no doubt that he is a hilariously better programmer than I am, but none of this would help me do the day to day stuff that all of my clients hire me to do.
- bphogan 15y ago
- nspeed 15y agoTo validate this list, pick some developers you admire. How far along are they on this list? Are they much further than you?
- hugh3 15y agoGood question. Has Donald Knuth ever written a web app? Mobile app? Embedded app?
- axefrog 15y ago"Levelling up" as a developer doesn't rest on checking off a bunch of points on somebody else's list (though many of those points may still be relevant to you on your journey), but rather a combination of a constant need for self-improvement and critical self-analysis, combined with a massive genuine passion for the field of programming, irrespective of which areas your interests lean toward. If you are never satisfied that you have "made it" and you are regularly not only getting excited by new ideas and new possibilities in this field, but also putting a lot of time into exploring your skills and constantly trying to improve them, there is very little chance that you're not going to massively improve as time goes on.
- ulisesroche 15y agoI agree with the idea that the list is too focused, and probably doesn't help as much as it says it will. After reading "Where Good Ideas come From" by Steve Johnson, I think a better approach is to be good at code, and decent at everything else. You don't need to run a 5 minute mile, but you should at least be able to run a mile without taking breaks, and be able to hold a conversation about Latin American Literature, and be fluent in your programming language, and kick out a decent design, and bowl a 150, and so on.
- deleted 15y ago[deleted]
- eegilbert 15y agoThe juxtaposition of the top two stories, "How to Level Up as a Developer" and "Gamification is bullshit," is pretty hilarious.
- jeez 15y agoI'm surprised at how so many people are taking the list itself literally. If you're lucky enough, you might have found something REALLY interesting to do, which kept you motivated enough to keep learning new things as required until you become a Master. But that doesn't mean the rest of Us don't deserve to be good. What I'm trying to say is, if I wanted to be an awesome programmer just for the sake of it, it still counts. I don't have to have a Grand Idea I hope to achieve by becoming good at it. Once you start getting good at any non-trivial task through hard work, you begin to appreciate the acquired skill and feel good about it. This feedback is enough to keep you going. I think you get better at getting better as you keep getting better. So as you gain experience, you can figure out what will interest you better and change your direction, rather than having a set path right from the start.
- cmetcalfe 15y agoProgression is everything to me. Not just as as developer, everything in life must progress. I found the article hit the nail on the head. You want to progress from decent-to-good, or good-to-great. You want to move forward. I find it easy to continue getting better at what you're good at. You have a solid understanding of what you're working on, and it's easy to touch up areas where you might be lacking. But to make great strides, you really need to take on things you suck at. This is where the biggest progression leaps happen. It might be tough to get started, but once you accomplish something you have never touched before, that's where the true leaps in progression happen. Being uncomfortable with what you're doing really exposes you to areas which need growth, keeps you humble and keep your hungry.
- EGreg 15y agoMan just reading that list makes me tired...
- voidfiles 15y agoI wrote about an idea to level up for the daily js(http://dailyjs.com/2011/07/25/alex-kessinger/ http://dailyjs.com/2011/07/25/alex-kessinger/). tldr: Try to use, and understand a tool before trying to write your own.
- msurel 15y agoIt looks like somebody has taken yet another stab at re-writing 'The Pragmatic Programmer' :-) i don't think you've really leveled up until you get past using phrases like 'Level Up'. You're not a 14th level Ranger with a potion of strength and +4 leather armor. You're supposed to be an engineer ( or software developer or pick your favorite name ) helping real people solve real problems.